《Unity 3D人工智能编程》——2.1 玩家的坦克

简介:

本节书摘来自华章出版社《Unity 3D人工智能编程》一 书中的第2章,第2.1节,作者:(美)基奥(Kyaw,A.S.),(美)彼得斯(Peters,C.),(美)斯瑞(Swe,T.N.),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.1 玩家的坦克

在为玩家的坦克编写脚本之前,我们先看看如何设置PlayerTank游戏对象。我们的坦克对象基本上是一个带有刚体组件和盒碰撞器组件的简单网格(Mesh)。坦克对象不是一个单独的网格,而是由坦克和炮塔两个网格组成。为了允许炮塔对象根据鼠标运动独立转动,我们将炮塔设为坦克的子对象。同时,因为它是坦克的子对象,所以无论坦克去哪,它都会一直跟随坦克。然后创建一个空游戏对象作为SpawnPoint转换。当我们射出一颗子弹时,这将会作为一个位置参照点。我们还需要给坦克对象赋一个Player标签。以上就是坦克实体的设置方法。接下来将学习控制器类。

坦克实体

2.1.1  PlayerTankController类

这个类将成为玩家控制坦克对象的主要手段。我们将使用W、A、S和D键移动与操纵坦克,用鼠标左键瞄准与射击炮塔对象。
Unity只知道如何在标准QWERTY键盘布局下工作。对于我们这些使用不同类型键盘的玩家,所要做的就是模拟使用QWERTY键盘的情况,然后一切问题迎刃而解。本书默认使用QWERTY键盘和鼠标左键为主按键的两键鼠标。

2.1.2 初始化

我们的TankController类的属性如下。首先,建立Start函数和Update函数。
PlayerTankController.cs 文件如下所示:

坦克实体的第一个子对象是炮塔对象,炮塔对象的第一个子对象是bullet-SpawnPoint。Start函数找到这些对象,然后将它们赋值到各自对应的变量。在我们创造子弹对象之后,就赋值子弹变量。同时我们还会包含Update函数,并在其中调用即将创建的UpdateControl函数和UpdateWeapon函数。

  1. 射击子弹
    每当玩家点击鼠标左键时,我们都会检查自上次射击到现在过去的时间是否超过了武器的射击速率。如果是,那么在SpawnPoint变量的位置创建一个新的Bullet对象。通过这种方法,我们可以避免没有任何限制的连续射击行为。
  2. 控制坦克
    游戏中玩家要使用鼠标控制炮塔(Turret)对象的旋转,这个部分有点棘手。我们的摄像机(Camera)将会俯视战场。随后,我们将基于mousePosition对象在战场上的位置,使用光线投射的方法来确定要转动的方向。

通过光线投射来使鼠标瞄准
它的工作流程如下:
1)设置一个平面,与玩家的坦克相交于一个向上的法线。
2)在屏幕空间中以鼠标位置发射一条射线(在上图中假设我们俯视着坦克)。
3)找到这条射线与平面的交叉点。
4)最后,找到从当前位置到该交点所要旋转的角度。
然后检查按键输入,并据此相应地移动或旋转坦克。

相关文章
|
3月前
|
人工智能 数据可视化 定位技术
不会编程也能体验的 AI 魔法,外滩大会代码原生地等你解锁
不会编程也能体验的 AI 魔法,外滩大会代码原生地等你解锁
440 39
|
3月前
|
存储 消息中间件 人工智能
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
143 3
|
3月前
|
人工智能 运维 监控
让天下没有难查的故障:2025 阿里云 AI 原生编程挑战赛正式启动
本次大赛由阿里云主办,云原生应用平台承办,聚焦 Operation Intelligence 的智能运维(AIOps)赛道,为热爱 AI 技术的开发者提供发挥创意和想象力的舞台,借助 LLM 强大的推理能力与标准化整合的多源可观测数据,找到 AI 应用在智能运维(AIOps)场景上的新方式。
526 31
|
4月前
|
人工智能 自然语言处理 搜索推荐
AI Compass前沿速览:Qoder Agentic编程、vivo Vision头显、AIRI桌面伴侣、RM-Gallery奖励模型平台
AI Compass前沿速览:Qoder Agentic编程、vivo Vision头显、AIRI桌面伴侣、RM-Gallery奖励模型平台
AI Compass前沿速览:Qoder Agentic编程、vivo Vision头显、AIRI桌面伴侣、RM-Gallery奖励模型平台
|
3月前
|
人工智能 算法 小程序
再见 Cursor,Qoder 真香!这波要改写 AI 编程格局
真心建议大家去使用一下这段时间最新推出的一款 AI 编程工具:Qoder 。真的是太好用了,一点也不比 Cursor 差。
976 10
|
2月前
|
存储 人工智能 JSON
揭秘 Claude Code:AI 编程入门、原理和实现,以及免费替代 iFlow CLI
本文面向对 AI Coding 感兴趣的朋友介绍 Claude Code。通过此次分享,可以让没有体验过的快速体验,体验过的稍微理解其原理,以便后续更好地使用。
1072 18
揭秘 Claude Code:AI 编程入门、原理和实现,以及免费替代 iFlow CLI
|
3月前
|
存储 消息中间件 人工智能
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
305 10
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
|
3月前
|
存储 消息中间件 人工智能
【05】AI辅助编程完整的安卓二次商业实战-消息页面媒体对象(Media Object)布局实战调整-按钮样式调整实践-优雅草伊凡
【05】AI辅助编程完整的安卓二次商业实战-消息页面媒体对象(Media Object)布局实战调整-按钮样式调整实践-优雅草伊凡
138 11
【05】AI辅助编程完整的安卓二次商业实战-消息页面媒体对象(Media Object)布局实战调整-按钮样式调整实践-优雅草伊凡
|
2月前
|
人工智能 JSON 安全
Claude Code插件系统:重塑AI辅助编程的工作流
Anthropic为Claude Code推出插件系统与市场,支持斜杠命令、子代理、MCP服务器等功能模块,实现工作流自动化与团队协作标准化。开发者可封装常用工具或知识为插件,一键共享复用,构建个性化AI编程环境,推动AI助手从工具迈向生态化平台。
517 1

热门文章

最新文章