首页 理论教育武器系统-虚拟现实理论基础与应用开发实践

武器系统-虚拟现实理论基础与应用开发实践

【摘要】:图8-120公有变量初始化这里要注意的是,Tank Mask的选取必须是Players,否则后面子弹的爆炸将不会作用于坦克。图8-121FireTransform的transform设置2)发射子弹接下来就要实现子弹的发射功能,并且子弹可以蓄能,蓄能越久射击距离也就越长,因此也就需要有一个蓄能状态的指示。首先,选中Hierarchy层级下的Tank,为它新建一个子对象Create Empty,命名为FireTransform。该对象主要是规定子弹的射出位置。测试完毕之后,把Hierarchy层的Tank删除掉,保存当前场景。

1)创建子弹

本小节的目标是创建子弹,完善子弹的爆炸、音效等效果,并且利用脚本对子弹进行控制。

首先,在models文件夹下找到Shell模型,把它拖拽到Hierarchy根目录下,对它进行编辑:

(1)创建Capsule Collider,选择“Is Trigger”选项,把Direction选择为Z-Axis;更改Center的坐标为(0,0,0.2);更改Radius为0.15以及Height为0.55(见图8-117)。

Capsule Collider实际上是一个胶囊碰撞器,由一个圆柱体连接两个半球体组成,在上面修改了该碰撞器的半径以及高度后,可以观察到子弹的碰撞边界是这样的(见图8-118)。

图8-117 创建Capsule Collider

图8-118 子弹碰撞边界

(2)创建Rigidbody,为子弹添加刚体,因为子弹要与坦克产生碰撞,也就需要刚体。如果没有刚体,那么子弹就不会有物理效果。

(3)创建Light组件。

(4)在Prefabs文件夹下找到ShellExplosion预制件,拖拽它到Shell中,成为Shell的子对象。选择ShellExplosion,添加Audio Source,音效选择为ShellExplosion,取消勾选Play On Awake(见图8-119)。

图8-119 ShellExplosion预件设置

(5)在Scripts/Shell文件夹内,找到ShellExplosion脚本,把它拖拽到Shell下。该脚本控制了Shell的行为,双击打开该脚本,开始编辑。

接着,我们初始化该脚本使用的公有变量(见图8-120)。

图8-120 公有变量初始化

这里要注意的是,Tank Mask的选取必须是Players,否则后面子弹的爆炸将不会作用于坦克。

完成以上的步骤之后,把Shell拖拽到Prefabs文件夹下,成为预制件,然后删除掉Hierarchy根目录下的Shell,并保存当前场景。

图8-121 FireTransform的transform设置(www.chuimin.cn)

2)发射子弹

接下来就要实现子弹的发射功能,并且子弹可以蓄能,蓄能越久射击距离也就越长,因此也就需要有一个蓄能状态的指示。

首先,选中Hierarchy层级下的Tank,为它新建一个子对象 Create Empty,命名为FireTransform。该对象主要是规定子弹的射出位置。把FireTransform的transform设置为如图8-121所示。

接着,在Tank的Canvas下,新 建一个Slider,命 名为AimSlider。选定AimSlider,对它的Slider组件进行一些调整,如图8-122所示。①取消勾选Interactable;②Transition设置为None;③Direction设置为Bottom to Top;④Min Value设置为15;⑤Max Value设置为30;⑥Rect Transform属性可以通过拖动改变形状,也可以通过设置数值的形式指定,这里设置为(1,-9,-1,1,3)。

下一步是展开AimSlider的子对象,把其中的Background和Handle Slide Area删除,只保留Fill Area。同时选中AimSlider和Fill Area,单击Anchor Presets,按住Alt键以选中右下角的选项(见图8-123)。

展开Fill Area,选中Fill,把Height设置为0,Source Image选择为Aim Arrow(见图8-124)。

接下来就是利用脚本对坦克的射击行为作出控制,在/Scripts/Tank文件夹下找到Tank Shooting脚本,把它拖拽到Tank中,然后打开编辑它: 

图8-122 Slider组件参数设置

图8-123 AimSlider子对象设置

图8-124 Fill Area设置

图8-125 脚本公有变量赋值

接着,就是对脚本的公有变量进行赋值(见图8-125)。

完成初始化之后,单击右上角的Apply,使得改动在预制件中生效。

现在可以开始游戏测试一下了。测试完毕之后,把Hierarchy层的Tank删除掉,保存当前场景。