Unity:如何使用vector3.movetowards()将鼠标集中到3D播放器



我当前正在使用鼠标输入来移动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的飞机,并将其放在播放器对象上。然后,我使对象看不见。现在,射线广播将击中该对象而不是地面。

最新更新