Unity3D角色朝着它移动的方向

时间:2018-05-10 13:08:33

标签: c# 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);
}
}

2 个答案:

答案 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()指向它。