【发布时间】:2018-02-02 20:35:04
【问题描述】:
在 Unity 中,我有一个围绕 Vector2 构建的 2D 网格。我要做的是根据相机旋转获得真正的“正确”(或任何方向)。
例如,如果相机面向 90 度,则 Vector2.right 需要为 Vector2.up。我在 Vector3 中看到了很多这样的例子,但我似乎无法将相同的逻辑应用于 Vector2。尤其是当Camera是40度的时候,right突然变成了up and right。如何将其夹在“最近”方向?我不希望“光标”沿对角线移动 - 始终只是根据相机和按下的键在最近的方向上移动。我有一些代码 sn-ps,所以人们可以看到我有多接近:
if (Input.GetKey(KeyCode.RightArrow))
{
CameraDirection = CameraTransform.TransformDirection(Vector3.right);
}
Vector2 GridDelta = new Vector2((int)Mathf.Round(CameraDirection.x), (int)Mathf.Round(CameraDirection.z));
不幸的是,GridDelta 有时会显示为 (1, 1),我宁愿每次都是一个方向。
任何帮助将不胜感激!
【问题讨论】: