Unity3D實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲(2)
本文為大家分享了Unity3D飛機(jī)大戰(zhàn)游戲第一部分的實(shí)現(xiàn)代碼,供大家參考,具體內(nèi)容如下
讓飛機(jī)可以發(fā)射子彈
準(zhǔn)備工作:
1、將子彈設(shè)置成預(yù)制體
2、在飛機(jī)下新建一個(gè)子物體Gun

3、調(diào)整好位置以后,將子彈設(shè)置成預(yù)制體
//發(fā)射子彈的速率
public float rate = 0.2f;
public GameObject bullet;//子彈的類型
//發(fā)射子彈的方法
public void fire()
{
//初始化一個(gè)子彈預(yù)制體
GameObject.Instantiate(bullet, transform.position, Quaternion.identity);
}
public void openFire(){
//每隔多長(zhǎng)時(shí)間使用發(fā)射子彈的方法
InvokeRepeating("fire", 0, rate);
}
//ctrl+shift+m添加生命周期函數(shù)
private void Start()
{
openFire();
}
敵機(jī)的制作與運(yùn)動(dòng)
1.將敵機(jī)放入到游戲場(chǎng)景當(dāng)中,給敵機(jī)添加腳本
2.敵機(jī)應(yīng)當(dāng)擁有自己的血量和速度,且向下移動(dòng)
3.當(dāng)敵機(jī)在游戲界面外后,銷毀敵機(jī)
//默認(rèn)血量
public int hp = 1;
//默認(rèn)速度
public float speed = 2;
// Update is called once per frame
void Update()
{
//飛機(jī)向下移動(dòng)
this.transform.Translate(Vector3.down*speed*Time.deltaTime);
if (this.transform.position.y <= -5.6f)
{
Destroy(this.gameObject);
}
}
獎(jiǎng)勵(lì)物品
public int type;//表示子彈的類型
public float speed = 1.5f;//獎(jiǎng)勵(lì)物品下落速度
// Update is called once per frame
void Update()
{//讓其進(jìn)行下降
this.transform.Translate(Vector3.down * speed * Time.deltaTime);
//如果出了游戲邊界區(qū)域以后銷毀
if (this.transform.position.y <= -4.5f)
{
Destroy(this.gameObject);
}
}
隨機(jī)生成子彈和敵機(jī)
1.在游戲場(chǎng)景上方新建一個(gè)空物體,讓其位置處生成敵機(jī)和獎(jiǎng)勵(lì)物品,將其移到屏幕外
2.將敵機(jī)和獎(jiǎng)勵(lì)物品設(shè)置為預(yù)制體Prefabs
//第0號(hào)敵機(jī)
public GameObject enemy0Prefab;
//第1號(hào)敵機(jī)
public GameObject enemy1Prefab;
//第二號(hào)敵機(jī)
public GameObject enemy2Prefab;
//獎(jiǎng)勵(lì)物品的預(yù)制體
public GameObject award0Prefab;
public GameObject award1Prefab;
//敵機(jī)生成的速率
public float enemy0Rate=0.5f;
public float enemy1Rate = 5f;
public float enemy2Rate = 8f;
//獎(jiǎng)勵(lì)物品生成的速率
public float award0Rate = 7f;
public float award1Rate = 10f;
// Start is called before the first frame update
void Start()
{
InvokeRepeating("creatEnemy0", 1, enemy0Rate);
InvokeRepeating("creatEnemy1", 5, enemy1Rate);
InvokeRepeating("creatEnemy2", 8, enemy2Rate);
InvokeRepeating("creatAward0", 15, award0Rate);
InvokeRepeating("creatAward1", 18, award1Rate);
}
//生成第0號(hào)敵機(jī)
//位置信息的x信息應(yīng)當(dāng)要隨機(jī)生成
public void creatEnemy0()
{
float x = Random.Range(-2.15f, 2.15f);
Instantiate(enemy0Prefab, new Vector3(x,transform.position.y,0), Quaternion.identity);
}
public void creatEnemy1()
{
float x = Random.Range(-2f, 2f);
Instantiate(enemy1Prefab, new Vector3(x, transform.position.y, 0), Quaternion.identity);
}
public void creatEnemy2()
{
float x = Random.Range(-1.5f, 1.5f);
Instantiate(enemy2Prefab, new Vector3(x, transform.position.y, 0), Quaternion.identity);
}
public void creatAward0()
{
float x = Random.Range(-2f, 2f);
Instantiate(award0Prefab, new Vector3(x, transform.position.y, 0), Quaternion.identity);
}
public void creatAward1()
{
float x = Random.Range(-2f, 2f);
Instantiate(award1Prefab, new Vector3(x, transform.position.y, 0), Quaternion.identity);
}
更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#訪問(wèn)SQL Server數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法
這篇文章主要介紹了C#訪問(wèn)SQL Server數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法,以實(shí)例形式簡(jiǎn)單分析了C#連接、查詢SQL Server數(shù)據(jù)庫(kù)的具體技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
客戶端實(shí)現(xiàn)藍(lán)牙接收(C#)知識(shí)總結(jié)
網(wǎng)上有關(guān)藍(lán)牙接收的資料很多,使用起來(lái)也很簡(jiǎn)單,但是我覺(jué)得還是有必要把這些知識(shí)總結(jié)下來(lái),藍(lán)牙開發(fā)需要用到一個(gè)第三方的庫(kù)InTheHand.Net.Personal.dll,感興趣的朋友可以了解下,或許對(duì)你有所幫助2013-02-02
Unity中的PostProcessBuild實(shí)用案例深入解析
這篇文章主要為大家介紹了Unity中的PostProcessBuild實(shí)用案例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
WPF實(shí)現(xiàn)動(dòng)畫效果(四)之緩動(dòng)函數(shù)
這篇文章介紹了WPF實(shí)現(xiàn)動(dòng)畫效果之緩動(dòng)函數(shù),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
C#中winform窗體實(shí)現(xiàn)注冊(cè)/登錄功能實(shí)例(DBHelper類)
在編寫項(xiàng)目時(shí),編寫了一部分關(guān)于登錄頁(yè)面的一些代碼,下面這篇文章主要給大家介紹了關(guān)于C#中winform窗體實(shí)現(xiàn)注冊(cè)/登錄功能(DBHelper類)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
C#實(shí)現(xiàn)撲克游戲(21點(diǎn))的示例代碼
21點(diǎn)又名黑杰克,該游戲由2到6個(gè)人玩,使用除大小王之外的52張牌,游戲者的目標(biāo)是使手中的牌的點(diǎn)數(shù)之和不超過(guò)21點(diǎn)且盡量大。本文將用C#實(shí)現(xiàn)這一經(jīng)典游戲,需要的可以參考一下2022-08-08
C#使用StreamReader和StreamWriter類讀寫操作文件
這篇文章介紹了C#使用StreamReader和StreamWriter類讀寫操作文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05

