面向其移动方向的 Unity3D 角色



>我正在制作一个游戏,它包含行星重力,我如何能够让玩家看向它移动的方向,如果我能将其插入到我的移动代码中会很有帮助

using UnityEngine;
public class PlayerMovementScript : MonoBehaviour {
public float moveSpeed;
private Vector3 moveDirection;
void Update()
{
moveDirection = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized;
}
void FixedUpdate()
{
GetComponent<Rigidbody>().MovePosition(GetComponent<Rigidbody>().position + transform.TransformDirection(moveDirection) * moveSpeed * Time.deltaTime);
}
}

假设此脚本附加到要指向其移动方向的对象,请尝试此操作。

void Update()
{
moveDirection = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized;
Vector3 lookDirection = moveDirection + gameObject.Transform.Position;
gameObject.Transform.LookAt(lookDirection);
}

由于您的 moveDirection 已规范化,因此您必须将其添加到当前位置才能在对象的本地空间中获取 moveDirection。然后,您可以LookAt()它指向它。

您可以使用刚体的速度查看移动方向。

transform.rotation = Quaternion.LookRotation(rb.velocity);

如果要平滑过渡:

Quaternion desiredRotation = Quaternion.LookRotation(rb.velocity);
transform.rotation = Quaternion.Slerp(transform.rotation, desiredRotation, Time.deltaTime);

最新更新