寻路系统、人工智能AI

NavMeshAgent(导航网络代理组件):给物体添加,并且寻找到最短的路径;

OffMeshLink(分离网络连接):完成物体在两者之间的跳跃;

NavMeshObstacle(网格障碍组件):可添加到动态的障碍物上,障碍物会动态的改变它所在地点的网格信息;

注:寻路之前先对场景进行烘焙

public GameObject target;

void Start()

{

    GetComponent().SetDestination(target.transform.position);

}

物体寻路到鼠标点击的位置

private NavMeshAgent agent;

void Start()

{

    agent = GetComponent();

}

void Update()

{

    if(Input.GetMouseButtonDown(1))

    {

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//获取鼠标的位置

        RaycastHit hit;

         if(Physici.Raycast(ray.out hit,100))//100为射线的长度

         {

              agent.SetDestination(hit.point);

        }

    }

}

区域内随机生成

public GameObject enemy;

public float spawnTime = 3f;

public Transform[] spawnPoints;//产生物体的区域

void  Start()

{

    InvokeRepeating("Spawn",spawnTime,SpawnTime);

}

void Spawn()

{

    int i = Random.Range(0,spawnPoints.Length);//随机产生

    Instantiate(enemy,spawnPoints[i].position,Quaternion.identity);//产生物体

}

障碍物的实现,障碍物不能烘焙

public GameObject target;

public GmaeObject aa;

void Start()

{

    GetComponent().SetDestination(target.transform.position);

}

void Update()

{

    if(Input.GetMouseButtonDown(0))

    {

        aa.GetComponent().enable = false;

    }

}

寻路系统、人工智能AI_第1张图片

分离网络连接,需要在物体上添OffMeshLink组件


你可能感兴趣的:(Unity3D)