猿问

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);

}

}


回首忆惘然
浏览 1235回答 2
2回答

尚方宝剑之说

您可以使用刚体的速度观察您正在移动的方向。transform.rotation = Quaternion.LookRotation(rb.velocity);如果您想要平滑过渡:Quaternion desiredRotation = Quaternion.LookRotation(rb.velocity);transform.rotation = Quaternion.Slerp(transform.rotation, desiredRotation, Time.deltaTime);

心有法竹

假设此脚本附加到要指向其移动方向的对象,请尝试此操作。void Update(){&nbsp; &nbsp; moveDirection = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized;&nbsp; &nbsp; Vector3 lookDirection = moveDirection + gameObject.Transform.Position;&nbsp; &nbsp; gameObject.Transform.LookAt(lookDirection);}因为您的 moveDirection 是规范化的,所以您必须将其添加到您的当前位置,以便在对象的本地空间中获得 moveDirection。然后你可以用LookAt()它来指向它。
随时随地看视频慕课网APP
我要回答