
在 Unity 中有多种基本方法将游戏对象的位置捕捉到网格,其实使用哪种方法取决于自己想要的网格大小。那么这里将讨论使用单位比例捕捉到网格位置,当然使用这种方式也是较为简单的。
现有的 Unity 是以 1 个单位作为标准比例,通常表示游戏中的 1 米。那么一般情况下,它涉及到由 3 个浮点值组成的对象的位置舍入为整数。例如如下代码:
public Vector3 targetPos;
transform.position = new Vector3(
Mathf.Round(targetPos.x),
Mathf.Round(targetPos.y),
Mathf.Round(targetPos.z)
);
通过将对象的位置设置为一个新的 Vector(向量)3 来工作,该 Vector 3 采用目标位置的 X、Y 和 Z 浮点值,因为这是对象所在的位置,并使用 Round 函数将每个值四舍五入为最接近的整数。结果是对象以整数增量移动,将其捕捉到网格。
当然也可以使用相同的方法将一些值捕捉到网格,但不是全部。例如,可以对 X 和 Z 值进行四舍五入,这会将对象的移动锁定为前向和水平轴上的单位,而单独保留 Y 值(对象的高度)。
public Vector3 targetPos;
void Update()
{
transform.position = new Vector3(
Mathf.Round(targetPos.x),
transform.position.y,
Mathf.Round(targetPos.z));
}
以上的方法是一种使用 Unity 现有的单位网格捕捉对象位置较为简单的方法,如果你不想使用这种,也可以使用自定义比例捕捉到位置,最终取决于自己想要的网格大小。