我当前正在使用鼠标输入来移动3D世界中的播放器(球形)。我正在使用射线播放并使用hit.point
坐标来执行此操作。这是我希望游戏工作的方式,但这是一个3D游戏,因此,每当我移动玩家,使用鼠标坐标时,它都无法正确对齐。这是由于玩家是3D,鼠标坐标为2D。
这是我的代码:
public float speed;
public GameObject player;
private Ray ray;
private RaycastHit hit;
private Vector3 mousePos;
void Start ()
{
}
void FixedUpdate ()
{
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit))
{
mousePos = new Vector3(hit.point.x, /*Insert Code*/, hit.point.z);
if(mousePos != player.transform.position)
{
player.transform.position = Vector3.MoveTowards(player.transform.position, mousePos, speed * Time.deltaTime);
}
}
}
我的问题是:
如果我的播放器位于地面上方1.3F,我该如何操作Vector3.MoveTowards
,以便鼠标以播放器为中心,而不会影响播放器的高度(1.3F)?
我尝试使用 player.transform.position.y
,但它直接将鼠标放在播放器下(x和z值工作,但y值没有)。
i,也尝试了命中。
这可能不是解决我的问题的最佳方法,但现在可以解决它。我制作了一个Y值为1.3F的飞机,并将其放在播放器对象上。然后,我使对象看不见。现在,射线广播将击中该对象而不是地面。