【Unity】【C#】《U3d人工智能编程精粹》学习心得--------操纵行为--抵达(进入减速范围)

实现AI角色的自主移动——操控行为 Unity3D人工智能框架模型 游戏UI的框架模型 尽管每种游戏需要的AI技术都有所不同,但绝大部分现代游戏中对UI的需求都可以分为三级: 运动层:导航和寻路是运动层AI的主要任务,它们决定了角色的移动路径。当然具体的移动行为还需要动画层的配合。运动层包含的算法能够把上层做出的决策转化为运动。 决策层:决策层的任务是决定角色在下一时间该做什么。一般情况下,每个角色都有许多不同的行... 阅读详情

增加Steering的派生类

---SteeringForArrive   抵达行为类

抵达减速范围解读图:

案例代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SteeringForArrive : Steering {

    public GameObject target;
    private Vehicle m_vehicle;
    private Vector3 desiredVelocity;
    private float maxSpeed;

    public bool isPlanar = true;
    public float arrivalDistance = 0.3f; 
    public float characterRadius = 1.2f;

    public float slowDownDistance;

    private void Start()
    {
        m_vehicle = GetComponent<Vehicle>();
        maxSpeed = m_vehicle.maxSpeed;
        isPlanar = m_vehicle.isPlanar;

    }

    public override Vector3 Force()
    {
        //到目标的距离矢量
        Vector3 toTarget = target.transform.position-transform.position;

        //预期速度
        Vector3 desiredVelocity;
        //返回操控向量
        Vector3 returnForce;

        if (isPlanar)
            toTarget.y = 0;
        float distance = toTarget.magnitude;

        if (distance > slowDownDistance)
        {
            desiredVelocity = toTarget.normalized * maxSpeed;
            returnForce = desiredVelocity - m_vehicle.velocity;
        }
        else
        {
            desiredVelocity = toTarget - m_vehicle.velocity;
            returnForce = desiredVelocity - m_vehicle.velocity;
        }
        return returnForce;
    }

    private void OnDrawGizmos()
    {
        Gizmos.DrawWireSphere(target.transform.position, slowDownDistance);
    }

}

参考书籍:《unity3d人工智能编程精粹》 王洪源等著

03 Unity3D人工智能AI-抵达 using UnityEngine; using System.Collections;public class SteeringForArrive : Steering { //public enum Deceleration{slow = 3, normal = 2, fast = 1}; //public Deceleration deceleration; publ 阅读详情

相关推荐

02 Unity3D人工智能AI-离开

using UnityEngine; using System.Collections;public class SteeringForFlee : Steering { public GameObject target; public float fearDistance = 20; private Vector3 desiredVelocity; private Ve

Circle 757

【Unity】【C#】《U3d人工智能编程精粹》学习心得--------操纵行为--徘徊

增加Steering的派生类 ----SteeringForWander类    徘徊行为类 解读: ①初始化过程,通过半径确定圆周上的一个点。(案例中通过确定一个X=Y的点(x,y)). 通过圆心公式: 圆心为(0,0)半径为r 又因为X=Y 我们可以算出关系式      所以初始化点的坐标为  Vector3(,0,)     A) 案例生成随机点的公式,通过随机值以及...

Terrell21的博客 1359

【电驱动】永磁同步电机工作原理及分类

永磁同步电机工作原理及分类

星Yeah 的博客 7322

游戏AI-实现AI角色的自主移动——操控行为

Unity操控行为编程的基类:Vehicle类、AILocomotion类和Steering类 1.将AI角色抽象成一个质点——Vehicle类 这个类直译为“交通工具”包括了很宽泛的能自主移动的AI角色。 操作对象抽象为一个质点,包含位置信息、质量、速度等,速度随着施加力的变化而变化。力与速度都有一个限制,因此还需要最大力、最大速度。还需要一个朝向。 位...

祝你万事顺利的博客 2571

多径衰落信道的 MATLAB 仿真

在无线通信系统中,信号在传输过程中会经历多径传播现象,导致信号在接收端出现时域和频域上的扩展。通过以上示例代码,我们可以进行多径衰落信道的 MATLAB 仿真。同时,我们还可以通过调整信道参数和信号特性,进一步研究多径衰落对系统性能的影响。常用的模型之一是瑞利衰落信道模型,它假设信号在传输过程中受到多个散射路径的影响。除了瑞利衰落信道模型,我们还可以使用其他类型的信道模型,如高斯衰落信道模型。在上述代码中,我们首先定义了信道的参数,包括最大多普勒频移、多径延迟和多径功率衰落。函数来模拟高斯衰落信道。

TechCraze的博客 665

agent实战专栏|日程管理Agent:智能时间管家

在快节奏的现代生活中,时间管理已成为每个人面临的核心挑战。根据全球知名调研机构 Gallup 的统计数据,现代职场人平均每天仅能有效专注工作 2 小时 23 分钟,剩余时间被会议、邮件、碎片化事务大量占据。微软的另一项研究显示,知识工作者平均每天需要处理 200 多条日程相关的信息,包括会议邀请、日历变更、提醒通知等。传统的日历工具(如 Google Calendar、Outlook Calendar、Apple Calendar)虽然在可视化展示和基础提醒方面表现出色,但在智能化方面仍存在明显短板:日程管

2201_76125393的博客 52

unity3d AI 学习--个体行为操控(1)--具体行为类(1)

摘自《Unity3D人工智能编程精粹》 具体行为类都继承Steering 首先是Seek: using UnityEngine; using System.Collections; public class SteeringForSeek :Steering { public GameObject target; //预期速度 privat

赖张殷-Eagle 2128

两点调制原理以及RF DAC和PLL SDM两条输入路径理解

特性数据本质原始数字比特流 (0/1)平滑后的预失真波形数据连接对象Σ-Δ调制器 (SDM)的小数输入RF DAC在系统中的角色主调制路径:通过改变PLL分频比产生频率偏移辅助补偿路径:通过RF DAC产生补偿电压,校正PLL失真可否加入延时可以且必须。用于数字时序对齐,对性能无影响。绝对不可以。会导致补偿失配,严重破坏信号频谱。功能目标实现数字域的频率调制确保模拟域的波形和频谱完美因此,在您所描述的这种先进发射机架构中,2-point数据是数字指令,送给SDM;

m0_49540263的博客 604

Unity限定物体的移动范围在屏幕内

最近在做一款2D飞行射击游戏,如果要使用摇杆操作,就要考虑到主角超出屏幕边界的问题。想要将物体限定在屏幕范围内移动,需要下面的操作。 1.获取到屏幕边界的世界坐标 屏幕左下角视口坐标为Vector2.zero,屏幕右上角的视口坐标为Vector2.one。如果主摄像机的使用的是Othorgraphic投影方式,则使用 Camera.main.ViewportToWorldPoint(Vector...

dickredone的博客 1万+

FT2004(D2000)开发实战之AMD R5 230显卡驱动适配

AMD R5 230显卡驱动适配

嵌入式Linux 3195

AI测试入门:如何测试AI对话模型/智能体?「详细介绍」

作为测试人员,我们需要掌握特定的技能和方法来有效地测试这些复杂的AI对话模型和智能体。传统的软件测试方法在这里可能不再完全适用,我们需要开发新的测试策略和技术来应对AI系统的独特特性。在这篇文章中,我们将深入探讨如何测试AI对话模型和智能体。

blues_C的博客 6855

【Unity】【C#】《U3d人工智能编程精粹》学习心得--------操纵行为--路径跟随

增加Steering的派生类 ----SteeringForFollowPath类    路径跟随行为类 路径跟随行为类解读: 行为准备: ①记录全部路径点,统计路径点数。 ②获取下一个路径点,并获取当前是几号路径点。(用来标志是否为终点) 准备是否到达目标点的条件: ①与路径点的距离小于某个值,判断为已经到达路点  arriveDistance   sqrArriveDistanc...

Terrell21的博客 655

国科大学习资料--VLSI测试与可测试设计--2020期末考试试题

国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 一、概念题 1简述可测试性测度与两个主要的测度指标的含义; 2以March C-算法为例,说明March算法的构成,以及March C-算法的故障覆盖率; 3“效果-原因”诊断法和“原因效果诊断法”的不同; 4列举四条扫描设计时出现的问 题及解决办法; 5最少写出1149.1与1500的五点不同; = = = = =

无名何许人的博客 1150

【Unity】【C#】《U3d人工智能编程精粹》学习心得--------操纵行为--追逐

增加Steering的派生类 ----SteeringForPursuit类    追逐行为类 追逐行为解读图: 本案例的条件判断,通过判断 ①物体朝向与目标朝向夹角的角度 ----------图中红色角度 ②物体朝向与物体到目标当前位置向量所成的角度  ----------图中蓝色角度       来让物体做出两种追逐行为: ①物体按靠近行为的方式追逐目标 ②物体按预测目标移...

Terrell21的博客 1117

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

自动行为操控Steering(十一)—分散(群体操控)

图示: 实现 /// ///分散 /// public class SteeringForDisperse : Steering { //雷达 private Radar radar; public float companionDistance; public override

uokeyo的博客 538

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

游戏人工智能之操纵行为Steering behaviors—避墙avoidance wall

游戏人工智能之操纵行为Steering behaviors—避墙avoidance wall 游戏人工智能中,操纵行为是很重要的一部分基础,很多地方需要用到。基本的操纵行为有靠近Seek、远离Flee、抵达Arrive、追逐Pursuit、逃离Evade、随机徘徊Wander、路径跟随Path Following、避开障碍Collision Avoidance、绕开墙Wall Avoidance、插

u010707274的博客 2405

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

unity3d 游戏人工智能开发之状态机(C#模板与示例)

Finite State Machine 状态机 This is a Deterministic Finite State Machine framework based on chapter 3.1 of Game Programming Gems 1 by Eric Dybsend. Therea are two classes and two enums. Include them in

wolf96的专栏 3915

实现AI角色的自主移动-抵达Arrival行为

抵达(Arrival)行为 有时我们希望AI角色能够减速并停在目标位置,避免冲过目标。 当角色距离目标较远时,抵达和靠近行为状态一样,但是接近目标时,不再是全速向目标前进,而是减速,最终恰好停到目标位置。 设置一个减速区和到达区域,当AI角色进入减速区,速度逐渐减小到预期速度,直到到达区域,AI角色停止移动。 C#脚本代码 using UnityEngine; namespace AI.Steering { /// <summary> /// 抵达 /// </

再学一个就睡的博客 651

AI学习(二)基础类---------个体操控(2)

个体AI角色的操控行为de实现2.4 Pursuit 追逐[csharp] view plain copy print?using System.Collections;  using System.Collections.Generic;  using UnityEngine;      /*追逐  * 类似于靠近行为,但目标是移动的,要实现的是可以预测目标未来的位置  * 使用简单的预测器,计...

一个默默的游戏制作者...... 414

《Unity Shader入门精要》冯乐乐著 书中彩图

为方便个人手机学习时候查阅,从网上转来这些彩图。 如属过当行为,联系本人删除。 勘错表http://candycat1992.github.io/unity_shaders_book/unity_shaders_book_corrigenda.html 前言 第2章 渲染流水线 图2.1 真实生活中的流水线 图2.2 渲染流水线中的三个概念阶段 图2....

Terrell21的博客 1万+

【功能实现】手机游戏虚拟摇杆功能实现

【UNITY3D】 声明: 我也不知道自己是什么怪人,不喜欢第一时间找插件...最后查API和根据自己的想法实现此功能。如果你喜欢我这个实现,希望你能有所收获,如果你能改进那就更棒了,但如果你想直接拿走,希望标明出处。 建议: 还是推荐大家多学学插件。 只需要把脚本交给画布下的空物体,自行自定义以下内容,运行即可生成虚拟摇杆。 提供了检测区域大小的自定义。 提供了摇杆检测区域的图片自...

Terrell21的博客 5178

【Unity】通过UDP实现VideoPlayer视频同步播放

对于传输方面,本人也是菜鸟一枚,因需求而临时写以下功能代码: 注意:UDP传输的内容,仅提供了传输的数据。 实际应用的情况下,必须确定传输内容的校验。 代码贴出来是进行修改过的,如果需要用到该代码。 1.需要同步多个视频的功能,请更改视频播放部分(videoPlayer的视频切换以及视频的索引值)。 2.仅同步一个视频,请把视频索引部分的代码去掉,便可同步视频的播放进度。 服...

Terrell21的博客 5001

【C#】【Unity】第三人称摄像机跟随人物移动时碰撞到墙壁等,摄像机不穿越墙壁

  目前大部分第三人称游戏的摄像机在遇到墙壁等狭隘空间的时候,都选择让摄像机不穿越到墙壁里面,而是让摄像机保持在墙壁表面。 分析情况:(红色方框为摄像机 黑色方框为墙壁)   当前情形摄像机还没达到墙壁摄像机仍保持正常效果。   当人物进一步靠近墙壁的时候,摄像机穿过墙壁。(造成后果,摄像机视角中墙壁被透明化)   当人物靠近,摄像机不会穿越墙壁而处于墙壁表面上的位置(...

Terrell21的博客 4332

【Unity】Unity场景中各物体之间的Update刷新方法的刷新次序

由于老大提出问题让我留意下刷新次序的问题....然后就有了这篇文章。 如果不想看过程的话,我就说下研究结果: 据我研究出来.. 不同脚本的Update刷新次序,与脚本添加到场景的顺序有关。 有发现不同意见的小伙伴,希望提一下,毕竟我这个也不是用大量的数据和例子研究出来的。 先创建两个脚本(甚至可以一个....两个的话相对清晰一点)。 分别在其Update函数中输出消息(你能分辨清...

Terrell21的博客 3538
上一篇: 【Unity】【C#】《U3d人工智能编程精粹》学习心得--------操纵行为--靠近/逃跑
下一篇: 【Unity】【C#】《U3d人工智能编程精粹》学习心得--------操纵行为--追逐
Terrell21
博客等级 码龄9年 39粉丝 33原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值