Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
基于navmesh寻路,如何实现这种展示路径的模型线的动态生成?(以xcam2为例)
小池喵发起了问答2017-09-14
15
回复
692
浏览

尝试过很多方法,主要问题在于读取navmesh计算出路径的每个转折点连接后,在有高度差时容易出现线条与地形模型穿插的现象(如上坡时),希望老师能给一些解决思路。

所有回复
  • siki 2017-09-14

    可以试下两种解决方案

    1,把路径点的高度 就是y轴 加上0.1 往上太高一点

    2,第二种方式,是吧所有路径的渲染使用一个单独的camera,这个camera的depth设置小一点,渲染在最上方

    • 小池喵 2017-09-19

      siki老师,第一种方法我之前试过是不行的,要向上移动很高才能避免穿插。这两天我试了一下第二种方法,首先是需要三个相机,地形渲染在最底层,路径线在中间层,人物渲染在最高层。不然路径线会盖到人物身上造成失真。但是这样就有另一个问题地形无法遮住人物造成失真。
      其次就是这样做某些角度上看没有问题,但是换一个角度线条就会显得完全不是路径的线条。我截了一些图给您看一下。

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录注册
  • 小池喵 2017-09-19

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 小池喵 2017-09-19

    图发不上去 我打了个压缩包

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-09-19

    可以使用第一种方法,修改下

    这个路径点使用射线检测来获取,通过射线检测从上到下发射射线确定 地面的位置,然后在这个位置的基础上提高一点点,用来绘制线

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • sdhexu 2017-09-20

    我觉得可以这样:

    获取路径所有的点,这个应该没问题吧。

    然后,对所有的点修改其坐标的y值,让他跟地面一样高,或者高一点点。

    当然这样还是会有穿插,比如两个点之间有一个凸起的地形的时候。可以用射线进行检测,只判断地面碰撞,如果有碰撞,就用Vector3.Lerp进行插值,新插入的值也要跟地面高度一致。然后这是一个递归的过程。。。

    性能应该是可以接受的。

    • sdhexu 2017-09-21

      Terrain.activeTerrain.SampleHeight()另外,用这个就可以直接得到地面高度,无需用射线。

      (0) 回复
    • 小池喵 2017-09-21

      回复 @ sdhexu: 谢谢你提供的思路以及辛苦专门做好的演示。差值的做法给了我很大的启发,不过目前感觉还是不能完美做到美术大爷想要的效果。总之谢谢了。

      (0) 回复
    还有-3条回复,点击查看
    你还没有登录,请先登录注册
  • sdhexu 2017-09-21

    附上效果图:

    未经地面检测的路线:


    经过地面高度检测后的路线:

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • sdhexu 2017-09-21

    再来个动态的:

    • siki 2017-09-21

      很厉害

      (0) 回复
    • sdhexu 2017-09-21

      回复 @ siki: 谢谢siki大神。。。这都是学习您课程的结果啊。。。。。。
      但是,确实,还是未能完全实现楼主的需求。关键是上楼梯的那种导航,就是有OffMeshLink节点的导航,单纯的判断地面高度是不对的。因为导航路线是垂直上下的,跟地面高度无关。。这个我没想到有啥好办法呢。希望siki大神提供个思路。

      (0) 回复
    • siki 2017-09-21

      回复 @ sdhexu: 我觉得依然可以使用这种方式解决,不管是楼梯还是什么都有地面的,利用射线检测地面,然后绘制路线连线就可以了

      (0) 回复
    • sdhexu 2017-09-21

      回复 @ siki: 大神。。如果路径是垂直上下的。就是说,在X和z方向上,目标点和原点是重合的,只是y不同。这时候,你去判断地面高度是没有意义的。因为如果你把这两个点都贴近地面,那就不对了呀。本来目标点应该在梯子的上面,就是要高一些的。。

      (0) 回复
    • sdhexu 2017-09-21

      回复 @ sdhexu: 事实上这时候,需求已经由“贴近地面形成坐标点”变成了“贴近梯子形成坐标点”。

      (0) 回复
    还有0条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!