Unity AI角色行为编程入门:从基础类到复杂行为
创作时间:
作者:
@小白创作中心
Unity AI角色行为编程入门:从基础类到复杂行为
引用
CSDN
等
10
来源
1.
https://blog.csdn.net/dmk17771552304/article/details/113951925
2.
https://blog.csdn.net/m0_63024355/article/details/133869254
3.
https://blog.csdn.net/qq_43293994/article/details/112761256
4.
https://blog.csdn.net/dmk17771552304/article/details/113951925#t2
5.
https://blog.csdn.net/dmk17771552304/article/details/113951925#t1
6.
https://blog.csdn.net/qq_41727685/article/details/124419820
7.
https://docs.unity3d.com/cn/2019.3/Manual/com.unity.modules.vehicles.html
8.
https://docs.unity3d.com/cn/2021.1/Manual/com.unity.modules.vehicles.html
9.
https://cloud.tencent.com/developer/article/1636853
10.
https://www.lfzxb.top/context-steering-behavior-driven-steering-at-the-macro-scale/
在游戏开发中,AI角色的行为是提升游戏沉浸感和可玩性的重要因素。而实现这些行为的核心技术,就是AI角色行为编程。本文将带你从零开始,学习如何在Unity中通过Vehicle类、AILocomotion类和Steering类来实现AI角色的自主移动。
01
基础概念
在Unity AI角色行为编程中,有三个核心类:Vehicle类、AILocomotion类和Steering类。它们共同构成了AI角色移动的基础框架。
- Vehicle类:将AI角色抽象为一个质点,包含位置、速度、质量等信息。
- AILocomotion类:继承自Vehicle类,负责控制AI角色的实际移动。
- Steering类:实现各种具体的行为,如追逐、逃避、徘徊等。
02
Vehicle类详解
Vehicle类是AI角色行为编程的基础。它将AI角色抽象为一个质点,包含以下关键属性:
- 位置(position):角色在游戏世界中的当前位置。
- 速度(velocity):角色的当前移动速度。
- 质量(mass):角色的质量,影响加速度。
- 最大速度(max_speed):角色能达到的最大速度。
- 最大力(max_force):能施加到角色身上的最大力。
- 朝向(orientation):角色的朝向信息。
Vehicle类的位置计算逻辑如下:
- 确定每一帧的操控力(不超过max_force)
- 除以质量得到加速度
- 将加速度与原速度相加(不超过max_speed)
- 根据速度和时间计算位置变化
- 与原位置相加得到新位置
以下是Vehicle类的代码实现:
using UnityEngine;
namespace AI
{
public class Vehicle : MonoBehaviour
{
private Steering[] _steerings;
public float MaxSpeed = 10;
public float MaxForce = 100;
protected float _sqrMaxSpeed;
public float Mass = 1;
public Vector3 Velocity;
public float Damping = 0.9f;
public float ComputeInterval = 0.2f;
public bool IsPlannar = true;
private Vector3 _steeringForce;
protected Vector3 _acceleration;
private float _timer;
protected void OnStart()
{
_steeringForce = Vector3.zero;
_sqrMaxSpeed = MaxSpeed * MaxSpeed;
_timer = 0;
_steerings = GetComponents<Steering>();
}
private void Update()
{
_timer += Time.deltaTime;
_steeringForce = Vector3.zero;
if (_timer > ComputeInterval)
{
foreach (Steering s in _steerings)
{
if (s.enabled)
_steeringForce += s.Force() * s.weight;
}
_steeringForce = Vector3.ClampMagnitude(_steeringForce, MaxForce);
_acceleration = _steeringForce / Mass;
_timer = 0;
}
}
}
}
03
AILocomotion类详解
AILocomotion类继承自Vehicle类,负责实现AI角色的实际移动。它包含了CharacterController和Rigidbody组件,用于处理物理交互和动画播放。
以下是AILocomotion类的关键代码:
using UnityEngine;
public class AILocomotion : Vehicle
{
private CharacterController controller;
private Rigidbody theRigidbody;
private Vector3 moveDistance;
void Start()
{
controller = GetComponent<CharacterController>();
theRigidbody = GetComponent<Rigidbody>();
moveDistance = new Vector3(0, 0, 0);
base.Start();
}
void FixedUpdate()
{
velocity += acceleration * Time.fixedDeltaTime;
if (velocity.sqrMagnitude > sqrMaxSpeed)
velocity = velocity.normalized * maxSpeed;
moveDistance = velocity * Time.fixedDeltaTime;
if (isPlanar)
{
velocity.y = 0;
moveDistance.y = 0;
}
controller.Move(moveDistance);
theRigidbody.MovePosition(transform.position + moveDistance);
}
}
04
Steering类应用
Steering类用于实现具体的操控行为。例如,追逐行为(Pursuit)和逃避行为(Evade)可以通过以下方式实现:
public class Pursuit : Steering
{
public Transform target;
public float predictionTime = 1.0f;
public override Vector3 Force()
{
Vector3 targetPos = target.position + target.velocity * predictionTime;
return targetPos - transform.position;
}
}
public class Evade : Steering
{
public Transform target;
public float predictionTime = 1.0f;
public override Vector3 Force()
{
Vector3 targetPos = target.position + target.velocity * predictionTime;
return transform.position - targetPos;
}
}
05
实例应用:追逐行为
让我们通过一个简单的追逐行为示例,展示如何组合使用这些类:
- 创建一个AI角色和一个目标对象
- 为AI角色添加AILocomotion组件
- 为AI角色添加Pursuit组件,并设置目标对象
- 运行场景,观察AI角色追逐目标的行为
通过这个示例,你可以看到Vehicle类、AILocomotion类和Steering类如何协同工作,实现复杂的AI角色行为。
06
总结与展望
通过本文的学习,你已经掌握了Unity AI角色行为编程的基础知识。从Vehicle类的抽象,到AILocomotion类的移动控制,再到Steering类的具体行为实现,这些核心概念和代码示例将帮助你开发出更智能、更真实的AI角色。
未来,你可以进一步探索群体行为、路径规划等高级AI技术,为你的游戏世界增添更多生动的AI角色。
热门推荐
中纪委发文:深刻认识高校官僚主义的危害
设计类专业全国前50高校排名(最新版)
青岛去贵阳旅游:完整攻略与优惠路线指南
年终盘点|局势重塑,国际原油市场何去何从
铝模板循环使用很重要,旧板使用前这些流程少不了
离婚后觉得钱最重要了怎么办
打造社区教育数字化平台,创新社区治理模式
武汉都市圈2024年发展综述:加速破“圈”协同,打造中部增长极
广西:多彩非遗焕发时代活力
初学者必读!揭秘古钱币收藏的诀窍与避坑指南
电池回收市场的潜力与挑战,绿捷锂电池回收处理设备的应用
2024金融街论坛年会释放了哪些重要政策信号和改革信心?一文解读!
比特币算力跌对币价有影响吗?为什么?
迎向黄金岁月:益生菌/后生元共塑健康老龄方案
如何高效学习高考日语:策略与技巧
美国人的生活水平真的比中国差吗?
国自然热点追踪——线粒体功能障碍的调控机制以及在各疾病中的进展
公司破产清算时法人责任及债务处理全解析
CRUISE仿真模型:纯电动汽车动力性经济性仿真分析及能量回收设计
欧洲缅甸猫的形态特征
法军阿尔萨斯军团,1914年首战收复失地,却因战局改变惨被解散
探索海南深度自驾之旅:路线规划、景点推荐及旅行贴士
介子推的忠诚与选择——一段承载爱情与信仰的生死离别
关于专利组合优化策略的思考
斩断“黄牛”利益链 让“消费券”回归消费
化学反应中能量变化的本质及转化形式
如何在黄金交易中设置合理的止损策略?这种策略对投资者有何帮助?
火星奥林帕斯山:太阳系之巅,揭示火星地质奥秘与探索新篇章
资深HR教你做透月度薪资分析:8个维度挖出薪酬管理真问题
甘肃永靖 赴一场“科学+艺术”沉浸之旅