Unity3D-塔防游戏项目主要源码(防御塔导弹脚本)
2017-09-08 19:46
239 查看
using UnityEngine; using System.Collections; namespace TowerDefenceTemplate { public class Rocket : MonoBehaviour { [HideInInspector] public GameObject Target;//导弹的射击目标 [HideInInspector] public float Damage;//伤害值 private bool Exploded;//是否已经爆炸 private GameManager gameManager;//实例化游戏管理器的对象 public GameObject Body;//激活导弹体 public EllipsoidParticleEmitter Explosion;//实例化例子系统的对象 public ParticleSystem Smoke;//实例化分系统的对象,产生一个在飞行期间冒烟的效果 public int RocketSpeed;//导弹的移动速度 void Start() { gameManager = FindObjectOfType<GameManager>();//获取脚本 if (gameManager == null) { enabled = false; } } void Update() { Fly(); if (Target != null) { AimAtTarget(); } } void Fly() { transform.Translate(transform.forward * Time.deltaTime * RocketSpeed,Space.World); } void AimAtTarget()//跟踪目标 { Quaternion TargetRotation = Quaternion.LookRotation(Target.transform.position - transform.position);//定义一个跟踪旋转四元数 transform.rotation = Quaternion.RotateTowards(transform.rotation, TargetRotation, Time.deltaTime * 1000);//导弹做跟踪旋转 if (Vector3.Distance(transform.position, Target.transform.position) < 3 && !Exploded)//如果导弹与目标之间的距离小于3并且导弹还没爆炸 { Explode();//让它爆炸 } } void GetParentingBack()//回收导弹 { Explosion.transform.parent = transform;//把自己的位置赋值给粒子系统爆炸的位置的父物体 Explosion.transform.position = transform.position;//自身的坐标赋值给爆炸点的坐标 Smoke.Play();//分系统冒烟执行 Body.SetActive(true);//导弹体激活 gameObject.SetActive(false);//所有炮塔互不影响 Exploded = false;//设置没有爆炸 } void Explode()//爆炸 { Target.transform.SendMessage("GetDamage", Damage);//目标受到伤害 Exploded = true;//已经爆炸 gameManager.RocketExplosionSound.Play();//播放导弹爆炸音效 Explosion.Emit();//调用粒子系统 Explosion.transform.parent = null;//爆炸粒子位置的父物体设置为空 Smoke.Stop();//冒烟停止 Target = null;//目标为空 Invoke("GetParentingBack", 0.9f);//0.9s后执行方法GetParentingBack, Body.SetActive(false);//导弹体失活 } } }
相关文章推荐
- Unity3D-塔防游戏项目主要源码(防御塔炮弹脚本)
- Unity3D-塔防游戏项目主要源码(防御塔脚本)
- Unity3D-塔防游戏项目主要源码(游戏主控器脚本)
- Unity3D-塔防游戏项目主要源码(游戏UI界面控制器脚本)
- Unity3D-塔防游戏项目主要源码(游戏主菜单脚本)
- Unity3D-塔防游戏项目主要源码(敌方炮车脚本)
- [Unity3D]手机3D游戏开发:简单的移动和缩放鼠标手势脚本源码
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(九)----使用PreviewLabs插件提速与完整的项目源码
- Unity3D 篮球游戏 上线项目源码
- [Unity3D]Unity3D游戏开发之塔防游戏项目讲解(上)
- [Unity3D]手机3D游戏开发:关于自定义Joystick的相关设置和脚本源码
- 小鳄鱼闯关游戏源码完整版项目开发
- 守护者Defender游戏源码项目
- Unity3D【脚本】 按键盘Esc弹出退出面板 确定退出游戏 取消关闭面板
- “QQ找茬”游戏的识别小软件JAVA源码(netBeams项目)
- Unity3D研究:如何更合理的架构你的游戏脚本
- 一、Unity3D 5.0.1-示例项目“汽车游戏”的展示及开发准备
- unity3D 制作3D塔防游戏(二) 制作敌人行走路径 无限循环
- 不错的找茬游戏源码项目
- 年年有鱼游戏Android源码项目