Unity打飞机(四)敌机移动与触碰效果,和爆炸音效

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//枚举
public enum DownType{
	Small,Middle,Big,SuperBullet,Bomb
}
//敌机移动
public class EnemyAndSuperMove : MonoBehaviour {

	//设定枚举类型
	public DownType type = DownType.Small;
	//下落时间
	private float downTime = 5f;

	//血量
	public int HP = 1;

	//敌机是否爆炸
	private bool isBomb = false;

	//爆炸图片切换
	private SpriteRenderer reder;
	public Sprite[] EnemySprite;

	//爆炸时间
	private float bombTime;


	//被打图片切换
	public Sprite[] hitSprite;
	//被打图片切换间隔
	private float hitTime;

	//分数
	public static int num = 0;

	//爆炸音效
	private AudioSource audioSource;

	// Use this for initialization
	void Start () {
		reder = GetComponent<SpriteRenderer> ();
		audioSource = GetComponent<AudioSource> ();
	}
	
	// Update is called once per frame

	void Update () {
		//敌机移动并销毁超出屏幕的
		transform.Translate (Vector3.down * downTime * Time.deltaTime);
		if (transform.position.y < -4.5) {
			Destroy (gameObject);
		}

		//判断敌机是否爆炸
		if (isBomb) {
			bombTime += Time.deltaTime;
			int bt = (int)(bombTime / (1f / 10));
			if (bt >= EnemySprite.Length) {
				Destroy (gameObject);
				num++;
				ButtonAndText.num = num;
				isBomb = false;
			} else {
				reder.sprite = EnemySprite [bt];
			}

		} else {
			//判断是否为中和大飞机,实现被打图片切换
			if ((type == DownType.Middle || type == DownType.Big ) && hitTime > 0) {
				hitTime -= Time.deltaTime;
				int hs = (int)(hitTime / (1f / 10)) % 2;
				reder.sprite = hitSprite [hs];
			}
		}
	}

	//触发器
	void OnTriggerEnter2D(Collider2D other){
		
		if (other.tag == "Bullet" && (type != DownType.SuperBullet || type != DownType.Bomb)) { //判断是不是碰到子弹
			SubtractHP ();
		} else if (other.tag == "hero") { //判断是否触碰到飞机
			if (type == DownType.SuperBullet || type == DownType.Bomb) {//判断是不是空投触碰到敌机
				Destroy (gameObject);
			} 
		}

	}

	//减血
	void SubtractHP(){
		HP--;
		hitTime = 0.2f;
		if (HP < 0) {
			Destroy (gameObject.GetComponent<Rigidbody2D>());			
			//播放爆炸音效
			audioSource.Play ();
			EnemyBomb ();
		}
	}

	//挂掉
	public void EnemyBomb(){		
		isBomb = true;

	}

}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值