Округление — это операция уменьшения количества знаков в числе путём замены числа его приближённым значением с определённой точностью.
В Unity округление идёт до целого. Возможны три способа округления:
Примечание: Независимо от способа округления, если дробная часть равна нулю, будет возвращено число, которое было передано в параметре.
- Округление к меньшему — округление вниз, берётся меньшее число и отбрасывается дробная часть. (2.4 → 2, -1.3 → -2)
- Округление к большему – округление вверх, берётся большее число и отбрасывается дробная часть. (2.4 → 3, -1.3 → -1)
- Округление к ближайшему целому – берётся целое число, модуль разности с которым у исходного числа меньше. (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. Если что-то не понятно, пишите в комментариях.