資源描述:
《unity3d gui 簡(jiǎn)單用戶圖形界面設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、.Unity2d飛機(jī)大戰(zhàn)項(xiàng)目講授一、游戲場(chǎng)景???游戲場(chǎng)景我們采用2D的界面,如圖,我們創(chuàng)建一個(gè)藍(lán)天白云的平面場(chǎng)景,該場(chǎng)景垂直于攝像機(jī)并采取正交投影方式。如果對(duì)在Unity3D中創(chuàng)建2D場(chǎng)景尚存在疑惑的朋友可以參考文章《[Unity3D]Unity3D游戲開發(fā)之《經(jīng)典打磚塊》游戲的實(shí)現(xiàn)》和《Unity3D游戲開發(fā)之使用Unity3D開發(fā)2D游戲(一)》兩篇文章。???我們這里在場(chǎng)景中添加GUIText對(duì)象來(lái)顯示玩家得分等基本信息,腳本定義如下:usingUnityEngine;usingSystem.Collections;publicclas
2、sGameManager:MonoBehaviour{//玩家得分privateTransformGrade;//玩家生命privateTransformHP;//游戲結(jié)束privateTransformText;//玩家...privateGameObjectPlayer;voidStart(){//初始化界面Grade=transform.Find("Grade");HP=transform.Find("HP");Text=transform.Find("Text");Text.guiText.enabled=false;//獲取玩家對(duì)象P
3、layer=GameObject.Find("Player");}voidUpdate(){if(Player!=null){//更新UIGrade.guiText.text="得分:"+Player.GetComponent().Grade.ToString();HP.guiText.text="生命:"+Player.GetComponent().MaxHP.ToString();}if(HP.guiText.text=="生命:0"){Text.guiText.enabled=true;//立即復(fù)活if(I
4、nput.GetKey(KeyCode.Y)){Application.LoadLevel("Main");}//退出if(Input.GetKey(KeyCode.N)){Application.Quit();}}}...}???二、玩家飛機(jī)???玩家飛機(jī)的創(chuàng)建和背景的創(chuàng)建時(shí)相同的,這里我們不再多說(shuō)。玩家飛機(jī)需要完成移動(dòng)、發(fā)射、碰撞的事件處理。為此我們編寫下面的腳本:usingUnityEngine;usingSystem.Collections;publicclassPlayer:MonoBehaviour{//飛機(jī)的移動(dòng)速度publicf
5、loatMoveSpeed;//飛機(jī)的最大生命值publicintMaxHP=100;//定義子彈對(duì)象publicGameObjectBullet;//定義子彈發(fā)射位置privateTransformBulletPosL;privateTransformBulletPosR;[HideInInspector]publicintGrade=0;voidStart(){BulletPosL=this.transform.Find("BulletPosL");BulletPosR=this.transform.Find("BulletPosR");}
6、voidUpdate(){if(Input.GetKey(KeyCode.A)){transform.Translate(Vector3.left*Time.deltaTime*(-MoveSpeed));...}if(Input.GetKey(KeyCode.D)){transform.Translate(Vector3.left*Time.deltaTime*MoveSpeed);}if(Input.GetKey(KeyCode.W)){transform.Translate(Vector3.forward*Time.deltaTime*(
7、-MoveSpeed));}if(Input.GetKey(KeyCode.S)){transform.Translate(Vector3.forward*Time.deltaTime*MoveSpeed);}//按下空格鍵,發(fā)射子彈if(Input.GetKey(KeyCode.Space)){Instantiate(Bullet,BulletPosL.transform.position,Quaternion.Euler(newVector3(0,1,0)));Instantiate(Bullet,BulletPosR.transform.
8、position,Quaternion.identity);}}#region減血publicvoidHit(intValue){if(MaxHP>0