描述
在xz平面中,玩家控制的物体时刻面朝鼠标的方向。
实现
首先需要将玩家(物体)的世界坐标转化为屏幕坐标。
Vector3 playerScreenPosition = Camera.main.WorldToScreenPoint(playerRigidbody.position);
然后获取鼠标的屏幕坐标。
Vector3 mousePosition = Input.mousePosition;
由于是只在xz屏幕移动,因此让鼠标的屏幕坐标z轴等于玩家的屏幕坐标的z轴。
mousePosition.z = playerScreenPosition.z;
将鼠标的屏幕坐标转换为世界坐标。
world = Camera.main.ScreenToWorldPoint(mousePosition);
使用LookAt控制玩家始终朝向鼠标方向。
playerRigidbody.transform.LookAt(world);
因此完整代码如下:
Vector3 playerScreenPosition = Camera.main.WorldToScreenPoint(playerRigidbody.position);
Vector3 mousePosition = Input.mousePosition;
mousePosition.z = playerScreenPosition.z;
world = Camera.main.ScreenToWorldPoint(mousePosition);
playerRigidbody.transform.L