亡命时速游戏制作6
1.在亡命时速游戏制作5的基础上,这次我们要给敌人制作一些损伤系统。
找到在GameScene中的PoliceCar,单击右键选择Duplicate,复制一辆警车,然后在场景中将其用鼠标拖到PoliceCar的右边。这时候,你运行的话,你会发现有两辆小车碰在一起并跟着前面的小车,在相互追逐。
2.我们创建一个损伤脚本,在Scripts下创建一个C#脚本,取名为Damage。我们把Damage的脚本加到PoliceCar上,双击Damage进行编辑。
代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Damage : MonoBehaviour{
[SerializeField]
private float invincibleTime = 2; //创建个浮点无敌时间
[SerializeField] //将生命数值序列化,以便我们在监视面板中编辑它
private int life =3; //创建生命力字段,默认为3,用来决定车辆可以碰撞几次
private float currentInvincibleTime; //用来追踪剩余的无敌时间
private int currentLife; //创建当前生命,用来检查敌人剩余可以撞击多少次
private bool isColliding =false; //当敌人车辆同另外一个敌人车辆碰撞的时候正在碰撞(isColliding)会被调用
//Use this for initialization
void Start(){
currentLife = life; //开始时,满生命值
}
//Update is called once per frame
void Update(){
if(Colliding==true) //当碰撞的时候,减少无敌时间
{
currentInvincibleTime -= Time.deltaTime;
if(currentInvincibleTime <= 0)
{
ReduceLife();
}
}
}
//互相碰撞时减少生命
private void OnCollisionStay(Collision other) //当两个物体碰撞时会调用函数(碰撞逗留)
{
if(other.collider.CompareTag("Enemy")) //比较标签是否为Enemy
{
isColliding = true;
}
}
private void OnCollisionExit(Collision other)
{
if(other.collider.CompareTag("Enemy")) //比较标签是否为Enemy
{
isColliding = false;
}
}
public void ReduceLife()
{
currentLife--;
currentInvincibleTime = invincibleTime;
if(currentLife <= 0) //如果生命值小于0,就调用一个信息函数
{
Debug.Log("Enemy Destroyed"); //停用这个游戏对象
gameObject.SetActive(false); //设置活动状态为否
}
}
}
3.保存代码,然后返回到unity 3d中。我们在GameScene中找到PoliceCar,点击一下,在其右边找到Apply,进行点击。
4.我们此时可以运行一下,我们可以发现当后面的两辆当碰撞一定次数后会消失。此时我们可以让相关信息进行显示。点击PoliceCar,在其右边,点击右上角的小三角处,点击Debug,然后我们可以在Damage中看到相关信息。
5.接着,我们要创建一些特效,需要对原来的脚本的代码进行修改,补充。需要补充的地方,在下图中,我做了标记,为行号处为黄色的地方。
6.保存代码后,我们继续回到unity 3d中,将PoliceCar1删去,点击PoliceCar,右键单击选择Create empty,然后将创建的空物体改回Normal的状态,并将其名称改为FX,我们把效果存在FX中。
7.我们先找到Prefabs文件夹,然后将其中的FX_Fire拖到FX中。
然后双击FX_Fire,在场景中将其拖到如图位置,然后将其停用;同理,将FX_Smoke拖到FX中,对其进行与FX_Fire相同的操作。
8.点击PoliceCar,将效果拖到对应的位置上。
9.将爆炸效果直接拖到GameScene中,然后在其右边Particle System,点击右上角的小三角,选择Remove Component,将这个组件移除掉。并将其改名为Explosion。
10.将Explosion拖到下方的Prefabs文件夹中,然后删去。
11.将爆炸效果拖到PoliceCar的对应位置上,如图。
12.我们像先前一样复制PoliceCar,得到PoliceCar1,并在场景中将其拖到右边。
13.此时,我们运行一下场景,就可以看到小车追逐过程中会有一些效果。
我们此时可以再做一些修改(如下图所示):
14.我们已经完成了小车的损伤系统。
敬请期待:亡命时速游戏制作(七)