固定路径寻路

寻路系统:固定路线 using UnityEngine; using System.Collections; using System;public class nine : MonoBehaviour { //确定下一个索引 int nextPathPoints = 1; //挂在对象 public GameObject player; //移动的位置 阅读详情

转自:胡胜博客http://blog.youkuaiyun.com/husheng0/article/details/48233651
把路径封装成一个对象:

using UnityEngine;  
using System.Collections;  

public class Path: MonoBehaviour  
{  
    public bool isDebug = true;  
    public float Radius = 2.0f;  
    public Vector3[] pointA;        //导航点  

    public float Length  
    {  
        get  
        {  
            return pointA.Length; //返回数组长度  
        }  
    }  

    public Vector3 GetPoint(int index)  
    {  
        return pointA[index];      //返回导航数字  
    }  

    /// <summary>  
    /// Show Debug Grids and obstacles inside the editor  
    /// </summary>  
    void OnDrawGizmos()  
    {  
        if (!isDebug)  
            return;  

        for (int i = 0; i < pointA.Length; i++)  
        {  
            if (i + 1 < pointA.Length)  
            {  
                Debug.DrawLine(pointA[i], pointA[i + 1], Color.red);  
            }  
        }  
    }  
}

这个脚本让谁移动添就加到谁身上

using UnityEngine;  
using System.Collections;  

public class VehicleFollowing : MonoBehaviour   
{  
    public Path path;  
    public float speed = 20.0f;    //速度  
    public float mass = 5.0f;      //质量  
    public bool isLooping = true;  //是否循环运动  

    //Actual speed of the vehicle   
    private float curSpeed;  

    private int curPathIndex;    //开始时所在的导航点  
    private float pathLength;    //整个路径的长度  
    private Vector3 targetPoint; //下一个导航点  

    Vector3 velocity;  

    // Use this for initialization  
    void Start ()   
    {  
        pathLength = path.Length;  
        curPathIndex = 0;          

        //get the current velocity of the vehicle  
        velocity = transform.forward;  
    }  

    // Update is called once per frame  
    void Update ()   
    {  
        //Unify the speed  
        curSpeed = speed * Time.deltaTime;  

        targetPoint = path.GetPoint(curPathIndex);  

        //If reach the radius within the path then move to next point in the path  
        if(Vector3.Distance(transform.position, targetPoint) < path.Radius)  
        {  
            //Don't move the vehicle if path is finished   
            if (curPathIndex < pathLength - 1)  //判断是否到了终点  
                curPathIndex ++;  
            else if (isLooping)  
                curPathIndex = 0;  
            else  
                return;  
        }  

        //Move the vehicle until the end point is reached in the path  
        if (curPathIndex >= pathLength )  
            return;  

        //Calculate the next Velocity towards the path  
        if(curPathIndex >= pathLength - 1 && !isLooping)  
            velocity += Steer(targetPoint, true);   //Steer计算加速度  
        else  
            velocity += Steer(targetPoint);  

        transform.position += velocity; //Move the vehicle according to the velocity  
        transform.rotation = Quaternion.LookRotation(velocity); //Rotate the vehicle towards the desired Velocity  
    }  

    //Steering algorithm to steer the vector towards the target  
    public Vector3 Steer(Vector3 target, bool bFinalPoint = false)  
    {  
        //Calculate the directional vector from the current position towards the target point  
        Vector3 desiredVelocity = (target - transform.position);  
        float dist = desiredVelocity.magnitude;  

        //Normalise the desired Velocity  
        desiredVelocity.Normalize();  

        //Calculate the velocity according to the speed  
        if (bFinalPoint && dist < 10.0f)  
            desiredVelocity *= (curSpeed * (dist / 10.0f));  
        else   
            desiredVelocity *= curSpeed;  

        //Calculate the force Vector  
        Vector3 steeringForce = desiredVelocity - velocity;   
        Vector3 acceleration = steeringForce / mass;  

        return acceleration;  
    }  
}  
Unity3D之寻路系统(一) 寻路系统 游戏中角色的自动寻路,有很多中成熟的实现算法,如: DFS(深度优先搜索算法) BFS(广度优先搜索算法) Dijkstra A*路点寻路 D* NAV导航网格寻路 预设导航点的固定路径 。。。 本文将介绍NAV导航网格寻路和预设导航点的固定路径在Unity3D中的简单应用,Nav导航网格寻路会进行详细介绍,以及寻路追踪的改进。 预设导航点的固定路径 预设导航点的固... 阅读详情

相关推荐

深度寻路算法(C++实现)

深度寻路算法,使用的是栈模板,通过将其走过的点的坐标压入栈中,然后遍历其所在位置的各个方向寻找可以通行的"路径",一般情况下当迷宫的范围不太大时,其又存在路径是可以遍历到路径的,但是深度寻路并不会寻找最短路径。并且当迷宫足够大时,且其可通行的点足够多时,也就是一直都有点压入栈中,这时是找不到迷宫的出口的,还会使栈的占用内存过大,导致栈溢出。 前面是个引子,下面开始真正的讲述深度深度优先搜索了先来说...

qq_41848597的博客 1328

实用高效的寻路算法——A*寻路算法的实现及优化思路

https://www.fgba.net/sitemap.xml

woliuqiangdong的博客 7613

遵循路径走,A星寻路算法

在unity下实现A星寻路的算法

Unity19--物体自动沿固定路线走,自动寻路

一、沿固定路线走(创建Nav2文本)   //1.固定路线走,都给小球设置标签Path01   //2.把方块Player拖成预制体,写文本CreateEnemeies给了空文件夹,参数count不用填,,可以改程序中的count,Nav2给了预制     体,可把小球的Mesh的√去掉,就不显示了   //3.可写创造一波怪物按固定路线,暂时只能创造一波怪物,等用协程写

xk1761299425的博客 9721

【VisionMaster】图像源模块之本地图像

图像采集之图像源

zhy29563 6959

国产化软件设计:遵循信创要求,助力信息技术自主创新

支持国产操作系统、CPU、数据库和中间件。确保网络通信的身份鉴别、数据传输机密性和完整性。实现应用和数据层的身份鉴别、数据传输机密性完整性、数据存储机密性完整性。依托法院密码服务平台提供的商用密码能力。

qq_41186565的博客 3372

Unity 路点寻路,自带的导航网格寻路,A* Pathfinding project 区别

引言 寻路系统是当今众多游戏中不可或缺的功能模块。比如格子游戏中的格子寻路,塔防怪物的行进路径,捕鱼游戏中的鱼群路径,RPG游戏中的怪物AI等,不同的需求对应的寻路策略的选择也不尽相同。 正文 在Unity3D中我们一般常用的寻路策略有: 1.路点寻路(WayPoint) 路点寻路是最简单,易理解,易操作的(如下图):需要预先设置好路径点坐标集合。然后对象按照规定的坐标集...

qq_37896049的博客 5236

基于STM32的多参数水质检测仪系统 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6主控,搭配pH、TDS、浊度、水温四大核心水质检测模块,完整实现了多参数水质检测仪的全流程开发,从多通道ADC采集、数字滤波、温度补偿、专业校准、阈值报警到人机交互,全流程无跳步保姆式拆解,配套逐行注释可直接编译的开源代码,新手跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 484

一劳永逸地解决寻路问题

一劳永逸地解决寻路问题作者:PaulT译者:trcj原文:http://www.ai-blog.net/archives/000152.html通常我都会尽量避免对业内游戏产品或开发者们评头论足。但这回我不得不破一次例。我要讨论一些关于寻路的问题。为了证明这些

oldcoyote的专栏 2615

嵌入式系统存储体系

主要分为三种:高速缓存(cache)、主存和外存。

weixin_43586667的博客 2265

RK3568+XS9922B+Android11双模视频输入:CVBS与AHD兼容驱动开发实战

本文详细介绍了基于RK3568平台和XS9922B解码芯片,在Android11系统上开发支持CVBS与AHD双模视频输入的兼容驱动实战。内容涵盖硬件选型、内核驱动框架分析、双模信号自动识别与配置、视频通道切换实现及图像质量优化等关键技术点,为车载监控等需要兼容新旧摄像头的项目提供完整解决方案。

js777的博客 379

Unity3D FindPonitWay:通过路径点寻路,个人编写的简单易用小插件

最近开发的模拟经营游戏中,有人物寻路的需求。具体如下图所示,人物会沿着固定轨迹走到工作的地点,进行相应的行为逻辑。 由于人物基本按照直线进行行走,使用A*等寻路插件不太符合自己的需求。将大地图简化为路径点之后。画出路线图如下: 由图可分析出,我们只需要做到,不停的找离终点最近的相邻点,就可以实现寻路的目的。 理清思路之后,代码写起来就比较简单了;首先是新建一个路径类,处理该父节点下的所有路径: using System.Collections; using System.Collect..

Tel17610887670的博客 1896

5G LDPC编码实战:从校验矩阵到Matlab代码实现(附完整源码)

本文深入解析5G NR标准中的LDPC编码工程实现,聚焦于从3GPP协议中的QC-LDPC校验矩阵到高效Matlab代码的转换。文章详细阐述了基础矩阵(BG1/BG2)选择、提升因子确定以及利用双对角结构的快速编码算法,并提供了完整的、可优化的Matlab源码,旨在帮助通信算法工程师和开发者快速构建5G LDPC编码仿真原型,为硬件实现奠定基础。

table的专栏 377

Unity_塔防固定路线_060

固定路线的寻路一般在塔防游戏中出现的比较多。 效果如下: 下面我们来看以下固定路线的实现:using UnityEngine; using System.Collections; using System;public class Move : MonoBehaviour { //保存所有的路点 public GameObject[] points; //记录下一个即

杨勇博客之家 2460

避坑指南:从聚宽迁移到QMT必须知道的5个细节(含Redis连接异常处理)

本文详细解析了从聚宽迁移到QMT平台时需注意的5个关键细节,特别是Redis连接池优化和xtquant重连机制。通过实战代码示例,帮助量化团队解决信号传递稳定性、时间同步、滑点控制等核心问题,确保交易策略平稳过渡。

weixin_27303545的博客 428

华为数字化转型之道 方法篇 第五章 视IT为投资,用产品思维管理IT

比较传统信息化和数字化转型下的IT系统特征,我们发现业务环境、IT能力、业务和IT的关系都发生了巨大的变化(见图5-1)从“管理系统”到“作业平台”。企业通常的做法是将线下的文档、流程线上化,IT系统是作为管理系统而存在的。而面向数字化,企业的业务作业、业务运营和决策、团队协同等业务动作已经和IT系统集成,IT系统逐步转变为作业系统。从“功能优先”到“体验优先”,如果要整体完成一项工作往往需要用户在不同系统间切换,费时费力。

沧海之巅的专栏 1094

Unity AI导航寻路系统

第一步搭建场景 两个平面,一个立方体,一个胶囊,一座桥(立方体) 让这个胶囊自主找立方体 将除胶囊外其他场景中物体设为静态 打开AI导航 烘培一个导航网格 给胶囊添加智能体 编辑AI寻路脚本 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class AINavigation : M..

海月的博客 5928

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【实测】airtest进行移动端小游戏自动化测试的寻路问题

该说不说,现在小游戏挺火的,尤其是微信小程序的小游戏内容上已经不比单独需要下载的app小游戏差多少了,流畅度也不算差了。

伤心的辣条 1022

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

寻路算法 --- 深度寻路算法

深度寻路:大地图 空旷地形 适用于不一定要找到最佳路径的情况 尽量每个角落都走遍 广度寻路:不需要回退 一定能找到最佳路径 循环多 小地图 #include <iostream> using namespace std; #include <graphics.h> #include "MyStack.h" //格子宽高 #define SPACE 80 //Y 竖着 行数 #define ROWS 10 //X 横着 列数 #define COLS .

weixin_60569662的博客 2199

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

moba寻路_GitHub - aafasou/MoBaDemo: 用Unity做的一个类Moba游戏Demo

游戏整体逻辑出兵逻辑游戏会在两个阵营的固定区域在固定的频率中出兵。小兵只能沿着规定好的轨道进行行走,并按照各个防守塔的顺序向敌方进行进攻。需要注意的点对于固定出现的小兵来说,不适合在其死亡之后删除GameObject对象,而应该使用对象池来管理他们,当小兵死亡时,只是将该单位的GameObject的active设为false,当要进行出兵的时候,从对象池中抽取active为false的单位出现在固...

weixin_29752563的博客 823

c语言实验报告寻路,C语言实现数据结构迷宫实验

本文实例为大家分享了C语言实现简单的数据结构迷宫实验,供大家参考,具体内容如下分析:迷宫实验主要有两部分操作,其一是对迷宫的生成,其二是寻路使用栈的操作。步骤:一、.h文件1、首先是迷宫的生成,可以使用随机数种子生成,但主要逻辑部分并不在此,所以在这里直接写死,固定下来。定义一个坐标类型的结构体,和二维数组迷宫:typedef struct {int x;int y;}Pos;//迷宫类型type...

weixin_28871645的博客 646

Unity寻路专题——回顾与优化(二)

在寻路专题中我们讲到了A*算法,这一节是对A*的优化,适合对A*已经了解的读者,如果还不了解就建议去学习A*再来进行优化的学习。优化前我们先来大概回顾一下A*算法,A*算法使用了启发函数来对迪杰斯特拉算法进行一些剪枝优化,去除那些在寻路过程中不可能经过的点。★启发函数F(n)=G(n)+H(n)就相当于A*的大脑☆,直接影响了A*的寻路决策。我们从开始节点开始,维护一个openList和c...

unityofficial的博客 130

开源时间序列预测工具落地指南:选型、基线、回测与监控

时间序列预测是用等间隔历史数据估计未来走势的基础建模方法,其效果不仅取决于算法,更依赖时间轴对齐、缺失与异常处理、验证切分和区间估计等工程环节。开源预测工具的核心价值在于把频率对齐、批量拟合、分位数输出等样板流程封装为可复用能力,降低从实验到生产的重复开发成本,但无法替代对业务口径和决策偏差的理解。在销量预测、库存备货、排班与产能规划等场景中,通常需要先用季节性朴素法等基线模型建立参照,再通过滚动回测设计校验模型,并借助预测区间支撑安全库存与风险决策。围绕开源预测工具、时间序列预测、基线模型、回测设计与预测

weixin_33980459的博客 287

moba寻路_GitHub - ylmbtm/MoBaDemo: 用Unity做的一个类Moba游戏Demo

游戏整体逻辑出兵逻辑游戏会在两个阵营的固定区域在固定的频率中出兵。小兵只能沿着规定好的轨道进行行走,并按照各个防守塔的顺序向敌方进行进攻。需要注意的点对于固定出现的小兵来说,不适合在其死亡之后删除GameObject对象,而应该使用对象池来管理他们,当小兵死亡时,只是将该单位的GameObject的active设为false,当要进行出兵的时候,从对象池中抽取active为false的单位出现在固...

weixin_39834984的博客 530

cocos2dx 3.0 对战的寻路AI

多角色对战中的寻路是一个比较复杂的问题,笔者尝试用一个简单的例子进行说明

frankxixu的专栏 866

AI 人工智能 探索 (四)

在写之前,先对昨天寻路插件再做一些补充,因为该插件不是很完善,所以当我发现有不能满足需求的时候,就会试图更改源代码,或增加接口来符合我的需求。 昨天补充了一条是 自身转向代码,今天补充另外一条,是及时改变路向。我们发现原始插件改变路向,必须要等角色到达目标点才能再做改变,我们在ai中希望是,当目标点改变,角色在半道就要改变新方向。 好了,解决该问题的方法很简单,只需要如下方法 p...

weixin_30369087的博客 92
上一篇: 血红效果
下一篇: 读书笔记_Unity3d 游戏优化2
人不问
博客等级 码龄11年 2粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值