开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:429

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 501|回复: 5

[技术讨论] Unity 如何利用Nav Mesh制作AI自动巡逻.

[复制链接]  [移动端链接]
3偶尔光临
231/300
排名
7726
昨日变化
4

1

主题

27

帖子

231

积分

Rank: 3Rank: 3Rank: 3

UID
178347
好友
0
蛮牛币
373
威望
0
注册时间
2016-11-23
在线时间
97 小时
最后登录
2017-6-7
发表于 2017-1-11 00:26:05 | 显示全部楼层 |阅读模式
5蛮牛币
今天学习了一下Nav Mesh网格导航,结合到目前的一个小项目,想利用来完成怪物AI的一个自动巡逻,当角色到达目标点后再当前场景随机一个可到达的点更换为目标点,达到可以到较为复杂地面的自动巡逻,问题就来了,怎么去随机一个当前网络导航烘焙中可到达的点.


回复

使用道具 举报

7日久生情
2029/5000
排名
460
昨日变化
2

3

主题

294

帖子

2029

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
30555
好友
0
蛮牛币
3708
威望
0
注册时间
2014-6-20
在线时间
550 小时
最后登录
2017-6-23
发表于 2017-1-11 09:33:51 | 显示全部楼层
我有个解决方法,不知道在你那里适不适用
1) 需要寻路的Mesh为单独的Mesh
2) 要获得寻路上的某点,其实就是获得Mesh上的某点
3) 随机Mesh上的某个顶点
4) 获得
5) OK

回复

使用道具 举报

5熟悉之中
954/1000
排名
2633
昨日变化
15

9

主题

171

帖子

954

积分

Rank: 5Rank: 5

UID
148830
好友
2
蛮牛币
1547
威望
0
注册时间
2016-5-17
在线时间
376 小时
最后登录
2017-6-23
发表于 2017-1-11 10:08:10 | 显示全部楼层
如果你的AI只是巡逻没攻击或者其它状态的话,你找出一系列的位置 放入Vector3数组里 每到达一个点就随机下标作为Target

回复

使用道具 举报

7日久生情
1637/5000
排名
1908
昨日变化
2

11

主题

562

帖子

1637

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
116338
好友
8
蛮牛币
5016
威望
0
注册时间
2015-8-2
在线时间
527 小时
最后登录
2017-6-22
发表于 2017-1-12 15:32:56 | 显示全部楼层
写出一个范围,让他自由行动就好了

回复

使用道具 举报

6蛮牛粉丝
1126/1500
排名
2688
昨日变化
9

6

主题

263

帖子

1126

积分

Rank: 6Rank: 6Rank: 6

UID
188595
好友
1
蛮牛币
3431
威望
0
注册时间
2016-12-1
在线时间
435 小时
最后登录
2017-6-23
发表于 2017-1-18 21:10:46 | 显示全部楼层
using UnityEngine;
using System.Collections;

public class move : MonoBehaviour {

        NavMeshAgent agent;
        public GameObject[] Target;
        //public Transform[] aa;
        //public GameObject[] obstancle;
        int i = 0;

        public float NextDistance = 1.5f;

        void Awake()
        {
                agent=GetComponent<NavMeshAgent>();
        }
        void Start ()
        {
                agent.SetDestination(Target[i].transform.position);

        }
       
        void FixedUpdate()
        {
                /*if(Vector3.Distance(this.transform.position,Target[i].transform.position)<=20.0f)
                {
                        agent.speed --;
                        if(agent.speed==5.0f)
                                agent.speed = 5.0f;
                }
                else
                {
                        agent.speed ++;
                        if(agent.speed==30.0f)
                                agent.speed = 30.0f;
                }*/


                //if(Vector3.Distance(this.transform.position,Target[i].transform.position)<=NextDistance)
                Debug.Log("a.x"+agent.destination.x);
                Debug.Log("a.z"+agent.destination.z);
                Debug.Log("g.x"+gameObject.transform.position.x);
                Debug.Log("g.z"+gameObject.transform.position.z);

                //if(gameObject.transform.position.x == Target[i].transform.position.x && gameObject.transform.position.z == Target[i].transform.position.z)  
                if(Vector3.Distance(this.transform.position,Target[i].transform.position)<=NextDistance)
                {
                        i++;
                        Debug .Log(i);
                        i=Mathf.Clamp(i,0,Target.Length-1);
                        agent.SetDestination(Target[i].transform.position);
                }
        }
}

这个是我的例子,你可以试试,我运行成功了
[发帖际遇]: 风之舞 捡了钱没交公 蛮牛币 降了 1 . 幸运榜 / 衰神榜

回复

使用道具 举报

6蛮牛粉丝
1126/1500
排名
2688
昨日变化
9

6

主题

263

帖子

1126

积分

Rank: 6Rank: 6Rank: 6

UID
188595
好友
1
蛮牛币
3431
威望
0
注册时间
2016-12-1
在线时间
435 小时
最后登录
2017-6-23
发表于 2017-1-18 21:13:38 | 显示全部楼层
有问题再问

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表