我尝试在Unity3D中沿着平面移动对象,以便对象的y位置固定在平面上,x和z根据鼠标的左右/上下移动而移动。
看起来代码 * 几乎 * 在那里,但是鼠标的上/下移动有一个缩放问题。
左右移动对象正常工作,如下所示:The mouse behavior is shown in red.使用鼠标前后或上下移动对象时,缩放不正确,如下所示:The mouse is at the x, but the capsule is not aligned with the mouse.理想情况下,鼠标应该更好地与对象的位置相对应,如下所示:The y of the mouse and the far-backness of the object should align.
我认为上下移动鼠标的代码中存在缩放错误。
代码如下所示。
private void FixedUpdate()
{
transform.localPosition = GetMouseAsWorldPoint() + mOffset;
}
void OnMouseDown()
{
mZCoord = Camera.main.WorldToScreenPoint(gameObject.transform.position).z;
mOffset = gameObject.transform.localPosition - GetMouseAsWorldPoint();
}
private Vector3 GetMouseAsWorldPoint()
{
Vector3 mousePoint = Input.mousePosition;
mousePoint.z = mZCoord;
mousePoint = Camera.main.ScreenToWorldPoint(mousePoint);
mousePoint.y = plane.GetComponent<Transform>().position.y;
return mousePoint;
}
1条答案
按热度按时间uoifb46i1#
我想你有这些问题是因为相机的旋转。
此代码在0,0,0处创建一个平面,并从摄影机射出一条光线,并获得光线与平面相交的位置。
https://answers.unity.com/questions/269760/ray-finding-out-x-and-z-coordinates-where-it-inter.html