Unity 3D使用GameObject建立一個簡單的可移動物體

來源:互聯網
上載者:User

標籤:

於Unity 3D遊戲的開發。遊戲指令碼需要3D類比組合,該指令碼將被寫入阻力3D為了達到效果對象。

以下是一個小執行個體,使用Unity 3D實現一個可控制移動的小人。小人能夠向前、向後、向左和向右移動。

1、通過 File - > New Scene 建立一個情境;

2、點擊Create -> Create Empty 建立一個GameObject,它即是遊戲對象;

3、在Inspector 面板裡將此對象的名字改為 “hero” (記得按斷行符號鍵),等一下再指令碼中將通過此名字來與尋找此對象,例如以:


4、點擊Add Component 。選擇Mesh -> Mesh Renderer ,例如以所看到的:



5、再次點擊 Add Component,加入Mesh -> Mesh Filter



6、點擊Mesh Filter 裡的小button,在彈出的頁面裡選擇Quad


7、在Project中建立目錄Resources,並在當中建立四個目錄:forward,back。right,left。這四個目錄用於放置圖片檔案;

建立檔案:2d.js,並使用編輯器開啟,代碼例如以下:

<strong><span style="font-size:18px;color:#ff0000;">#pragma strictprivate var hero : GameObject;//貼圖數組private var forward : Object[];private var left : Object[];private var right : Object[];private var back : Object[];//人物行走圖計數器private var counter : int;//每秒的幀數private var fps : float = 2;//限制幀的時間private var time : float = 0;//推斷button是否被按下的布爾值private var keyForward : boolean;private var keyBack : boolean;private var keyLeft : boolean;private var keyRight : boolean;//當前貼圖數組private var anim : Object[];//當前方向private var pointer : int = 1;//方向向量的值。即速度的大小private var f : float = 0.001f;function Start() {hero = GameObject.Find("hero");forward = Resources.LoadAll("woman/forward");left    = Resources.LoadAll("woman/left");right   = Resources.LoadAll("woman/right");back    = Resources.LoadAll("woman/back");anim = forward;counter = 0;}function OnGUI(){GUILayout.BeginHorizontal(); //四個button水平排列keyForward  = GUILayout.RepeatButton("向前");keyLeft = GUILayout.RepeatButton("向左");keyRight = GUILayout.RepeatButton("向右");keyBack = GUILayout.RepeatButton("向後");GUILayout.EndHorizontal();//推斷button的buttonif(keyForward) {setAnimation(1,forward);hero.transform.Translate(Vector3.forward * f);}if(keyLeft) {setAnimation(2,left);hero.transform.Translate( - Vector3.right * f);}if(keyRight) {setAnimation(3,right);hero.transform.Translate(Vector3.right * f);}if(keyBack) {setAnimation(4,back);hero.transform.Translate(Vector3.back * f);}//*///推斷當前方向switch(pointer) {case 1:hero.transform.Translate(-Vector3.forward * f);break;case 2:hero.transform.Translate(-Vector3.right * f);break;case 3:hero.transform.Translate(Vector3.right * f);break;case 4:hero.transform.Translate(Vector3.forward * f);break;}//響應動畫HandleAnimation(anim);}function setAnimation(p : int,o:Object[]) {pointer = p;//指定方向為 panim = o;//指定貼圖數組}function HandleAnimation(tex:Object[]) {//計算限制幀時間time += Time.deltaTime;//超過限制幀則切換圖片if(time >= 1.0 / fps) {counter++;time = 0;if(counter >= anim.length){counter = 0;}}//將對應的貼圖賦予主角對象hero.renderer.material.mainTexture = tex[counter];var rect : Rect = Rect(100,100,32,48);GUI.DrawTexture(rect,tex[counter],ScaleMode.StretchToFill,true,0); //一旁的縮減對象}</span></strong>

8、儲存後,將檔案拖曳給hero;

9、,給Mesh Renderer選擇材質


10、通過調整攝像機和hero的位置。使攝像機能看到hero;

11、執行:



著作權聲明:本文博主原創文章。部落格,未經同意不得轉載。

Unity 3D使用GameObject建立一個簡單的可移動物體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.