http://blog.sysuschool.com/u/mygod/index.html
请稍候,载入中。。。
 
请稍候,载入中。。。
2023/4/3 15:51:00
博文_用C#+unity3D再写飞机大战游戏

前两年学习python时,写过一个飞机大战游戏,算是pygame开发游戏的入门,这次学习unity3D,泰课在线也提供了一个这样的范例,还是同样的素材,同样的逻辑,一遍做下来,感觉游戏引擎开发游戏太方便直观了。 

unity中,游戏对象对应的就是类,非常直观,可以是空对象,添加各种组件构成游戏对象,包括脚本。在hierarchy中可管理场景中的游戏对象,还有一种预制体,可以通过脚本加载。本篇,对unity制作这款游戏,留点资料(游戏逻辑不赘述了)

 

一、项目

2DAndroid平台,game视图设置800*480,调整MainCamerasize=4

需要切换平台(需要安装),安装后还是不能发布,困惑!

 

二、单例

GameManager 游戏得分、游戏状态(暂停和运行)

GameOver 游戏结束,得分记录显示,重新开始和退出

 BombManager 炸弹管理

 

// 单例写法,如

public class GameManager : MonoBehaviour {

public static GameManager _instance;

void Awake() {

_instance = this; 

 } 

         …

// 单例在项目中调用,如

GameManager._instance. 

 

三、音频

AudioSource组件,可添加声音并可选PalyOnAwakeLoop

勾选PlayOnAwake时,不需要脚本调用

否则,需要脚本

方法一,直接获取AudioSource组件,如this.GetComponent<AudioSource>().Play();

方法二,public GameObject Audioxx,通过inspector指定,然后Audioxx.Play()

 

四、图片按钮

图片加BoxCollider2D组件,事件

void OnMouseUpAsButton() { … }

 

五、自身的移动

this.transform.Translate(Vector3.down * moveSpeed * Time.deltaTime);

 

六、碰撞检测

// 子弹的碰撞

void OnTriggerEnter2D(Collider2D other) {

         if (other. tag == "Enemy") {

                   if (!other.GetComponent<Enemy>().isDeath) {

                            other.gameObject.SendMessage("BeHit");  // 让敌机执行BeHit

                            GameObject.Destroy(this.gameObject);

                   }

         }

}

 

常用

tag标志

Destroy 销毁,

         GameObject.Destroy(this.gameObject) 销毁自己

         GameObject.Destroy(other.gameObject) 销毁碰撞对象

other.gameObject.SendMessage("BeHit");  让碰撞对象执行函数,如让敌机执行BeHit

 

七、延时循环执行

InvokeRepeating("函数名字符串", 开始时间, 间隔时间);

InvokeRepeating("fire", 0, rate);

取消CancelInvoke("fire"),参数可空,取消所有invokeRepeating

 

八、动画帧

public Sprite[] sprites   精灵组

public float timer = 0  计时器,+=Time.deltaTime

public int frameCountPerseconds = 10    动画每秒帧

int frameIndex = ((int)(timer / (1f / frameCountPerseconds))) % 2   计算精灵组索引(2图时)

private SpriteRenderer spriteRender  渲染组件

         spriteRender = this.GetComponent<SpriteRenderer>()   开始时获取

 

mygod | 阅读全文 | 回复(0) | 引用通告 | 编辑
发表评论:
请稍候,载入中。。。
公告
请稍候,载入中。。。
时间记忆
请稍候,载入中。。。
最新日志
请稍候,载入中。。。
最新评论
请稍候,载入中。。。
最新回复
请稍候,载入中。。。
我的好友
我的相册
站点信息
请稍候,载入中。。。
生活因感动而精彩,理想在创造中放飞
Powered by Oblog.