作业要求
从商店下载游戏:“Kawaii” Tank 或 其他坦克模型,构建 AI 对战坦克。具体要求
- 使用“感知-思考-行为”模型,建模 AI 坦克
- 场景中要放置一些障碍阻挡对手视线
- 坦克需要放置一个矩阵包围盒触发器,以保证 AI 坦克能使用射线探测对手方位
- AI 坦克必须在有目标条件下使用导航,并能绕过障碍。(失去目标时策略自己思考)
- 实现人机对战
实验内容
“感知-思考-行为”模型:
AITank感知周围是否出现玩家,然后进行思考:
- 若没有玩家就进行行动巡逻
- 若附近有玩家就进行行动追捕。
继续进行感知:
- 若玩家到了AITank的射击范围则进行射击行动,
- 若没有进入玩家射击范围则继续进行追捕行动。
“感知”
NavMesh是unity提供的导航寻路功能。
给对象加上Nav Mesh Agent组件,在Navigation窗口给地图中的各个对象设置walkable或者not walkable等属性,然后bake烘培,就得到描述了游戏对象可行走的表面的数据结构Navigation Mesh,可通过这些三角网格计算其中任意两点之间的最短路径用于游戏对象的导航,作为“感知-思考-行为”模型中的“感知”。
- 使用商店中的资源Tanks! Tutorial。
导入资源之后,报错:Assets\PostProcessing\Editor\PropertyDrawers\MinDrawer.cs(6,34): error CS0104: 'MinAttribute' is an ambiguous reference between 'UnityEngine.PostProcessing.MinAttribute' and 'UnityEngine.MinAttribute'
这里需要:将MinDrawer.cs中所有的MinAttribute替换为UnityEngine.PostProcessing.MinAttribute。

- 预制:
包括enemy,player和bullet,其中enemy和player中都有NavMeshAgent对象

- 设置游戏对象的Navigation,且设置Bake使得AITank可以进行寻路::


“思考”
AITank,它实现了感知-思考-行为”模型中的“思考”。
- AI坦克如果在自己附近没有发现玩家,则会进入巡逻状态
- AI坦克发现了附近的玩家,则会进行追捕
- 当距离进入了AI坦克的射程范围,则AI坦克会通过每隔一段时间发射一颗子弹
void Update () {
gameover = GameDirector.getInstance().currentSceneController.isGameOver();
if (!gameover)
{
target = GameDirector.getInstance().currentSceneController.getPlayerPos()

该博客介绍了如何在Unity中构建一个AI对战坦克游戏,使用感知-思考-行为模型来设计AI坦克的行为。游戏包含障碍物以阻挡视线,坦克使用NavMesh进行导航和寻路。AI坦克会在没有玩家时巡逻,发现玩家后进行追捕,进入射程后进行射击。碰撞检测和子弹回收机制确保了游戏的交互性。博客还提到了UI控制、游戏结束判断及摄像机跟随效果的实现。
最低0.47元/天 解锁文章
3774

被折叠的 条评论
为什么被折叠?



