Flappy Bird 實(shí)例new_第1頁(yè)
Flappy Bird 實(shí)例new_第2頁(yè)
Flappy Bird 實(shí)例new_第3頁(yè)
Flappy Bird 實(shí)例new_第4頁(yè)
Flappy Bird 實(shí)例new_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Tutorial: How to Make Flappy Bird in Unity3D 創(chuàng)建一個(gè)工程 菜單File-New Project 管理你的工程 菜單Assets-Create-Folder,創(chuàng)建四個(gè)文件夾 “Prefabs”“Scenes”“Scripts”“Textures”. Prefabs In Unity, a Prefab is an object that can be reused and created such as bullets, enemies, or walls. Scenes A scene is like a level of a game. Scri

2、pts This folder will hold all the code. Textures All the images used in the game. In 2D gaming, these images are called “Sprites”.導(dǎo)入圖片資源 方法一:如圖所示 方法二:Assets-Import new asset選擇要導(dǎo)入的圖片設(shè)置背景 檢查一下,將導(dǎo)入的圖片都放到Textures目錄下面 打開(kāi)Textures目錄,然后選擇background圖片,將其放到場(chǎng)景中, 方法一:拖動(dòng)圖片background到層次視圖 方法二:拖動(dòng)圖片到scene視圖 選中層次視圖中

3、的background,然后看Inspector視圖里邊,position是0,0,0,scale為2.5,2.5,1;設(shè)置角色 同樣的方法,從Project視圖,Assets的Textures目錄選擇player圖片,將其放到場(chǎng)景中,然后調(diào)整起position為(-2,1,-1) 注意這里z為-1,可保證小飛機(jī)在背景圖片前面 接下來(lái),給小飛機(jī)添加剛體組件RigidBody2D組件,具體方法為, 從層次視圖中選中player,然后點(diǎn)擊菜單Component,選擇Physics2D,選擇RigidBody2D 注:剛體組件賦予對(duì)象重力等物理屬性。 此時(shí)點(diǎn)擊unity的播放按鈕,可以看到小飛機(jī)自由

4、下落。角色控制 對(duì)角色進(jìn)行玩家操作控制 Project面板選中Scripts文件夾,Create一個(gè)javascript腳本文件,名為Player.js#pragma strictvar jumpForce = Vector2(0,300);function Start () function Update () if (Input.GetKeyUp(space)rigidbody2D.velocity = Vector2.zero;rigidbody2D.AddForce(jumpForce); 變量jumpForce: stores the force applied to the pla

5、yer when we jump. 把Player.js腳本賦予Player游戲?qū)ο?點(diǎn)擊unity播放按鈕,游戲運(yùn)行,小飛機(jī)下降,點(diǎn)擊空格鍵,小飛機(jī)往上跳一下。創(chuàng)建障礙物 從Project視圖,Assets的Textures目錄選擇rock和rockdown圖片,將其拖放到場(chǎng)景中, change their X and Y scales to be 2.5. 調(diào)整這對(duì)圖片的位置,比如分別為(12,5,0)和(12,-5,0),如下圖所示 整理障礙物 創(chuàng)建一個(gè)空游戲?qū)ο螅c(diǎn)擊GameObject菜單,選擇Create Empty,層次視圖中出現(xiàn)一個(gè)名為GameObject的空對(duì)象,改名為Roc

6、kPair 在層次視圖中,將rock和rockdown拖放到RockPair上,使其成為rockpair的下層。障礙物的移動(dòng) 給RockPair添加RigidBody2D組件,選中Is Kinematic選項(xiàng)(rockpair對(duì)象將不會(huì)因重力下降) 在Scirpts創(chuàng)建一個(gè)腳本Obstacle.js,并將其賦予對(duì)象RockPair#pragma strictvar velocity = Vector2(-4, 0);function Start () rigidbody2D.velocity = velocity;function Update () 點(diǎn)擊untiy播放按鈕,將看到障礙物從屏幕

7、右側(cè)往左側(cè)移動(dòng)通過(guò)游戲過(guò)程中產(chǎn)生障礙 制作障礙物prefab(預(yù)設(shè)) drag the RockPair Object into the Prefabs folder. This turns RockPair into a Prefab Delete the RockPair object that is in the scene. 場(chǎng)景中添加一個(gè)空對(duì)象(create empty),改名為Scripts,并為其創(chuàng)建一個(gè)腳本Generate.js#pragma strictvar rocks:GameObject;function Start () InvokeRepeating(CreateO

8、bstacle, 1f, 1.5f);function Update () function CreateObstacle()Instantiate(rocks); the InvokeRepeating method. This will call a specific function once every several seconds. The first parameter is a string with the name of the method to call. The second is the number of seconds to delay these repeat

9、ed calls. And the third parameter is the number of seconds between method calls. the CreateObstacle method, we use Instantiate, a method that will generate a new prefab to the scene. 將Generate腳本賦予Scripts 層次視圖中選擇Scripts對(duì)象,其Inspector視圖如右上圖 通過(guò)拖拽操作將Generate腳本組件的Rocks變量賦值為RockPair預(yù)設(shè),右下圖 點(diǎn)擊播放按鈕,看效果 還需要碰撞檢

10、測(cè) 碰撞器collider 碰撞處理碰撞檢測(cè)處理 添加碰撞器Collider 層次視圖選擇Player對(duì)象,添加碰撞器 菜單Component, 選擇Physics 2D,選擇Box Collider 2D Project面板,選擇Prefabs文件夾中的RockPair預(yù)設(shè),點(diǎn)擊右邊小三角,打開(kāi),然后rock和rockdown逐一添加Polygon Collider 2D組件 點(diǎn)擊播放按鈕,看碰撞效果 小飛機(jī)碰到障礙,游戲重新開(kāi)始 修改Player.js腳本#pragma strictvar jumpForce = Vector2(0,300);function Start () funct

11、ion Update () if (Input.GetKeyUp(space)rigidbody2D.velocity = Vector2.zero;rigidbody2D.AddForce(jumpForce);/ Die by being off screenvar screenPosition = Camera.main.WorldToScreenPoint(transform.position);if (screenPosition.y Screen.height | screenPosition.y 0)Die();/ Die by collisionfunction OnColli

12、sionEnter2D(other:Collision2D)Die();function Die()Application.LoadLevel(Application.loadedLevel); 點(diǎn)擊播放按鈕,運(yùn)行看效果 考慮繼續(xù)完善 障礙的位置可隨機(jī)調(diào)整 計(jì)分障礙位置隨機(jī) 考慮修改每個(gè)障礙位置的y坐標(biāo) 在Obstacle腳本的Start()函數(shù)中添加一行transform.position.y += Random.Range(-2,2);計(jì)分 如何計(jì)分? 撞到障礙之前走的越遠(yuǎn)越好 成功經(jīng)過(guò)障礙的數(shù)目 具體實(shí)現(xiàn) 每產(chǎn)生一個(gè)障礙,記一分 計(jì)時(shí),每隔1.5秒記一分 修改Generate腳本#pra

13、gma strictvar rocks:GameObject;var score=0;function Start () InvokeRepeating(CreateObstacle, 1f, 1.5f);function Update () function CreateObstacle()Instantiate(rocks);score+;function OnGUI () GUI.color = Color.black;GUILayout.Label( Score: + score.ToString(); OnGUI()函數(shù) OnGUI is called for rendering a

14、nd handling GUI events. your OnGUI implementation might be called several times per frame (one call per event)如何繼續(xù)完善? 及時(shí)銷(xiāo)毀無(wú)效的障礙 添加多種障礙 添加游戲開(kāi)始界面,添加新的關(guān)卡 關(guān)于銷(xiāo)毀障礙 在Obstacle.js中的Start()函數(shù)中,加入Destroy(gameObject,6)即可 添加多種障礙在Generate.js腳本中, 將var rocks:GameObject;改為var rocks:GameObject; Instantiate(rocks);改為I

15、nstantiate(rocksRandom.Range(0,rocks.Length); 在Unity編輯器中,修改rocks數(shù)組變量,并進(jìn)行賦值即可。 添加一個(gè)新的場(chǎng)景,并保存命名為T(mén)itle 在場(chǎng)景中添加必要的背景圖片 在場(chǎng)景中創(chuàng)建一個(gè)空的游戲?qū)ο螅–reate Empty),改名為T(mén)itle 創(chuàng)建一個(gè)腳本,改名為title,并讓它成為T(mén)itle對(duì)象的腳本組件,編輯title.js,添加如下函數(shù):function OnGUI()if (GUI.Button(Rect(Screen.width/2,Screen.height/2,50,20),Start)Application.LoadLevel(s1);if (GUI.Button(Rect(Screen.width/2,Screen.height/2+3

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論