Unity:如何使用Vector3.MoveTowards()将鼠标置于3D播放器中心?

时间:2017-12-26 21:01:08

标签: c# unity3d mouse-position

我目前正在使用鼠标输入在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值没有)。

我也尝试了hit.point.y,但它给了我大于玩家身高(1.3f)的值。

1 个答案:

答案 0 :(得分:0)

这可能不是解决我的问题的最佳方法,但它现在已经解决了。我创建了一个y值为1.3f的平面并将其放入播放器对象中。然后,我使对象不可见。现在,光线投射将击中该物体而不是地面。