打飞机的脚本

//该脚本由于控制玩家


using UnityEngine;
using System.Collections;


public class OneScript : MonoBehaviour{
//一些玩家的基本数据
float playerSpeed = 5;
int hp = 1;
int damage = 1;


void Update()
{
float hor = Input.GetAxis("Horizontal");
float ver = Input.GetAxis("Vertical");
//控制飞机的移动
transform.position += new Vector3(hor * playerSpeed * Time.deltaTime, ver * playerSpeed * Time.deltaTime, 0 );
//限制飞机的移动距离
float X = transform.position.x;
float Y = transform.position.y;
X = Mathf.Clamp(X,(屏幕最左边),(屏幕最右边));
Y = Mathf.Clamp(Y,(屏幕最上边),(屏幕最下方));
transform.position  =new Vector3(X,Y,Transform.position.z);



//按下空格键发射子弹
if(Input.GetKeyDown(KeyCode.Space)){
Fire();
}

}
//子弹的预设体
public GameObject RocketPrefabs;
vopid Fire()
{
Instantiate(RocketPrefabs,transform.position,Quaternion.identity);
}
//
public GameObject explosionPrefab;
//玩家死亡,游戏结束
void Death()
{
if(hp <= 0)
{
GameObject gamecoll = GameObject.Find("GameController");
gamecoll.GetComponent<ThreeScript>().gameIsOver =  true;
//在玩家的地方产生爆炸的效果
instantiate(explosionPrefab, transform.position,Quaternion.identity);
销毁玩家的飞机
Destroy(gameObject);
}

}
}


//该脚本用来控制游戏屏幕的移动(注意一般需要两张屏幕)
using UnityEngine;
using System.Collections;


public class TwoScript: MonoBehaviour {
void Update(){
//屏幕的下降速度
transform.position += Vector3.down * 2 * Time.deltaTime;
//当屏幕下降到一定的高度的时候
if(transform.position.y <= (距离)){
//使屏幕回到起始点
transform.position = new Vector3(0,(距离),0); //注意距离需要自己去测量 
}
}
}




//该脚本用来控制游戏的进程
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;


public class ThreeScript: MonoBehaviour {
public bool gameIsOver = false;
void Start()
{
gameIsOver = false;
//游戏在进行
Time.timeScale = 1;


//开启协程,创建飞机
StartCoroutine( CreatEnemy());
}


void Update()
{
if(gameIsOver == true){
//游戏结束,时间暂停
Time.timeScale = 0;
}
}


//敌机的预制体
public GameObject enemyPrefab;

IEnumerator CreatEnemy()
{
//如果游戏尚未结束,每个1秒创建一个敌机
while(gameIsOver == false){
yield return new WaitForSeconds(1);
//敌机出现的位置
Vectoy3 enemyPosition  = new Vector3(Random.Range(屏幕最左边,屏幕最右边),(屏幕最上方),(与玩家的飞机持平));
Instantiate(enemyPrefab,enemyPosition,Quaternion.identity);

}
}

void OnGUI()
{
//游戏结束时确定是否重来
if(gameIsOver == true){
GUIStyle style = new GUIStyle();
//屏幕尺寸为50
style.fontSize = 50;
//中心对齐
style.alignment = TextAnchor.MiddleCenter;

GUI.Label (new Rect((Screen.width -100f)/2.0f,(Screen.height - 100f)/2.0f,100,100),"Game Over",style);
if (GUI.Button (new Rect (10, 10, 100, 50), "再来一次吧")) {
Debug.Log ("O(∩_∩)O好的");
SceneManager.LoadScene (0);
}



}
}
//该脚本用来控制敌机
using UnityEngine;
using System.Collections;


public class FourScrip : MonoBehaviour{
public int Hp = 1;
public int Damage = 1;
void Start () {
//敌机产生时旋转的角度
transform.eulerAngles = Vector3.left * 90f;
}

void Update () {
EnemyMove ();
Disappear ();
Death ();
}


//敌机移动
void EnemyMove(){
//已一定的速度下降
transform.position += new Vector3 (0,-1 * Time.deltaTime,0);
}


//超出屏幕 消失
void Disappear(){
if(transform.position.y < -9){
Destroy (gameObject);
}
}


//敌机被摧毁
public GameObject ExplosionPrefab;
void Death(){
if(Hp <=0){
//血量为零,产生爆炸,敌机消失
Instantiate (ExplosionPrefab,transform.position,Quaternion.identity);
Destroy (gameObject);
}
}


//触发检测
void OnTriggerEnter(Collider coll){
//判断触发的物体的tag值为
switch(coll.gameObject.tag){
case "rocket":
{


//1. 获取火箭的脚本 2. 通过脚本获取它的 Hp 和 Damage 3.火箭掉血, 敌机掉血
Hp -= coll.gameObject.GetComponent<FiveScript> ().damage;
coll.gameObject.GetComponent<FiveScript> ().hp -= Damage;
}
break;
case "Player":
{

//1. 获取玩家的脚本 2. 通过脚本获取它的 Hp 和 Damage 3.火玩家掉血, 敌机掉血
Hp -= coll.gameObject.GetComponent<OneScript > ().damage;
coll.gameObject.GetComponent<OneScript > ().hp -= Damage;
}
break;
default:
break;
}
}
}




//该脚本用于控制火箭的状态(与敌机的脚本相似)
using UnityEngine;
using System.Collections;
public class FiveScript : MonoBehaviour {


public int hp = 1;// 血量
public int damage = 1;//伤害值
void Start () {
transform.eulerAngles = Vector3.right * 90;
}
void Update () {
//火箭的移动速度和距离
transform.position += Vector3.up *10 * Time.deltaTime;
Disappear ();
Death ();
}
//火箭消失
void Disappear(){
//超出屏幕多少范围,火箭消失
if(transform.position.y > 9){
Destroy (gameObject);
}
}


//火箭销毁 并且 发生爆炸
public GameObject ExplosionPrefab;
void Death(){
if(Hp<=0){
Instantiate (ExplosionPrefab,transform.position,Quaternion.identity);
Destroy (gameObject);
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值