【Unity3D】坦克对战游戏 AI 设计

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

作业要求


从商店下载游戏:“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()
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值