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

Unity人工智能编程精粹学习笔记 实现AI角色的自主移动——操控行为 操控行为 “操控行为”是指操作控制角色,让它们能以模拟真实的方式在游戏世界中移动。它的工作方式是通过产生一定大小和方向的操控力,使角色以某种方式运动。它属于AI模型中的运动层。 (1)操控行为包括一组基本“行为”。对于单独的AI角色,基本操控行为包括: 使角色靠近或离开目标的“Seek”,“Flee”行为; 当角色接近目标时使他减速的“Arrival”行为; 使捕猎者追逐猎物的“Pursuit”行为; 使猎物逃离捕猎者的“Evade”行为; 使角色在游戏世界中随机徘徊的“Wander”行为; 阅读详情

增加Steering的派生类

----SteeringForWander类    徘徊行为类

解读:

①初始化过程,通过半径确定圆周上的一个点。(案例中通过确定一个X=Y的点(x,y)).

通过圆心公式:x^{2}+y^{2}=r^{2} 圆心为(0,0)半径为r

又因为X=Y

我们可以算出关系式 x=r*\sqrt{2}/2    \approx r*0.707

所以初始化点的坐标为  Vector3(r*0.707,0,r*0.707)

 

 

A) 案例生成随机点的公式,通过随机值以及设定的抖动值,来生成一个随机位移的点。通过把初始化点的位置与随机点的位置相加,获取新的点。

 

B)通过将新的点进行向量归一化运算,获取新的点的方向向量,然后乘上徘徊范围的半径,可以将该点投影回徘徊范围的圆周上。  circleTarget

C)通过当前物体的速度矢量的归一化*徘徊距离(wanderDistance),获取物体将移动的距离,然后与B)中新投影点相加,获得目标(新投影点)在物体移动后的相对位置。由于目标的位置向量是相对物体(三角形)的,所以需要再与物体的位置相加而得到目标的实际位置(在世界坐标上的位置)。即实际要徘徊到的目标位置    wanderTarget

 

0)通过实际徘徊目标位置与物体当前位置的差值的归一化,求出实际运动方向,再乘上最大速度,求得物体运动的预期速度。通过预期速度与物体原速度的差值,获得实际操控力向量。 

案例代码:

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

public class SteeringForWander : Steering {
    //徘徊半径
    public float wanderRadius;
    //徘徊前距离
    public float wanderDistance;
    //每秒加到目标的随机位移最大值
    public float wanderJitter;

    public bool isPlanar;
    private Vector3 desiredVelocity;
    private Vehicle m_vehicle;
    private float maxSpeed;
    private Vector3 circleTarget;
    private Vector3 wanderTarget;

    private void Start()
    {
        m_vehicle = GetComponent<Vehicle>();
        maxSpeed = m_vehicle.maxSpeed;
        isPlanar = m_vehicle.isPlanar;
        //选取圆圈上一个点作为初始点
        circleTarget = new Vector3(wanderRadius * 0.707f, 0, wanderRadius * 0.707f);

    }

    public override Vector3 Force()
    {
        //计算随机位移
        Vector3 randomDisplacement = new Vector3((Random.value - 0.5f) * 2 * wanderJitter, (Random.value - 0.5f) * 2 * wanderJitter, (Random.value - 0.5f) * 2 * wanderJitter);
        if (isPlanar)
            randomDisplacement.y = 0;
        //将随机位移加到初始点上,得到新位置
        circleTarget += randomDisplacement;
        //由于新位置可能不在圆周上,因此需要投影到圆周上
        circleTarget = wanderRadius * circleTarget.normalized;
        //之前计算出的值是相对于AI角色合AI角色的向前方向的,需要转换为世界坐标
        wanderTarget = m_vehicle.velocity.normalized * wanderDistance + circleTarget + transform.position;
        //计算预期速度 返回操控力向量
        desiredVelocity = (wanderTarget - transform.position).normalized * maxSpeed;
        return (desiredVelocity - m_vehicle.velocity);
    }

}

 

 

参考书籍:《unity3d人工智能编程精粹》 王洪源等著  《C++游戏人工智能编程案例精粹》[美]Mat Buckland  图解来源P88-P89

               

《游戏人工智能编程案例精粹(修订版)》pdf格式下载电子书免费下载 《游戏人工智能编程案例精粹(修订版)》pdf格式下载电子书免费下载: https://u253469.ctfile.com/fs/253469-302448508 内容简介 《游戏人工智能编程案例精粹(修订版)》由Mat Buckland著,罗岱等人译,是游戏人工智能方面的经典之作,畅销多年。它展示了如何在游戏中利用专业人工智能技术,并针对实际困难问题,给出了强有力的解决方法。 《游戏人工智... 阅读详情

相关推荐

《Unity3D人工智能编程精粹》笔记

Unity3D人工智能架构模型游戏AI的架构模型 Unity3D人工智能架构模型 感知:是AI角色与游戏世界的接口,负责在游戏运行过程中不断感知周围环境,读取游戏状态和数据,为思考和决策收集信息。(for example:是否有敌人接近等。) 思考:利用感知的结果选择行为,在多种可能性之间切换。(such as:战斗还是逃跑?躲到哪里?) 一般来说,这是决策系统的任务,有时也可能简单地与感知合二为一。 行动:发出命令、更新状态、寻路、播放声音动画,也包括生命值减少等。这是运动系统、动画系统和物理系统的任.

qq_52317884的博客 5293

游戏人工智能编程案例精粹(修订版) (Mat Buckland 著)

https://www.jblearning.com/catalog/productdetails/9781556220784 第1章 数学和物理学初探(已看) 第2章 状态驱动智能体设计(已看) 第3章 如何创建自治的可移动游戏智能体 第4章 体育模拟(简单足球) 第5章 图的秘密生命 第6章 用脚本,还是不用?这是一个问题 第7章 概览<<掠夺者>>游...

weixin_34119545的博客 1529

06 Unity3D人工智能AI-随机徘徊

using UnityEngine; using System.Collections;//pay attention that this function is quite related with frame ratepublic class SteeringForWander : Steering { public float wanderRadius; public float

Circle 2298

《游戏人工智能编程 案例精粹》阅读心得

最近读完了这本《游戏人工智能编程 案例精粹》,感觉获益匪浅,在对游戏人工智能的设计上有了更深的感悟。这本书既适合初学者学习,因为次书会从最基础的数学物理公式推导一步一步介绍到完整的人工智能开发;同时也适合进阶程序员,因为其设计思路、解决方案能给人以很大启发。要注意的是:这里讲的人工智能,并非现在大火的强人工智能(AI),而是游戏中的行为体智能控制(例如控制 NPC 行动的状态机)。

魔术师Dix的博客 1705

游戏编程精粹经典源码

对于游戏编程中的AI,数学,多边形,数据结构.用各种高效的方式实现.中级编程实现

《人工智能》--游戏人工智能编程案例精粹cocos creator实现.zip

人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~ 人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~ 人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~ 人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~ 人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~

实现AI角色的自主移动-徘徊Wander行为

徘徊(Wander)行为 许多时候,人们需要让游戏中的角色在游戏环境中随机移动(如巡逻的士兵、惬意吃草的牛羊等),就像这些角色是在等待某些事情发生,或者是在寻找什么东西,当角色出现在玩家视线中,人们通常希望这种随机移动看上去是真实的,如果玩家发现角色实际上是在沿事先预定好的路径移动,就会有不真实的感觉,那么便会影响到他的游戏体验。 随机徘徊行为就是让角色产生有真实感的随机移动,那么这会让玩家感觉角色是有生命的,而且正在到处移动。 using UnityEngine; namespace AI.Steer

再学一个就睡的博客 1164

Ubuntu20.04系统Cuckoo sandbox所需环境搭建及安装(超详细图文)

请勿叫我大神,我只是互联网的搬运工~ 前言 本教程以Ubuntu20桌面版作为示范,服务器版同样适用,但可能稍微麻烦一点,服务器版本的话安装Xmanage套装使用可能会相对轻松一些,由于后面会使用到vbox的使用,对vbox命令行操作不熟悉的小伙伴用xmanage可能会相对轻松一点。 提示:以下是本篇文章正文内容,下面案例可供参考 安装ubuntu20桌面版 步骤1:转到https://ubuntu.com/download/desktop下载下载.iso。 步骤2:使用您选择的虚拟机监控程序(VMWa

ElsonHY的博客 1万+

《游戏人工智能编程案例精粹》笔记 (一)

游戏人工智能编程案例精粹(Programming game AI by example)第一章笔记

M1M1M16的博客 431

无人机VS地面机器人:用AirSim和Gazebo玩转ROS2仿真的5个实战场景对比

本文深度对比了ROS2生态中两大仿真工具AirSim和Gazebo在无人机与地面机器人应用中的表现。通过电力巡检、仓库调度、SLAM建图等5个实战场景,分析了两者在视觉保真度、物理精度、开发效率等方面的差异,并提供了跨平台协作的实用技巧,帮助开发者根据项目需求选择合适的仿真工具。

flink9streamer的博客 900

Autodesk Genuine Service卸载失败?试试这个隐藏文件删除法(Win8-Win11通用)

本文针对Autodesk Genuine Service在Windows系统(Win8-Win11)中卸载失败的常见难题,提供了深度解析与根治方案。核心方法是手动定位并删除两个关键的隐藏文件(ProductInformation.pit和id.dat),以解除文件锁定或数据损坏导致的卸载障碍,随后再通过标准流程即可成功卸载。该方法通用性强,能有效解决这一困扰设计师和工程师的顽固问题。

weixin_29220405的博客 1469

unity3d 挂载脚本_Unity3D 自动添加脚本到物体上(指定脚本挂在指定位置上)

转载自 http://www.manew.com/blog-123323-3438.html关于场景内物体添加脚本等等的 最麻烦了,而且经常容易丢失 。现在给新手一个比较好的方法来自动添加脚本。第一步:在场景内创建一个空物体。给空物体命名为 GameObjectController (也可自行命名)。创建 GameObjectController 的空物体是为了在空物体上添加一个脚本。这个脚本负责...

weixin_42384743的博客 1万+

硬件开发实践:高速 PCB 差分信号与时钟同步优化

由两条互补信号线组成(正负极)接收端只关注两线之间电压差共模噪声对两线同时作用,可被抵消。

2501_93174775的博客 392

Unity学习笔记:AI操控板书

了解操控的概念 操控 控制物体的运动,使其按照预定的目的或轨迹运动如:靠近,远离算法 AI 控制物体的运动,解决的运动会更细节一些,赋予运动一些目的性。 自动行为操控 控制物体的运动,物体自己动,自己要有判别能力 用到的就是技术主要就是:向量的加减乘除。 运用软件技术和向量的运算实现自动行为操控。逻辑可以复用。 如:地面上的运动:寻路 在三维空间中的运动,飞机,鸟 需求:通过软件实现 自动行为操控 1》自动行为:分类(单体运动8种,群体运动2种) ...

自闭的饭盒 341

基于STM32的智能鱼缸设计

为了缓解学习、生活、工作带来的压力,提升生活品质,许多人喜欢在家中、办公室等场所养鱼。为节省鱼友时间、劳力、增加养鱼乐趣;为此,本文基于STM32单片机设计了一款智能鱼缸。该鱼缸可以实现水温检测、水质检测、自动或手动换水、氛围灯灯光变换和自动或手动喂食等功能为一体的控制系统,可通过控制键进行一键控制。...

1万+

基于STM32设计的物联网疫苗冷链物流监测系统

本设计基于物联网技术,开发了一套疫苗冷链物流环境监测系统。系统采用STM32F103C8T6作为主控芯片,集成SHT30温湿度传感器、震动传感器、GPS定位模块和4G通信模块,实现对运输环境的温度、湿度及震动状况的实时监测与控制。通过继电器驱动半导体制冷模块和加湿器,系统能够自动调节环境温湿度,保障疫苗运输的安全性。采集的环境数据通过MQTT协议上传至华为云物联网平台,配套开发的Android手机APP和Windows上位机软件基于Qt平台设计,支持远程实时查看环境数据和车辆定位,提升了疫苗冷链运输的智能化

862

Unity C# 操控行为类

备注:因为这篇博客是根据《游戏人工智能编程案例精粹》写的,而这本书是由c++写的。所以在这篇文章里只是有ai的逻辑,但并没有很好地用在Unity身上。后来我发现了一本书,也是根据《游戏人工智能编程案例精粹》这本书写的,而且专门是为了Unity写的。因此下面的代码理解一下就好,实际应用的话可以参考那本书的第一章。那本书就是《Unity 5.x Game AI Programming Cookbook...

weixin_30752699的博客 248

YOLOv11 改进 - 主干网络| 清华大学CloFormer AttnConv :利用共享权重和上下文感知权重增强局部感知,注意力机制与卷积的完美融合

本文介绍了轻量级视觉变换器CloFormer及其核心模块AttnConv在YOLOv11中的结合应用。为解决视觉变换器缩小到移动设备友好尺寸时性能下降的问题,提出CloFormer,其引入AttnConv操作符。AttnConv融合共享权重和上下文感知权重,先通过深度卷积提取局部表示,再用上下文感知权重增强特征,还结合传统注意力减少FLOPs,使模型感知高频和低频信息。我们将AttnConv集成进YOLOv11,实验表明,CloFormer在多个视觉任务中表现优越,改进后的YOLOv11也取得了良好实验结果

魔改工程师的博客 989

【Unity】【C#】《U3d人工智能编程精粹》学习心得--------AI角色的感知方式-视觉感知实现解读

视觉感知: sightSensor 与 sightTrigger 实现 视觉感知前提: 需要判断是否有物体的视觉触发器处于其他物体的视觉感知器的范围内   感知视觉触发器的感知器-------sightSensor类 可视角度, 最远可视距离 绘制可视距离 绘制与视觉目标的连线 判断是否被视觉感知器触发的触发器--------sightTrigger类 判断感知器是否为视觉感知器...

Terrell21的博客 1078

LSTM 深度解析从原理推演到现代序列建模的演进

LSTM(Long Short-Term Memory,长短期记忆网络)是一种特殊的递归神经网络(RNN),它通过引入记忆单元(Cell State)来解决普通RNN在长序列数据处理中的梯度消失问题。LSTM可以在长时间的序列中捕捉依赖关系,是一种非常适合处理时间序列、自然语言处理、语音识别等任务的深度学习模型。在LSTM中,记忆单元(Cell State)是一个贯穿整个序列的数据通道,用于存储和传递关键信息。记忆单元在LSTM的时间步之间保持信息的持久性,可以看作是一个长期记忆的“容器”。

hello.reader 3万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

开发人 学习资源

非常优秀的资源,请珍惜 基础 游戏编程高级进阶书籍推荐:http://www.douban.com/doulist/522861/ Amit游戏编程:http://www-cs-students.stanford.edu/~amitp/gameprog.html 介绍游戏编程的多个方面,图形化教程赞 游戏物理和网络编程:http://gafferongames.com/networking-for-game-programmers/ GAD游戏开发社区:http://gad.qq.com

梦想是世界和平 355

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

摘自《Unity3D人工智能编程精粹》 以下都是继承Steering类的,直接上代码了: Pursuit(追逐):using UnityEngine; using System.Collections; public class SteeringForPursuit : Steering { public GameObject target; priva

赖张殷-Eagle 2273

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

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

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

游戏人工智能编程案例精粹pdf

下载地址:网盘下载内容简介编辑本书主要讲述如何使游戏中的角色具有智能的技术。首先介绍游戏角色的基本属性及常用数学方法。深入探讨游戏智能体状态机的实现。通过简单足球游戏实例,给出用状态机实现游戏AI的例子。在图论部分,详细介绍图在游戏中的用途及各种不同的图搜索算法。[1]目录编辑第1章 数学和物理学初探1.1 数学1.2 物理学1.3 总结第2章 状态驱动智能...

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值