Unity3D_(网格导航)简单物体自动寻路

  NavMesh(导航网络)是3D游戏世界中用于实现动态物体自动寻路的一种技术,将游戏场景中复杂的结构组织关系简化为带有一定信息的网格,进而在这些网格的基础上通过一系列的计算来实现自动寻路。

 

实现Capsule物体自动向Sphere物体寻路:

 

 

实现过程:

 

一、搭建场景

  选择菜单栏中GameObject->3D Object->Cube命令,在场景中创建三个Cube,并分别命名为Cube01(平台)、Cube02(斜面)、Cube03(地面)

  三个Cube参数值设置如下

Cube01(平台)、Cube02(斜面)、Cube03(地面)

            

设置完成图:

 

 

二、功能实现

1、分别选中三个Cube对象,分别单机Inspector试图右上角Static项右侧按钮,在弹出下拉列表中选中Navigation Static复选框,Unity就会利用这几个Cube对象来生成导航网络

2、选择菜单栏中的Window->Navigation命令,弹出Navigation试图,单机Navigation试图右下角Bake按钮生成导航网络

 

其中蓝色网格便是目标角色在自动寻路时可以到达的区域

 

 

三、添加目标对象

1、新建一个Capsule(胶囊体),Scale设置为(0.2,0.2,0.2)作为移动的角色(放的位置可以随意)

  新建一个Sphere(球体),Scale设置为(0.1,0.1,0.1)作为目的的角色(放的位置可以随意)

选中Capsule(胶囊体),选择菜单栏中的Component->Navigation->Nav Mesh Agent命令,为Capsule对象添加导航组件。添加成功后,Capsule上会出现绿色包围的圆柱框

 

 

四、实现Capsule(胶囊体)自动寻找Sphere目标点

  选择菜单栏中Assets->Create->C# Script,编写RunTest脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class RunTest : MonoBehaviour {

    public Transform TargetObject;

    // Use this for initialization
    void Start () {
        if (TargetObject != null)
            GetComponent<NavMeshAgent>().destination = TargetObject.position;
    }
    
    // Update is called once per frame
    void Update () {
        
    }
}
RunTest

 

讲将本绑定到Capsule上,并将Sphere物体绑定到Inspector试图中Capsule物体脚本组件中的TargetObject项上

 

运行程序就可以实现简单的自动寻路的效果

 

转载于:https://www.cnblogs.com/1138720556Gary/p/9292186.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值