3D游戏编程与设计作业十

坦克对战游戏 AI 设计

作业要求

从商店下载游戏:“Kawaii” Tank 或 其他坦克模型,构建 AI 对战坦克。具体要求:

  • 使用“感知-思考-行为”模型,建模 AI 坦克
  • 场景中要放置一些障碍阻挡对手视线
  • 坦克需要放置一个矩阵包围盒触发器,以保证 AI 坦克能使用射线探测对手方位
  • AI 坦克必须在有目标条件下使用导航,并能绕过障碍。(失去目标时策略自己思考)
  • 实现人机对战
游戏实现

1、 构建游戏场景
利用官方教程Tanks! Tutorial里面的模型构建了本次游戏的场景。效果如下图:
在这里插入图片描述然后打开Window -> AI -> Navigation,在Navigation窗口给地图中的各个对象设置walkable或者not walkable等属性,然后进行Bake,用以AI寻路。设置参数如下图:
在这里插入图片描述
2、 AI坦克自动寻路
为AI坦克对象添加NavMeshAgent组件,目的是为了当AI坦克发现玩家之后,只需要为NavMeshAgent设置destination,AI坦克便能够自动寻路,前往玩家所在位置。NavMeshAgent参数设置如下图:
在这里插入图片描述
3、 AI坦克自动射击
坦克跟踪速度和角速度随距离发生变化,距离越近速度越慢角速度越快。射线检测玩家在正前方时发射子弹,使用射线使AI坦克不会频繁发射子弹,行为更自然。实现代码如下:
在这里插入图片描述
4、 玩家和AI设置
TankManager类中通过EnableControl函数控制:如果对象是AI,不激活TankMovement组件,使AI坦克不能被玩家控制。EnableControl函数如下:在这里插入图片描述GameManager类中通过SpawnAllTanks函数,设置AI坦克(数组下标为1)的TankManager的AI为true,AI坦克的target(目的地)为玩家(数组下标为0)的位置。
在这里插入图片描述
5、 镜头跟随效果
为了实现一个比较好的游戏体验,通过一个CameraControl的脚本来控制主摄像机的移动跟随效果,并且能够通过游戏场景中所有坦克的距离大小来设置摄像机的Size,从而使视觉体验更佳。
下面是找到合适位置后移动摄像头的代码部分:
在这里插入图片描述
下面是计算出镜头合适大小后改变size的代码部分:
在这里插入图片描述
Ps:在本次作业中,导入资源商店中下载的资源报错,解决方法是将MinDrawer.cs中所有的MinAttribute替换为UnityEngine.PostProcessing.MinAttribute即可。

演示视频
代码传送门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity3D脚本编程游戏开发源码提供了一种有效的方式来创建令人兴奋的游戏Unity3D是一款功能强大的游戏引擎,它允许开发者使用C#或JavaScript等脚本语言来编写游戏逻辑。 Unity3D脚本编程基于组件的设计模式。开发者可以在场景中添加各种组件,并使用脚本来控制它们的行为。例如,可以创建一个脚本来控制玩家角色的移动,另一个脚本来控制敌人的行为。这种模块化的设计使得开发过程更加灵活和可维护。 脚本编程也提供了一种可视化的方式来操纵游戏对象。Unity3D提供了一个强大的编辑器,开发者可以使用脚本来创建自定义的编辑器工具,这使得设计人员可以更轻松地进行游戏开发和调试。脚本编程还可以与其他功能强大的开发工具相结合,如动画和物理引擎,以创建更加逼真和令人印象深刻的游戏体验。 对于游戏开发源码来说,它是一种可供开发者学习和参考的资源。通过研究和了解游戏开发源码,开发者可以深入了解游戏开发的各个方面,包括游戏逻辑、资源管理、碰撞检测等。源码还可以帮助开发者提高编程设计技巧,并为他们提供创建自己游戏的灵感和指导。 总之,Unity3D脚本编程游戏开发源码提供了一种强大的工具和资源,帮助开发者创建令人兴奋和吸引人的游戏。它们对于游戏开发者来说是宝贵的资产,可以帮助他们实现创意,并创造出独一无二的游戏体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值