加载中…
个人资料
Watson
Watson
  • 博客等级:
  • 博客积分:0
  • 博客访问:292
  • 关注人气:4
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
博文
标签:

it

分类: Unity3d寻路NavMesh篇

今天为了满足策划一个鼠标移到不能走的地方指针显示图标A,可走的为B的需求,做了个DEMO,再次研究了下NAVMESH。
CalculatePath可以把目标点传入后,得到一条路径NavmeshPath;

SamplePathPosition是采样位置,根据你传入的目标点,计算在这个点周围多少半径内,判断是否有寻路网格;

NavMeshAgent.Raycast,这个类似摄像机发射线,是直线,如果这条射线中间有障碍物体,则会返回给你的信息是装在NavMeshHit里的。

 

public NavMeshAgent na;
NavMeshPath path = new NavMeshPath();

 if(na.CalculatePath(hit.point,path))
   {
    path.corners[path.corners.Length-1];
   }

corners是当前路径中的拐点集合,最后一个拐点的坐标则是你最后的位置。,如果做导航路标,就让导航指针随时指着这个路径下一个拐点就OK了。

这样,我鼠标点击的位置可以通过摄像机射线得到,我最后要到达的那个点的坐标也能得到,这两个数据做个距离比较就OK了。

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有