《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)最后,找到从当前位置到该交点所要旋转的角度。
然后检查按键输入,并据此相应地移动或旋转坦克。

相关文章
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
AI编程助手对比
AI编程助手对比
|
21天前
|
人工智能 算法 搜索推荐
首个AI编程助手入职科技公司:探索与应用新技术
随着人工智能技术的不断进步和应用,AI编程助手作为其中的一项创新成果,正逐渐走进科技公司的开发环节。就在近日,通义灵码作为首个AI编程助手入职阿里云,为开发人员提供全流程的代码辅助服务。这一新技术的引入引发了广泛关注,这一新技术的引入,既带来了便利和效率的提升,也引发了人们对于人机协作、智能辅助的思考。因为传统的开发模式下,程序员们需要不断投入大量的时间和精力来编写、调试和优化代码,这使得大家在核心业务代码编写方面面临着时间压力,但是随着AI编程助手的加入,情况发生了很大变化。那么本文就来探讨如何看待首个AI编程助手入职科技公司,并分享个人对通义灵码的使用感受。
37 2
首个AI编程助手入职科技公司:探索与应用新技术
|
3月前
|
Web App开发 人工智能 自然语言处理
【人工智能时代】AI赋能编程 | 自动化工具助力高效办公
【人工智能时代】AI赋能编程 | 自动化工具助力高效办公
【人工智能时代】AI赋能编程 | 自动化工具助力高效办公
|
2月前
|
人工智能 自然语言处理 算法
国产新型AI编程助手—DevChat AI插件在VSCode中的应用
国产新型AI编程助手—DevChat AI插件在VSCode中的应用
|
8天前
|
人工智能 运维 自然语言处理
对话蚂蚁李建国:当前AI写代码相当于L2.5,实现L3后替代50%人类编程
超70%代码问题,单纯靠基座大模型是解决不了的;未来3-5年,人类50%编程工作可以被替代,有些环节甚至完全自动化。蚂蚁集团代码大模型CodeFuse负责人李建国说道。当下,AI代码生成领域正在野蛮式生长,巨头涌入,AI员工频频上线企业;首个AI程序员Devin被曝造假…… 面对风起云涌的代码生成变革,李建国给出了这样一个明确论断。
28 0
|
14天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
161 10
|
20天前
|
人工智能 算法 安全
AI编程发展预测:未来趋势与潜在变革
AI编程发展预测:未来趋势与潜在变革
30 4
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
AI编程发展历史回顾:从孕育到普及的演进轨迹
AI编程发展历史回顾:从孕育到普及的演进轨迹
30 4
|
21天前
|
人工智能 自然语言处理 Cloud Native
通义灵码×西安交通大学携手打造“云工开物-高校训练营”,解锁 AI 时代编程学习与实战
阿里云与西安交通大学计算机学院携手打造的“云工开物-高校训练营”,带你走近 AI 编程助手“通义灵码”。
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
通义灵码回答:如何看待首个 AI 编程助手入职科技公司?
通义灵码回答:如何看待首个 AI 编程助手入职科技公司?
23 1