1 using UnityEngine; 2 using System.Collections; 3 4 ///5 /// 奖励 6 /// 7 public class Award : MonoBehaviour { 8 9 public int type = 0; //0 gun 1 explode10 11 public float speed = 1.5f;12 13 14 void Update(){15 this.transform.Translate( Vector3.down*Time.deltaTime*speed );16 if(this.transform.position.y<=-4.5f){17 Destroy(this.gameObject);18 }19 }20 }
1 using UnityEngine; 2 using System.Collections; 3 4 5 ///6 /// 背景移动 7 /// 8 public class BackgroundTransform : MonoBehaviour { 9 10 public static float moveSpeed = 2f;11 12 void Update () {13 this.transform.Translate( Vector3.down * moveSpeed * Time.deltaTime );14 Vector3 postion = this.transform.position;15 if(postion.y<=-8.52f){16 this.transform.position = new Vector3(postion.x,postion.y+8.52f*2,postion.z );17 }18 }19 }
1 using UnityEngine; 2 using System.Collections; 3 4 ///5 /// 子弹 6 /// 7 public class Bullet : MonoBehaviour { 8 9 public float speed = 2;10 11 // Update is called once per frame12 void Update () {13 transform.Translate( Vector3.up * speed *Time.deltaTime );14 if(transform.position.y>4.3f){15 Destroy(this.gameObject);16 }17 }18 19 void OnTriggerEnter2D(Collider2D other) {20 if(other.tag=="Enemy"){21 if(!other.GetComponent().isDeath){22 other.gameObject.SendMessage("BeHit");23 GameObject.Destroy(this.gameObject);24 }25 }26 }27 28 }
1 using UnityEngine; 2 using System.Collections; 3 4 public enum EnemyType{ 5 smallEnemy, 6 middleEnemy, 7 bigEnemy 8 } 9 10 ///11 /// 敌人12 /// 13 public class Enemy : MonoBehaviour {14 15 public int hp = 1;16 17 public float speed = 2;18 19 public int score = 100;20 21 public EnemyType type= EnemyType.smallEnemy;22 23 public bool isDeath = false;24 25 public Sprite[] explosionSprites;26 27 private float timer=0;28 29 public int explosionAnimationFrame=10;30 31 private SpriteRenderer render;32 33 public float hitTimer = 0.2f;34 private float resetHitTime ;35 36 public Sprite[] hitSprites;37 38 // Use this for initialization39 void Start () {40 render = this.GetComponent();41 42 resetHitTime=hitTimer;43 hitTimer=0;44 }45 46 // Update is called once per frame47 void Update () {48 this.transform.Translate( Vector3.down*speed*Time.deltaTime );49 if(this.transform.position.y<=-5.6f){50 Destroy(this.gameObject);51 }52 53 if(isDeath){54 timer+=Time.deltaTime;// 055 int frameIndex = (int)(timer/(1f/explosionAnimationFrame));56 if(frameIndex>=explosionSprites.Length){57 //destroy58 Destroy(this.gameObject);59 }else{60 render.sprite= explosionSprites[frameIndex];61 }62 }else{63 if(type==EnemyType.middleEnemy||type==EnemyType.bigEnemy){64 if(hitTimer>=0){65 hitTimer-=Time.deltaTime;66 67 int frameIndex = (int)((resetHitTime-hitTimer)/(1f/explosionAnimationFrame));68 frameIndex%=2;69 render.sprite= hitSprites[frameIndex];70 }71 }72 }73 }74 75 public void BeHit(){76 hp-=1;77 // explosion78 if(hp<=0){79 toDie();80 }else{81 hitTimer=resetHitTime;82 }83 }84 85 private void toDie(){86 if(!isDeath){87 isDeath=true;88 GameManager._instance.score+=score;89 }90 }91 }
1 using UnityEngine; 2 using System.Collections; 3 4 public enum GameState{ 5 Runing, 6 Pause 7 } 8 9 ///10 /// 游戏管理11 /// 12 public class GameManager : MonoBehaviour {13 14 public static GameManager _instance;15 16 public int score=0;17 18 private GUIText guiText;19 public GameState gameState = GameState.Runing;20 21 void Awake(){22 _instance=this;23 guiText=GameObject.FindGameObjectWithTag("ScoreGUI").GetComponent();24 }25 26 // Update is called once per frame27 void Update () {28 guiText.text="Score:"+score;29 }30 public void transfromGameState(){31 if(gameState==GameState.Runing){32 pauseGame();33 }else if(gameState==GameState.Pause){34 continueGame();35 }36 }37 38 public void pauseGame(){39 Time.timeScale=0;// time.delatTime = 040 gameState=GameState.Pause;41 }42 public void continueGame(){43 Time.timeScale=1;44 gameState=GameState.Runing;45 }46 }
1 using UnityEngine; 2 using System.Collections; 3 4 ///5 /// 游戏暂停 6 /// 7 public class GamePause : MonoBehaviour { 8 9 void OnMouseUpAsButton() {10 print ("click me!");11 GameManager._instance.transfromGameState();12 13 GetComponent().Play();14 }15 16 }
1 using UnityEngine; 2 using System.Collections; 3 4 ///5 /// 飞机的枪 6 /// 7 public class Gun : MonoBehaviour { 8 9 public float rate =0.2f;10 11 public GameObject bullet;12 13 14 public void fire(){15 GameObject.Instantiate(bullet,transform.position,Quaternion.identity );16 }17 18 public void openFire(){19 InvokeRepeating("fire",1,rate);20 }21 22 public void stopFire(){23 CancelInvoke("fire");24 }25 26 }
1 using UnityEngine; 2 using System.Collections; 3 4 ///5 /// 飞机 6 /// 7 public class Hero : MonoBehaviour { 8 9 public bool animation = true; 10 11 public int frameCountPersconds = 10; 12 13 public float timer = 0; 14 15 public Sprite[] sprites; 16 17 public float superGunTime = 10f; 18 19 public Gun gunTop; 20 public Gun gunLeft; 21 public Gun gunRight; 22 23 private float resetSuperGunTime ; 24 25 private SpriteRenderer spriteRender; 26 27 private bool isMouseDown = false; 28 29 private Vector3 lastMousePosition = Vector3.zero; 30 31 private Transform hero; 32 33 private int gunCount =1; 34 35 void Start(){ 36 spriteRender = this.GetComponent(); 37 hero = GameObject.FindGameObjectWithTag("Player").transform; 38 39 resetSuperGunTime = superGunTime; 40 superGunTime=0; 41 42 gunTop.openFire(); 43 } 44 45 // Update is called once per frame 46 void Update () { 47 if(animation){ 48 timer+=Time.deltaTime;// 1f/frameCountPersconds 49 int frameIndex = (int)(timer/(1f/frameCountPersconds)); 50 int frame = frameIndex%2; 51 spriteRender.sprite = sprites[frame]; 52 } 53 if(Input.GetMouseButtonDown(0)){ 54 isMouseDown=true; 55 } 56 if(Input.GetMouseButtonUp(0)){ 57 isMouseDown=false; 58 lastMousePosition = Vector3.zero; 59 } 60 if(isMouseDown && GameManager._instance.gameState==GameState.Runing ){ 61 if(lastMousePosition!=Vector3.zero){ 62 //Camera.main.ScreenToWorldPoint(Input.mousePosition) 63 //print (Camera.main.ScreenToWorldPoint(Input.mousePosition)); 64 Vector3 offset = Camera.main.ScreenToWorldPoint(Input.mousePosition) -lastMousePosition; 65 66 transform.position = transform.position+offset; 67 checkPosition(); 68 } 69 lastMousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); 70 } 71 superGunTime-=Time.deltaTime; 72 if(superGunTime>0){ 73 if(gunCount==1){ 74 transformToSuperGun(); 75 } 76 }else{ 77 if(gunCount==2){ 78 tranformToNormalGun(); 79 } 80 } 81 } 82 83 private void transformToSuperGun(){ 84 gunCount=2; 85 gunLeft.openFire(); 86 gunRight.openFire(); 87 gunTop.stopFire(); 88 } 89 private void tranformToNormalGun(){ 90 gunCount=1; 91 92 gunLeft.stopFire(); 93 gunRight.stopFire(); 94 gunTop.openFire(); 95 } 96 97 98 private void checkPosition(){ 99 //check x -2.22f +2.22f100 // check y -3.9 3.4101 Vector3 pos = transform.position;102 float x = pos.x;103 float y = pos.y;104 if(x<-2.22f){105 x=-2.22f;106 }107 if(x>2.22f){108 x=2.22f;109 }110 if(y<-3.9f){111 y=-3.9f;112 }113 if(y>3.4f){114 y=3.4f;115 }116 transform.position= new Vector3(x,y,0);117 }118 119 public void OnTriggerEnter2D(Collider2D collider){120 if(collider.tag=="Award"){121 GetComponent ().Play();122 Award award = collider.GetComponent ();123 if(award.type==0){124 //transform gun125 superGunTime=resetSuperGunTime;126 Destroy(collider.gameObject);127 }128 }129 }130 }
1 using UnityEngine; 2 using System.Collections; 3 4 ///5 /// 敌人孵化 6 /// 7 public class Spawn : MonoBehaviour { 8 9 public GameObject enemy0Prefab;10 public GameObject enemy1Prefab;11 public GameObject enemy2Prefab;12 13 14 public GameObject awardType0Prefab;15 public GameObject awardType1Prefab;16 17 public float enemy0Rate = 0.5f;18 public float enemy1Rate = 5f;19 public float enemy2Rate = 8f;20 21 public float awardType0Rate = 7;22 23 public float awardType1Rate = 10;24 25 // Use this for initialization26 void Start () {27 InvokeRepeating("createEnemy0",1,enemy0Rate);28 InvokeRepeating("createEnemy1",3,enemy1Rate);29 InvokeRepeating("createEnemy2",6,enemy2Rate);30 31 InvokeRepeating("createAwardType0",10,awardType0Rate);32 InvokeRepeating("createAwardType1",10,awardType1Rate);33 34 35 }36 37 // Update is called once per frame38 void Update () {39 40 }41 42 public void createEnemy0(){43 float x = Random.Range(-2.15f,2.15f);44 GameObject.Instantiate(enemy0Prefab,new Vector3(x,transform.position.y,0),Quaternion.identity);45 46 }47 public void createEnemy1(){48 float x = Random.Range(-2.04f,2.04f);49 GameObject.Instantiate(enemy1Prefab,new Vector3(x,transform.position.y,0),Quaternion.identity);50 51 }52 public void createEnemy2(){53 float x = Random.Range(-2.04f,2.04f);54 GameObject.Instantiate(enemy2Prefab,new Vector3(x,transform.position.y,0),Quaternion.identity);55 56 }57 58 59 public void createAwardType0(){60 GetComponent().Play();61 float x = Random.Range(-2.1f,2.1f);62 GameObject.Instantiate(awardType0Prefab,new Vector3(x,transform.position.y,0),Quaternion.identity);63 }64 public void createAwardType1(){65 GetComponent ().Play();66 float x = Random.Range(-2.1f,2.1f);67 GameObject.Instantiate(awardType1Prefab,new Vector3(x,transform.position.y,0),Quaternion.identity);68 }69 }
视频:https://pan.baidu.com/s/1jHTh3oy
项目:https://pan.baidu.com/s/1sljipdF