我正在制作一个游戏,它包含行星引力,我怎么能让玩家看到它正在移动的方向,如果我可以将它插入到我的移动代码中会有帮助
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);
}
}
答案 0 :(得分:1)
您可以使用刚体的速度来查看您正在移动的方向。
transform.rotation = Quaternion.LookRotation(rb.velocity);
如果您想要平滑过渡:
Quaternion desiredRotation = Quaternion.LookRotation(rb.velocity);
transform.rotation = Quaternion.Slerp(transform.rotation, desiredRotation, Time.deltaTime);
答案 1 :(得分:0)
假设此脚本附加到您想要指向其移动方向的对象,请尝试此操作。
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()
指向它。