U3D-亡命时速游戏制作(六)

本教程详细介绍了如何在Unity3D中为游戏《亡命时速》的敌方车辆PoliceCar添加损伤系统,包括无敌时间、生命数值、碰撞检测与响应,以及爆炸和烟雾等视觉特效的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

亡命时速游戏制作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.我们已经完成了小车的损伤系统。

敬请期待:亡命时速游戏制作(七)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值