【发布时间】:2020-05-14 21:13:59
【问题描述】:
我正在尝试编写一个函数,因此当我按住鼠标时,我可以拖动游戏对象,然后将其锁定到目标中。 我正在使用透视、垂直相机,并检查了物理相机,焦距为 35。我也不知道这是否重要,但我正在 Y 轴和 Z 轴上拖动对象。 我正在使用的代码将对象拖到离相机太近的地方。我该如何解决这个问题?
private void OnMouseDrag()
{
if (IsLatched)
{
print($"is latched:{IsLatched}");
return;
}
float distance = -Camera.main.transform.position.z + this.transform.position.z;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Vector3 rayPoint = ray.GetPoint(distance);
this.transform.position = rayPoint;
print($"{name} transform.position:{transform.position}");
this.gameObject.GetComponent<Rigidbody>().isKinematic = true;
isHeld = true;
}
【问题讨论】:
-
使用 Physics.Raycast 获取命中位置。
标签: unity3d