S老师 打飞机 学习

using UnityEngine;
using System.Collections;
/// <summary>
/// 奖励
/// </summary>
public class Award : MonoBehaviour {
; //0 gun 1 explode
public float speed = 1.5f;
void Update(){
this.transform.Translate( Vector3.down*Time.deltaTime*speed );
if(this.transform.position.y<=-4.5f){
Destroy(this.gameObject);
}
}
}
Award
using UnityEngine;
using System.Collections;
/// <summary>
/// 背景移动
/// </summary>
public class BackgroundTransform : MonoBehaviour {
public static float moveSpeed = 2f;
void Update () {
this.transform.Translate( Vector3.down * moveSpeed * Time.deltaTime );
Vector3 postion = this.transform.position;
if(postion.y<=-8.52f){
,postion.z );
}
}
}
BackgroundTransform
using UnityEngine;
using System.Collections;
/// <summary>
/// 子弹
/// </summary>
public class Bullet : MonoBehaviour {
;
// Update is called once per frame
void Update () {
transform.Translate( Vector3.up * speed *Time.deltaTime );
if(transform.position.y>4.3f){
Destroy(this.gameObject);
}
}
void OnTriggerEnter2D(Collider2D other) {
if(other.tag=="Enemy"){
if(!other.GetComponent<Enemy>().isDeath){
other.gameObject.SendMessage("BeHit");
GameObject.Destroy(this.gameObject);
}
}
}
}
Bullet
using UnityEngine;
using System.Collections;
public enum EnemyType{
smallEnemy,
middleEnemy,
bigEnemy
}
/// <summary>
/// 敌人
/// </summary>
public class Enemy : MonoBehaviour {
;
;
;
public EnemyType type= EnemyType.smallEnemy;
public bool isDeath = false;
public Sprite[] explosionSprites;
;
;
private SpriteRenderer render;
public float hitTimer = 0.2f;
private float resetHitTime ;
public Sprite[] hitSprites;
// Use this for initialization
void Start () {
render = this.GetComponent<SpriteRenderer>();
resetHitTime=hitTimer;
hitTimer=;
}
// Update is called once per frame
void Update () {
this.transform.Translate( Vector3.down*speed*Time.deltaTime );
if(this.transform.position.y<=-5.6f){
Destroy(this.gameObject);
}
if(isDeath){
timer+=Time.deltaTime;
int frameIndex = (int)(timer/(1f/explosionAnimationFrame));
if(frameIndex>=explosionSprites.Length){
//destroy
Destroy(this.gameObject);
}else{
render.sprite= explosionSprites[frameIndex];
}
}else{
if(type==EnemyType.middleEnemy||type==EnemyType.bigEnemy){
){
hitTimer-=Time.deltaTime;
int frameIndex = (int)((resetHitTime-hitTimer)/(1f/explosionAnimationFrame));
frameIndex%=;
render.sprite= hitSprites[frameIndex];
}
}
}
}
public void BeHit(){
hp-=;
// explosion
){
toDie();
}else{
hitTimer=resetHitTime;
}
}
private void toDie(){
if(!isDeath){
isDeath=true;
GameManager._instance.score+=score;
}
}
}
Enemy
using UnityEngine;
using System.Collections;
public enum GameState{
Runing,
Pause
}
/// <summary>
/// 游戏管理
/// </summary>
public class GameManager : MonoBehaviour {
public static GameManager _instance;
;
private GUIText guiText;
public GameState gameState = GameState.Runing;
void Awake(){
_instance=this;
guiText=GameObject.FindGameObjectWithTag("ScoreGUI").GetComponent<GUIText>();
}
// Update is called once per frame
void Update () {
guiText.text="Score:"+score;
}
public void transfromGameState(){
if(gameState==GameState.Runing){
pauseGame();
}else if(gameState==GameState.Pause){
continueGame();
}
}
public void pauseGame(){
Time.timeScale=;// time.delatTime = 0
gameState=GameState.Pause;
}
public void continueGame(){
Time.timeScale=;
gameState=GameState.Runing;
}
}
GameManager
using UnityEngine;
using System.Collections;
/// <summary>
/// 游戏暂停
/// </summary>
public class GamePause : MonoBehaviour {
void OnMouseUpAsButton() {
print ("click me!");
GameManager._instance.transfromGameState();
GetComponent<AudioSource>().Play();
}
}
GamePause
using UnityEngine;
using System.Collections;
/// <summary>
/// 飞机的枪
/// </summary>
public class Gun : MonoBehaviour {
public float rate =0.2f;
public GameObject bullet;
public void fire(){
GameObject.Instantiate(bullet,transform.position,Quaternion.identity );
}
public void openFire(){
InvokeRepeating(,rate);
}
public void stopFire(){
CancelInvoke("fire");
}
}
Gun
using UnityEngine;
using System.Collections;
/// <summary>
/// 飞机
/// </summary>
public class Hero : MonoBehaviour {
public bool animation = true;
;
;
public Sprite[] sprites;
public float superGunTime = 10f;
public Gun gunTop;
public Gun gunLeft;
public Gun gunRight;
private float resetSuperGunTime ;
private SpriteRenderer spriteRender;
private bool isMouseDown = false;
private Vector3 lastMousePosition = Vector3.zero;
private Transform hero;
;
void Start(){
spriteRender = this.GetComponent<SpriteRenderer>();
hero = GameObject.FindGameObjectWithTag("Player").transform;
resetSuperGunTime = superGunTime;
superGunTime=;
gunTop.openFire();
}
// Update is called once per frame
void Update () {
if(animation){
timer+=Time.deltaTime;// 1f/frameCountPersconds
int frameIndex = (int)(timer/(1f/frameCountPersconds));
;
spriteRender.sprite = sprites[frame];
}
)){
isMouseDown=true;
}
)){
isMouseDown=false;
lastMousePosition = Vector3.zero;
}
if(isMouseDown && GameManager._instance.gameState==GameState.Runing ){
if(lastMousePosition!=Vector3.zero){
//Camera.main.ScreenToWorldPoint(Input.mousePosition)
//print (Camera.main.ScreenToWorldPoint(Input.mousePosition));
Vector3 offset = Camera.main.ScreenToWorldPoint(Input.mousePosition) -lastMousePosition;
transform.position = transform.position+offset;
checkPosition();
}
lastMousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
superGunTime-=Time.deltaTime;
){
){
transformToSuperGun();
}
}else{
){
tranformToNormalGun();
}
}
}
private void transformToSuperGun(){
gunCount=;
gunLeft.openFire();
gunRight.openFire();
gunTop.stopFire();
}
private void tranformToNormalGun(){
gunCount=;
gunLeft.stopFire();
gunRight.stopFire();
gunTop.openFire();
}
private void checkPosition(){
//check x -2.22f +2.22f
// check y -3.9 3.4
Vector3 pos = transform.position;
float x = pos.x;
float y = pos.y;
if(x<-2.22f){
x=-2.22f;
}
if(x>2.22f){
x=2.22f;
}
if(y<-3.9f){
y=-3.9f;
}
if(y>3.4f){
y=3.4f;
}
transform.position= );
}
public void OnTriggerEnter2D(Collider2D collider){
if(collider.tag=="Award"){
GetComponent<AudioSource>().Play();
Award award = collider.GetComponent<Award>();
){
//transform gun
superGunTime=resetSuperGunTime;
Destroy(collider.gameObject);
}
}
}
}
Hero
using UnityEngine;
using System.Collections;
/// <summary>
/// 敌人孵化
/// </summary>
public class Spawn : MonoBehaviour {
public GameObject enemy0Prefab;
public GameObject enemy1Prefab;
public GameObject enemy2Prefab;
public GameObject awardType0Prefab;
public GameObject awardType1Prefab;
public float enemy0Rate = 0.5f;
public float enemy1Rate = 5f;
public float enemy2Rate = 8f;
;
;
// Use this for initialization
void Start () {
InvokeRepeating(,enemy0Rate);
InvokeRepeating(,enemy1Rate);
InvokeRepeating(,enemy2Rate);
InvokeRepeating(,awardType0Rate);
InvokeRepeating(,awardType1Rate);
}
// Update is called once per frame
void Update () {
}
public void createEnemy0(){
float x = Random.Range(-2.15f,2.15f);
GameObject.Instantiate(enemy0Prefab,),Quaternion.identity);
}
public void createEnemy1(){
float x = Random.Range(-2.04f,2.04f);
GameObject.Instantiate(enemy1Prefab,),Quaternion.identity);
}
public void createEnemy2(){
float x = Random.Range(-2.04f,2.04f);
GameObject.Instantiate(enemy2Prefab,),Quaternion.identity);
}
public void createAwardType0(){
GetComponent<AudioSource>().Play();
float x = Random.Range(-2.1f,2.1f);
GameObject.Instantiate(awardType0Prefab,),Quaternion.identity);
}
public void createAwardType1(){
GetComponent<AudioSource>().Play();
float x = Random.Range(-2.1f,2.1f);
GameObject.Instantiate(awardType1Prefab,),Quaternion.identity);
}
}
Spawn
视频:https://pan.baidu.com/s/1jHTh3oy
项目:https://pan.baidu.com/s/1sljipdF
S老师 打飞机 学习的更多相关文章
- cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建
一.场景与层的关系: cocos2dx的框架可以说主要由导演,场景,层,精灵来构成: 1.其中导演,意如其名,就是操控整个游戏的一个单例,管理着整个游戏. 2.场景就像电影的一幕剧情,所以说,懂得如何 ...
- 郝斌老师C语言学习笔记(一)
在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值.当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以“85”开头的很大的数字(此时该段内存中为一个垃圾数,为了避免出现较常 ...
- cocos2dx游戏开发——微信打飞机学习笔记(九)——BulletLayer的搭建
一.创建文件~ BulletLayer.h BulletLayer.cpp 二.How to do? (1)实例化BulletLayer方法的实现~ Bullet(PlayerLayer* temp) ...
- cocos2dx游戏开发——微信打飞机学习笔记(八)——EnemyLayer的搭建
一.创建文件= = EnemyLayer.h EnemyLayer.cpp Ps:我绝对不是在凑字数~. 二.How to do? (1)一些宏 ...
- cocos2dx游戏开发——微信打飞机学习笔记(七)——Enemy的搭建
一.文件创建~ Enemy.h Enemy.cpp 二.How to do? 由于我是已经完成成个游戏的功能,所以我会将游戏中enemy所需要的很多功能基本上都先考虑到了,如果大家自己在做的时候也许没 ...
- cocos2dx游戏开发——微信打飞机学习笔记(六)——PlayerLayer的搭建
一.创建文件~ PlayerLayer.h PlayerLayer.cpp 一般类名都会和文件名有关系的~(在这里当然是一样) 二.How to do? 1.首先就是放一个飞机~ CC_SYNTHES ...
- cocos2dx游戏开发——微信打飞机学习笔记(五)——BackgroundLayer的搭建
一.创建文件~ 文件名:BackgroundLayer.h BackgroundLayer.cpp 架构就跟前面的一样,我就直接进入正题 啦,而且github有完整代码,欢迎下载~ 二.创建滚动的背景 ...
- cocos2dx游戏开发——微信打飞机学习笔记(十)——碰撞检测的搭建
一.七说八说 大家都发现了= =,做了那么多,发现就是摆设,完全没有打飞机的感觉,没有实现碰撞的监测.比如说呢,子弹和敌机,玩家与敌机就是需要有碰撞检测的说,然后在这篇我想会很长很长的教 ...
- 杨老师课堂_VBA学习教程之根据部门列创建工作表
课件下载 : 方式1:本节课件下载地址:链接: https://pan.baidu.com/s/1rf5pRmZ95fjVbz70KYi6Aw 密码: q9yk 方式2:或点击此处下载 效果预览图: ...
随机推荐
- NioEventLoopGroup的构造函数
loop是对thread的封装,里面记录一个selector 一套打完,看下来,就是loopgroup里面一个loop的数组,每一个loop在 new的时候,传入了selector(第二个箭头), 第 ...
- <Scala><For beginners>
Scala Overview Scala is object-oriented Scala is a pure object-oriented language in the sense that e ...
- DM浅尝辄止
都是大佬的笔记啊啊啊啊 dialog management 对话状态维护(dialog state tracking, DST) 生成系统决策(dialog policy) 系统行为(dialog a ...
- golang对数组进行冒泡排序
什么是冒泡排序? 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地 ...
- 深入了解HyperServer
本文,我们将尝试深入了解uniGUI HyperServer. 可以将HyperServer所有功能分成三类: HyperServer和稳定性 HyperServer和可扩展性 HyperServer ...
- CentOS部署PHP环境
1.安装apache yum -y install httpd httpd-devel 2.启动apache systemctl start httpd.service 检查apache状态 syst ...
- 一种基于SDR实现的被动GSM嗅探
软件定义无线电(SDR)是一种无线电通信系统,简单来说,就是通过数字信号处理技术在通用可编程数字信号处理硬件平台上,利用软件定义来实现无线电台的各单元功能,从而对无线电信号进行调制.解调.测量.SDR ...
- python 常用的高阶函数
前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. map() map函数可以把一个迭代对象转换成另一个可迭代对象,不过在pyth ...
- 2019-04-09-day028-OSI七层模型
内容回顾 概念 架构 : B/S C/S 硬件 : 网卡 :在计算机中 帮助我们完成网络通信 交换机 :在局域网内多台机器之间通信 路由器 :多个局域网之间的机器之间的通信 局域网 :一个区域内的多台 ...
- 利用python实现电影推荐
"协同过滤"是推荐系统中的常用技术,按照分析维度的不同可实现"基于用户"和"基于产品"的推荐. 以下是利用python实现电影推荐的具体方法 ...