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导出后,仅仅是一些多边形信息,根本是没办法寻路的,要想寻路。

相关推荐
め.7 小时前
UIFramework
ui·unity
℡枫叶℡17 小时前
Unity - Import Activity Window 资源导入诊断信息窗口
unity·资源导入诊断
TO_ZRG19 小时前
Unity 证书校验
unity·游戏引擎
mxwin21 小时前
Unity Shader 切线空间数据是如何计算出来的
unity·游戏引擎·shader
mxwin1 天前
Unity Shader 法线贴图跟切线空间有什么关系
unity·游戏引擎·贴图·shader
mxwin1 天前
Unity Shader 贴图和采样的关系 如何保证贴图清晰
unity·游戏引擎·贴图·shader
心前阳光1 天前
Unity之使用火山引擎实现文字提问流式回复
unity·游戏引擎·火山引擎
mxwin1 天前
Unity Shader 什么是球谐光照 原理是什么
unity·游戏引擎·shader
心前阳光1 天前
Unity之使用火山引擎实现语音识别
unity·语音识别·火山引擎