UnityVR--小程序7--坦克对战

在游戏中没有对手或敌人也是一件无聊的事,本文为主角增加一个敌人——坦克。坦克在场景中沿着自身坐标的Z轴来回巡视,并使用了物理系统的球形检测,如果主角走入坦克的检测范围内,则坦克将炮口瞄准主角,向主角发动攻击。

1. 加入坦克对象。坦克分成左、右轮子和炮口三个部分,坦克控制脚本(TankCtrl.cs)挂载在坦克根节点上。

2. 坦克加上Collider组件与Rigidbody组件,使用Sphere、Box、Capsule型的Collider都可以,需要调整Collider的位置与大小,符合坦克的大小。Rigidbody中需要勾选重力。

  

 3. TankCtrl.cs脚本,分3段。另外,在头文件中,需要引用UnityEngine.UI命名空间

(1)变量定义与Start()方法:

  (2)Update()方法:其中使用了物理系统的球形检测方法,检测以坦克为圆心,2为半径的范围内,rayCast层的碰撞体,因此,主角需要加入rayCast层,才会被坦克检测到。而如果有其他物体进入坦克检测范围内,由于不是rayCast层,就不会被坦克检测。

主角需要加入rayCast层:

 

  (3)可以使用Gizmos画出坦克的检测范围,方便调试。

 4. 坦克的子弹:制作方式与UnityVR--小程序3--金色的子弹1 中的子弹制作方式相同,挂载TankBullet.cs脚本,并保存为tankBullet.prefab预制体。TankBullet.cs如下图:

 5. 最后,别忘记在坦克的控制脚本TankCtrl.cs中设置公共变量:坦克速度和坦克子弹的预制体。也可以将坦克保存为预制体。

 以上,坦克部分就制作完成,接下来,需要修改一下主角的子弹脚本,这样主角的子弹就可以打坦克了。

6. 主角子弹脚本(修改后):BulletPlus.cs

补充:

如果坦克被消灭后,跳出几个金币的奖励,会让游戏变得更加趣味。方法如下:

1. 在Start()之前,增加定义一个公共变量,用于拖入金币的预制体Coin.prefab。别忘了,在脚本保存后,需要在Unity-Inspector界面中拖入金币的预制体

  

 2. 将TankCtrl.cs的最后一段,描述坦克分值小于零时的情况的脚本中,加入以下这段:

猜你喜欢

转载自blog.csdn.net/tangjieitc/article/details/125696267