zoukankan      html  css  js  c++  java
  • 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项上

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

    (如需转载学习,请标明出处)
  • 相关阅读:
    (2015年郑州轻工业学院ACM校赛题) B迷宫
    (2015年郑州轻工业学院ACM校赛题) A 彩票
    POJ 1861 Network
    动态逆序对
    K大数查询
    Dynamic Rankings
    Cleaning
    Boxes
    P3601 签到题
    How many integers can you find
  • 原文地址:https://www.cnblogs.com/1138720556Gary/p/9292186.html
Copyright © 2011-2022 走看看