留个档,Unity Navigation. 动态创建NavMesh,动态Bake NavMesh, 动态烘培NavMesh

这篇具有很好参考价值的文章主要介绍了留个档,Unity Navigation. 动态创建NavMesh,动态Bake NavMesh, 动态烘培NavMesh。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

运行时,动态创建NavMesh,动态Bake NavMesh, 动态烘培NavMesh

根据unity官方的demo,解析一下,发现动态创建NavMesh导航并不难.
其实只需要 网格信息,还有 需要创建的范围即可。
可以认为是固定公式了
简化写法如下,是不是需要缓存某些信息,就看具体逻辑实现了

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


public class NavMeshHelper : MonoBehaviour
{
    private NavMeshDataInstance m_NavMeshDataInstance;

    private void OnDestroy()
    {
        m_NavMeshDataInstance.Remove();
    }

    public void CreateNavMesh(List<Mesh> listMesh, int nSizeX, int nSizeY, int nSizeZ)
    {
        List<NavMeshBuildSource> listBuildSource = new List<NavMeshBuildSource>();
        if (listMesh != null && listMesh.Count > 0)
        {
            for (int i = 0; i < listMesh.Count; i++)
            {
                var s = new NavMeshBuildSource();
                s.shape = NavMeshBuildSourceShape.Mesh;
                s.sourceObject = listMesh[i];
                s.transform = Matrix4x4.identity;
                s.area = 0;
                listBuildSource.Add(s);
            }
        }
        var v3Size = new Vector3(nSizeX, nSizeY, nSizeZ);
        var bounds = new Bounds(Quantize(transform.position, 0.1f * v3Size), v3Size);
        var nmd = new NavMeshData();
        m_NavMeshDataInstance = NavMesh.AddNavMeshData(nmd);

        var defaultBuildSettings = NavMesh.GetSettingsByID(0);
        NavMeshBuilder.UpdateNavMeshData(nmd, defaultBuildSettings, listBuildSource, bounds);
    }

    private Vector3 Quantize(Vector3 v, Vector3 quant)
    {
        float x = quant.x * Mathf.Floor(v.x / quant.x);
        float y = quant.y * Mathf.Floor(v.y / quant.y);
        float z = quant.z * Mathf.Floor(v.z / quant.z);
        return new Vector3(x, y, z);
    }

}


程序学无止尽。
欢迎大家沟通,有啥不明确的,或者不对的,也可以和我私聊
我的QQ 334524067 神一般的狄狄文章来源地址https://www.toymoban.com/news/detail-635896.html

到了这里,关于留个档,Unity Navigation. 动态创建NavMesh,动态Bake NavMesh, 动态烘培NavMesh的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity】NavMesh Agent实现自动寻路

    在Unity中,可以使用自带导航系统(Navigation System)实现自动寻路。 首先在Unity场景中创建一个NavMesh表面,用于描述场景中可行走的区域。 在Unity 5.6或更高版本中,可以通过以下步骤创建NavMesh表面: 选择场景中的地形或物体,

    2024年02月08日
    浏览(37)
  • unity在使用Reflection Probe(反射探头)bake(烘焙)时,无法反射出范围內的物体。

    bake后发现反射探头还是原来的样子,解决办法以下: 打开lighting设置,观察最下面是否为图中这样   如果是,则点击旁边的cancel即可解决问题。     

    2024年02月12日
    浏览(25)
  • 场景烘培分享——详情unity手册

    1.灯光介绍 Unity灯光的简介 Area Light 区域光(只能用做烘培,常用雨补光或者是发光的屏幕上) spot light 射灯(和点光源搭配使用对于路灯的使用比较多) point点光源(对于发光的物体使用较频繁) Drictor light平行光(就是太阳光)一个场景里面至少有一个主灯光来照射。 2

    2023年04月12日
    浏览(25)
  • 【Unity】光照烘培-基础参数-基础设置

    Unity 2020.3.25 打开灯光面板 Wingdow -》 Rendering - Lighting Lighting Settings 灯光设置文件 Realtime Lighting Realtime Global lllumin Realtime Environme Mixed Lighting Baked Global lllumin Lighting Mode Baked Indirect Subtractive Shadowmask Lightmapping Settings Lightmapper Progressive CPU Ambient Occlusion 还需要勾选环境遮蔽(Ambient O

    2024年01月23日
    浏览(32)
  • unity 场景烘培(边学习,边记录)

    目录 前言: 一、什么是场景渲染烘培? 二、为什么要对场景渲染烘培? 总结: 场景烘培渲染这块以前接触很少,因为要么有专门的同事搞这块,要么就是开发2d游戏(完全不需要)。 现在换了一家小公司,自己需要独立做这件事的时候,问题就来了。(此前也烘培了几个

    2024年02月10日
    浏览(25)
  • Unity 场景烘培 ——unity灯光和设置天空盒(二)

    提示:文章有错误的地方,还望诸位大神指出。 接着前面一章继续: link 学习必须一步一步来,不要着急忙慌,拿起就开干。 下面我们先学习了解unity的灯光(light),学习了解了灯光,才能使用多种灯光相互配合才能达到我们想要的效果。 (摘录:大佬链接: link unity中的灯

    2024年02月03日
    浏览(27)
  • Unity 场景烘培 ——LensFlare镜头光晕(三)

    提示:文章有错误的地方,还望诸位大神指出! 一般情况下都会忽略的东西,镜头光晕。理论上不加镜头光晕,也不会有什么影响,但是有时候为了追求一些特殊的要求效果,也会加上镜头光晕。 比如 下图这种效果: 镜头光晕 (Lens Flares) 是模拟相机镜头内的折射光线的效果

    2024年02月05日
    浏览(27)
  • Unity 场景烘培 ——unity Post-Processing后处理1(四)

    提示:文章有错误的地方,还望诸位大神不吝指教! Post-Processing是一块内容很多知识,想要学习好这块简单大家还是多去网上查阅资料。 因为博客嘛,整理简单的东西还可以,太复杂了就显得不够用了。我会整理我学习的步骤给大家,大家也去看看,甚至于也去写一份博客

    2024年02月05日
    浏览(27)
  • Unity动态创建材质球

    目录 一、获取贴图 1:从Assets文件中获取 2:从本地文件中获取 二、创建材质球 三、替换材质 总结 前言 我们在做一些AR类似与涂涂乐的功能时,经常会用到给模型替换材质球的功能。当我们的用户创建好贴图时就需要动态将新的贴图转换成材质贴在模型上。他的原理其实很

    2024年02月05日
    浏览(25)
  • 【Unity入门】22.动态创建实例

        大家好,我是Lampard~~     欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢    (1)Instantiate克隆创建对象     昨天我们学习了预制体这个概念,在编辑器中使用预制体创建游戏对象,并学习如何修改预制体等。 今天主要来学习,如何在脚本中利用预制体创

    2024年02月05日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包