Блог программиста
Математика Unity (Урок 7). Mathf округление чисел.
07.07.2013Математика Unity

Округление — это операция уменьшения количества знаков в числе путём замены числа его приближённым значением с определённой точностью.

В Unity округление идёт до целого. Возможны три способа округления:
Примечание: Независимо от способа округления, если дробная часть равна нулю, будет возвращено число, которое было передано в параметре.
  1. Округление к меньшему — округление вниз, берётся меньшее число и отбрасывается дробная часть. (2.4 → 2, -1.3 → -2)
  2. Округление к большему – округление вверх, берётся большее число и отбрасывается дробная часть. (2.4 → 3, -1.3 → -1)
  3. Округление к ближайшему целому – берётся целое число, модуль разности с которым у исходного числа меньше. (2.4 → 2, 2.7 → 3). В случае, если модули разности равны (дробная часть равна 0.5), берётся ближайшее чётное целое число. (1.5 → 2, 4.5 → 4)


Функции округления в Unity (C#):
//Округление вверх
Mathf.Ceil(float f);
//Округление вниз
Mathf.Floor(float f);
//Округление к ближайшему целому
Mathf.Round(float f);

//Такие же функции, но возвращают число типа int
//Округление вверх
Mathf.CeilToInt(float f);
//Округление вниз
Mathf.FloorToInt(float f);
//Округление к ближайшему целому
Mathf.RoundToInt(float f);

Использование округления

Для чего можно использовать округление?
Например для привязки юнитов к сетке при строительстве:
using UnityEngine;

public class UnitSharp : MonoBehaviour {
	
	//Будущий юнит
	public Transform unit;
	
	// Update is called once per frame
	void Update ()
	{
		//Получаем позицию курсора
		Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
		//Устанавливаем позицию юнита, привязвая к сетеке по осям X и Z
		unit.position = new Vector3(Mathf.Round(pos.x), 1, Mathf.Round(pos.z));
	}
}

Конечно, данные функции применимы и в других жанрах, помимо стратегий, но я на этом урок закончу.
P.S. Если что-то не понятно, пишите в комментариях.

48054