Unity:如何使用 Vector3.MoveTowards() 将鼠标置于 3D 播放器的中心?
Unity: How Do I Center A Mouse To A 3D Player Using Vector3.MoveTowards()?
我目前正在使用鼠标输入在 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)。
这可能不是解决我的问题的最佳方法,但它暂时解决了这个问题。我制作了一个 y 值为 1.3f 的平面并将其穿过玩家对象。然后,我使该对象不可见。现在,光线投射将击中该物体而不是地面。
我目前正在使用鼠标输入在 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)。
这可能不是解决我的问题的最佳方法,但它暂时解决了这个问题。我制作了一个 y 值为 1.3f 的平面并将其穿过玩家对象。然后,我使该对象不可见。现在,光线投射将击中该物体而不是地面。