查看: 1211|回复: 0
打印 上一主题 下一主题

[其他] Unity中使用NavMeshAgent使该对象更加贴合地面

[复制链接]
may    

8830

主题

81

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52344
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2019-7-29 23:26:19 |只看该作者 |倒序浏览

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. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-2-25 06:10 , Processed in 0.087484 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部