U3D-亡命时速游戏制作(六)
亡命时速游戏制作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 initializationvoid Start(){currentLife = life; //开始时,满生命值}//Update is called once per framevoid 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.我们已经完成了小车的损伤系统。
敬请期待:亡命时速游戏制作(七)
U3D-亡命时速游戏制作(六)相关推荐
- U3D-亡命时速游戏制作(三)
亡命时速游戏制作3 1.在亡命时速游戏2的基础上,我们在Project中新建一个Scripts的文件夹,用于存放之后我们要写的脚本. 2.我们打开在mmmm文件下的子文件夹Vehicles,选择车辆1 ...
- U3D-亡命时速游戏制作(五)
亡命时速游戏制作5 1.在亡命时速游戏制作4的基础上,这次我们要来添加敌人. 首先,在Settings下的Vehicles,选择veh_car1,将其拖到GameScene中,并在Scene场景中将其 ...
- U3D-亡命时速游戏制作(二)
亡命时速游戏制作: (二): 1.保存(一)中的已经导入素材资源后的游戏场景,文件名随意,推荐取名为GameScene.(file---->save scenes) 2.找到菜单栏中的Windo ...
- U3D-亡命时速游戏制作(一)
亡命时速游戏制作: (一): 1.打开Unity 3d, 新建一个项目. 2.打开屏幕左上角的file,选择Build Settings,然后选择Android平台,点击Switch Platform ...
- U3D-亡命时速游戏制作(四)
亡命时速游戏制作4 1.在亡命时速游戏制作3的基础上,我们发现小车在运行时容易跑到屏幕外面,我们此时就无法观察,因此我们要使相机跟随小车的运动. 我们选择主摄像机(Main Camera),将它的Po ...
- html5游戏制作入门系列教程(六)
我们继续这一系列文章,使用HTML5的canvas组件进行游戏开发.今天,我们将创建我们的第一个完整的游戏 – 打砖块.在这一课中,我会告诉你如何检测基本的碰撞和HTML5的本地存储.您可以使用鼠标和 ...
- 微信小游戏制作坦克大战(六)碰撞检测,主角坦克碰到敌方坦克、炮弹爆炸
微信小游戏制作坦克大战(六)碰撞检测,主角坦克碰到敌方坦克.炮弹爆炸 导入坦克爆炸效果的图片和声音素材 给主角坦克添加事件 给爆炸动画添加事件 当主角坦克碰到敌方坦克或者炮弹时显示爆炸效果 下一篇文章 ...
- 【Unity】U3D TD游戏制作实例(一)创建敌人、加载预制件
文章目录 前言 本章实现效果 场景和敌人 文件目录结构 场景层次结构(Hierarchy) 处理模型 指定GameScript脚本 运行游戏 前言 TD(炮台防守)类游戏是比较经典的游戏类型,当年在 ...
- Ruby‘s Adventrue游戏制作笔记(十六)Unity子弹数量及其UI
Ruby's Adventrue游戏制作笔记(十六)Unity子弹数量及其UI 前言 一.创建新的UI 二.编辑脚本 三.创建获得子弹的道具 系列链接 前言 本文章是我学习Unity官方项目项目所做笔 ...
最新文章
- 消息幂等(去重)通用解决方案,真顶!
- 德鲁克管理思想:管理的7大理论、43条原则,每一条都是精华
- 迭代法求解线性方程组
- 对accuracy、precision、recall、F1-score、ROC-AUC、PRC-AUC的一些理解
- GRUB基本使用介绍
- 11个三相异步电动机常见故障与维修方法。
- 深入解读EOS源代码之——区块链内核
- 闲着无聊,今天就写个 dockerfile 定制 tomcat+nginx 集群
- 质问微软 WP8.1开发HTTPS 真费劲
- Eclipse 控制console
- opacity透明度兼容性 css/js/query三种
- linux+sasl认证失败,51CTO博客-专业IT技术博客创作平台-技术成就梦想
- github 分支 合并
- 区块链清明上河图 2018Q3
- OA流程 工作流设计
- Codevs 1066 引水入城 2010年NOIP全国联赛提高组 BFS + 贪心
- 求解马走棋问题(回溯法)
- Qt对话框的事件循环分析(子线程中不能创建UI窗体分析2)
- ubuntu 更换国内源各大站点速度排名(江苏地区)
- 当前打印机不可用,请选择其他打印机
热门文章
- 如何解决margin塌陷以及margin合并
- matlab鼠标光标变黑,技术员应对win7系统鼠标光标变成黑色方块了的解决办法
- cisco中的管道符号(include begin section)
- 劲舞团连接服务器中断,劲舞团与服务器中断连接的解决办法有哪些?
- 图论——AOV网络及拓扑排序
- AUTOCAD——快速计算器
- 大型扫码点餐小程序系统源码
- php plog使用,pLog安装在PHP5下无法进入管理界面问题的解决
- 绘制二元正态分布的密度函数图和等高线图MATLAB
- The bean ‘xxImpl‘ could not be injected as a ‘xxx‘ because it is a JDK dynamic proxy that implements