Unity 官方教程 Tanks (二)

坦克的血条

这一章我们现在制作坦克的血条,效果如图

我们先在场景里生成一个Slider,重命名,然后连着Canvas一起放在Tank下,删去HandleSliderArea,然后设置canvas如下

在这里把canvas把当成了一个UI来处理,在前面的教程Survival  Shooter中给主句加血条也用到了。然后设置Slider,我们选中HealthSlider、Background、Fill Area、Fill,点击Anchor Presets,按住ALT选中右下角的选项,将每一个子物体都充满父物体。

设置HealthSlider,Interactable表示不可使用,即不能用手去滑动,我们知道普通的slider可以手动调节的。然后设置最大值为100。

HealthSlider

Background,设置图片,color的透明度为80

background

Fill:color的透明度为150,ClockWise表示是否时顺时针。

Fill

制作好后看到是这样的

我们将HealthSlider的Value设为50,这样方便观察,然后运行(这里将上一章测试生成的第二个Tank删去,CameraRig下挂在的CameraControl中的tank2也去掉),发现有个报错

意思是输入没有设置,我们将EventSystem设置如下

然后发现生命条跟随坦克一起旋转了,我们打开UIDirectionControl.cs,拖入HealthSlider下

接下来我们来控制血条的内容。打开TankHealth.cs

现在需要制作爆炸特效和音效,找到TankExplosion,拖入场景,添加Audio Source,设置如下,然后apply

接下来完善TankHealth.cs

这些很好理解,受伤时生命值降低,并显示再血条上,低于0时,有爆炸特效和音效。然后拖入需要的东西。

制作炮弹

在models文件夹下找到Shell,拖入场景中,因为这个炮弹是要碰撞其他的物体的,加上CapsuleCollider胶囊碰撞体,设置如下:

找到ShellExpolsion,在Shell下加上,加上Audio Source,设置如下:

因为不是炮弹一出现就播放爆炸的声音,所以play on Awake 不勾上。

炮弹暂时就制作到这,我们把它放进Prefabs文件夹下制成预制物。

我们打开TankShooting.cs,先注释掉m_AimSlider,暂时不用它,我们要做的是按住开火键(Fire),松开时开火,按住时间越长,炮弹的力量就越大。但是有个最大蓄力时间,时间到了会自动开火。

我们在update里加上如下的方法,通过判断按钮状态来执行对应的操作,注意有三个不同的按下的方法。

接下来我们处理Fire的方法,即在发射口实例化一个炮弹,并配上开火音效。

试一下吧

一开火,炮弹自己往下掉了,我们肯定能想到要把蓄力的数值赋予它,给他一个初速度。

再试一次,可以正常的发射炮弹,并且按住发射键越长,炮弹飞的越远啦。

蓄力指示条

只凭感觉很难把握我们蓄力了多久,我们现在加上蓄力的指示条。在Tank的Canvas下加上一个Slider控件,取名为AimSlider,删去不用的BackGround和Handle Slide Area。

控件里设置如下:

我们在TankShooting.cs里加上

让Slider的初始值为蓄力的初始值。接下来我们只要在蓄力的时候让当前力赋予Slider的value就行了,同时要保证没有蓄力时value为初始值。

最后在Tank Shooting的代码的组件里拖入Slider就可以啦。试一下吧

你可能感兴趣的:(Unity 官方教程 Tanks (二))