刚学unity3d,跟着仿作了flappy bird,记下一些琐碎的心得!
生活随笔
收集整理的這篇文章主要介紹了
刚学unity3d,跟着仿作了flappy bird,记下一些琐碎的心得!
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1、關(guān)于場景,即scene。
一個(gè)正常的游戲至少要有三個(gè)場景,即菜單(或者文件夾)場景、游戲關(guān)卡場景、游戲結(jié)束場景。它們一般統(tǒng)一放在project文件夾下scene文件夾(自己創(chuàng)建)中,方便管理。
1.1場景切換
要實(shí)現(xiàn)游戲的正常進(jìn)行,須要場景的切換。比方,從開始菜單怎樣進(jìn)入到游戲中。開始菜單
關(guān)卡畫面
這些須要兩步準(zhǔn)備: 1、設(shè)置
要將場景放在托放在上圖所看到的位置,做好標(biāo)記。
2、相關(guān)代碼編寫 //材質(zhì)public Texture startButton;public Texture rankButton;void OnGUI(){//開始菜單,開始游戲,rect前一定要有new,且rect參數(shù)為位置左、上,button大小if (GUI.Button (new Rect (100, 250, 135, 75), startButton)) {Application.LoadLevel("Start");}GUI.Button(new Rect(460, 250, 135, 75), rankButton);if (GUI.Button (new Rect (20, 20, 60, 30), "exit")) {Application.Quit();}}
場景切換要用到函數(shù)Application.LoadLevel("Start"),Start是要切換場景的名稱,當(dāng)然這里也能夠用數(shù)字1來取代,由于上圖中地Start的標(biāo)號就是1。
場景的切換通常是伴隨著事件的發(fā)生,上面是因?yàn)榘l(fā)生了點(diǎn)擊button(startButton)的事件才引起場景切換。
注意
if (GUI.Button (new Rect (100, 250, 135, 75), startButton)){}用于推斷是否點(diǎn)擊button,
而GUI.Button (new Rect (100, 250, 135, 75), startButton);則是產(chǎn)生button。
1.2什么導(dǎo)致切換
一般而言,有點(diǎn)擊button、另外一些觸發(fā)器、碰撞器也能導(dǎo)致切換(臨時(shí)學(xué)到這里) //小鳥與管道碰撞則游戲結(jié)束void OnCollisionEnter(Collision other){if(other.gameObject.tag == "Player"){GameManager._intance.GameState=GameManager.GAMESTATE_END;audio.Play();Application.LoadLevel("End");if(other.gameObject.tag == "projectile"){}}}
OnCollisionEnter(Collision c)函數(shù)用于檢測碰撞器發(fā)生反應(yīng),類似的有OnCollisionStay、OnCollisionExit,分別表示剛接觸碰撞器、處于碰撞器中、離開碰撞器,這樣就能依據(jù)情況作出對應(yīng)的推斷。這里小鳥、管道都是碰撞器(好像至少有一個(gè)必須加剛體組件rigidbody),當(dāng)他們碰撞時(shí),作出對應(yīng)反應(yīng): 1、首先推斷是什么碰撞管道(代碼屬于管道的部分),就須要用到tag,用于區(qū)分對象。
2、之后進(jìn)行相關(guān)處理,這里audio.play用于播放音樂,須要事先要在管道上加入組件audioSource,并綁定音樂(由于代碼是屬于管道)。 LoadLevel()y切換場景。
2、物體移動(dòng)
1、小鳥的移動(dòng)
bird有剛體組件如上圖 public void getLife(){rigidbody.useGravity=true;this.rigidbody.velocity = new Vector3(2,0,0);}
初始時(shí)沒有重力(由于這里設(shè)定剛進(jìn)入游戲時(shí)小鳥沒有動(dòng)作,點(diǎn)擊鼠標(biāo)后才激活),getlife函數(shù)的rigidbody.useGravity=true使小鳥開啟了重力,之后的this.rigidbody.velocity = new Vector3(2,0,0);給了它水平(x軸)方向的初速度。velocity描寫敘述角色當(dāng)前的相對速度。 <pre name="code" class="csharp"> //上跳void birdJump(){if(Input.GetMouseButton(0) ){// left mouse button downaudio.Play();Vector3 vel2 = this.rigidbody.velocity;this.rigidbody.velocity = new Vector3(vel2.x,5,vel2.z);}}
左鍵按下實(shí)現(xiàn)上跳,首先獲得當(dāng)前速度,然后改變y方向(實(shí)際情況各不同樣)的速度,實(shí)現(xiàn)向上的動(dòng)作。
這樣結(jié)合上面的代碼就能實(shí)現(xiàn)小鳥的運(yùn)動(dòng)。
2、水平移動(dòng)的實(shí)現(xiàn)
void Update () {//依據(jù)分?jǐn)?shù)來決定子彈的出現(xiàn)if (GameManager._intance.score >= minScore) renderer.enabled = true;float outToMove = speed * Time.deltaTime;transform.Translate(Vector3.up*outToMove); //又一次出現(xiàn)if (transform.position.x <= (birdTransform.position.x-2.0f)) {setPosition();}} float outToMove = speed * Time.deltaTime;transform.Translate(Vector3.up*outToMove);這兩行代碼實(shí)現(xiàn)某一軸方向的物體的移動(dòng),詳細(xì)的查資料吧。轉(zhuǎn)載于:https://www.cnblogs.com/mfrbuaa/p/4284788.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的刚学unity3d,跟着仿作了flappy bird,记下一些琐碎的心得!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓APP_ 布局(3) —— Fram
- 下一篇: 安卓APP_ 布局(4) —— Tabl