Unity中NavMesh的使用 及其 导出给java服务端进行寻路

1.先添加 AI Navigation组件

2.Windows-->AI-->Navigation(Obsolete) 这样子就可以看到烘焙按钮

3.将物体标记为行走和不可行走

4.添加一个Plane和一些球体,并把需要形成NavMesh的物体选择为静态 // 因为只能烘焙静态的

之后可以看出烘焙后,看着被挖空了一样,有些多边形

5.添加一个Player 和 Target,其中Player添加上导航组件

复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class AI : MonoBehaviour
{
    private NavMeshAgent agent;
    private Transform target;

    void Start()
    {
        agent = GetComponent<NavMeshAgent>();
        target = GameObject.Find("Target").transform;
    }


    void Update()
    {
        agent.SetDestination(target.position);
    }
}

这样子Unity启动的时候,就会躲开障碍了。

6.接下来,我们是要导出这个数据给java服务器使用了,我们思考下如何搞?

初步的思考:可以看出,其实这个NavMesh就是一些多边形信息而已。那我们可以想象下,为了给服务端使用,我们暴露的接口是什么? 必然是:根据这些多边形信息构建出一个对象,NavMeshData, 然后传入 start 和 end 2个坐标,然后返回一个List<float[]> list,仅此而已。

然而,NavMesh导出后,仅仅是一些多边形信息,根本是没办法寻路的,要想寻路。

相关推荐
★YUI★3 小时前
学习游戏制作记录(将各种属性应用于战斗以及实体的死亡)8.5
学习·游戏·unity·c#
伽蓝_游戏9 小时前
Unity UI的未来之路:从UGUI到UI Toolkit的架构演进与特性剖析(7)
游戏·ui·unity·架构·c#·游戏引擎·.net
BuHuaX1 天前
Unity_数据持久化_IXmlSerializable接口
xml·unity·c#·游戏引擎·游戏策划
lihongli0001 天前
消息系统技术文档
网络·unity·游戏引擎
Edision_li1 天前
基于Mediapipe_Unity_Plugin实现手势识别
unity·游戏引擎·unity 手势识别
与火星的孩子对话1 天前
Unity Shader编程完全入门指南:从零到实战 C# 实战案例
unity·c#·游戏引擎
谷宇.1 天前
【Unity3D实例-功能-镜头】第三人称视觉
游戏·unity·unity3d·游戏开发·游戏编程·steam
两水先木示1 天前
【Unity3D】Shader圆形弧度裁剪
unity·shader·圆形裁剪·弧度裁剪
深海潜水员2 天前
【Unity】背包系统 + 物品管理窗口 (上)
开发语言·vscode·游戏·unity·c#·游戏引擎
伽蓝_游戏2 天前
Unity UI的未来之路:从UGUI到UI Toolkit的架构演进与特性剖析(6)
游戏·ui·unity·架构·c#·游戏引擎·.net