[AI-Steering编程]六.躲避行为

2023-10-10 20:50
文章标签 ai 行为 编程 躲避 steering

本文主要是介绍[AI-Steering编程]六.躲避行为,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

六.躲避行为
你应该意见猜到了,躲避行为是追捕的反行为,它与追捕的不同点在于,追捕是在seek”未来目标”,而躲避是在flee”未来目标”:

                   public function evade(target:Vehicle):void {
                            var lookAheadTime:Number = target.position.dist(_position) / _maxSpeed;
                            //计算此时追上目标的预计时间,即lookAheadTime.
                            var predictedTarget:Vector2D = target.position.add(target.velocity.multiply(lookAheadTime));
                            //在这段时间内,目标以现在的速度,预计会到达的位置,即"未来目标"
                            flee(predictedTarget);
                            //避开这个"未来目标"                

2009-12-28 21:20


6-1-Evade.swf (4.27 KB)


在示例” 6-1-Evade.swf”中,我创建了两对儿机车,红色机车seeker,白色机车fleer,以及绿色的机车evader,蓝色的机车pursuer.他们之间的关系是

                            fleer.flee(seeker.position);
                            fleer.update();
                           
                            seeker.seek(fleer.position);
                            seeker.update();
                           
                            pursuer.seek(evader.position);
                            pursuer.update();
                           
                            evader.evade(pursuer);
                            evader.update();

通过上面的示例,可以看到白色的机车fleer,在傻乎乎的flee红色的seeker,红色的机车seeker在后面追,白色的fleer就往前跑.而绿色的evader就很”狡猾”的躲避蓝色的pursuer,这有点像篮球的变向过人,知道pursuer会往那个地方追我,我就来个急转弯,避开它!
文档Evade类如下:

package 
{
         import flash.display.Graphics;
         import flash.display.Sprite;
         import flash.events.Event;
        
         import ladeng6666.steering.Vector2D;
         import ladeng6666.steering.Vehicle;
         import ladeng6666.steering.TargetObj;

         public class Evade extends Sprite
         {
                   private var fleer:Vehicle;                                  //机车实例         
                   private var seeker:Vehicle;                      //添加红色的机车,来seek白色的机车
                   private var pursuer:Vehicle                     //添加蓝色的的机车,来pursue白色的机车
                  private var evader:Vehicle;                     //创建绿色的机车,来evade蓝色pursuer的寻找
                  
                   public function Evade()
                   {
                            fleer = new Vehicle();
                            fleer.position = new Vector2D(100, 200);
                            fleer.edgeBehavior = Vehicle.BOUNCE;
                            seeker = new Vehicle(0xff0000);
                            seeker.edgeBehavior = Vehicle.BOUNCE;
                            pursuer = new Vehicle(0x0000ff);
                            evader = new Vehicle(0x00ff00);
                            evader.position = new Vector2D(100, 200);
                            evader.edgeBehavior = Vehicle.BOUNCE;
                           
                            addChild(fleer);
                            addChild(seeker);
                            addChild(pursuer);
                            addChild(evader);
                           
                            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
                   }
                   //按照帧频随速度更新机车的位置
                   private function enterFrameHandler(e:Event):void {
                            fleer.flee(seeker.position);
                            fleer.update();
                           
                            seeker.seek(fleer.position);
                            seeker.update();
                           
                            pursuer.seek(evader.position);
                            pursuer.update();
                           
                            evader.evade(pursuer);
                            evader.update();
                   }
         }
}


本章源代码:
chapter6.rar (15.53 KB)

这篇关于[AI-Steering编程]六.躲避行为的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/183009

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti