纳金网

标题: Unity中使用NavMeshAgent使该对象更加贴合地面 [打印本页]

作者: may    时间: 2019-7-29 23:26
标题: Unity中使用NavMeshAgent使该对象更加贴合地面

Unity中如何实现对象在自动寻路的时候和接触面贴合(始终是垂直接触面的),比如坦克爬坡问题:
1.先创建一个Cube 把它拉成长方体,给cube添加rigidbody刚体组件,把useGravity和Is Kinematic属性勾选,选择Terrain地形,设置它的Layer层为Terrain,接着给Cube添加CubeCtrl.cs脚本。
代码:
  1. public class CubeCtrl:MonoBehaviour

  2. {

  3.      void Update()

  4. {

  5.    RaycastHit hit;

  6.    int ramk=LayerMask.GetMask(“Terrain”);

  7.    Vector3 point_dir=transform.TransformDirection(Vector3.down);

  8.    If(Physics.Raycast(transform.postion,point_dir,out hit,50.0f,rmask))

  9. {

  10. Quaternion nexRot=Quaternion.LookRotation(Vector3.Cross(hit.normal,Vector3.Cross(transform.forward,hit,normal)),hit.normal);



  11. GetCompent<Rigidbody>().MoveRotation(Quaternion.Lerp(transform.rotation,nexRot,0.1f));

  12. }

  13. }

  14. }
复制代码





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5