歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Unity3D一個簡單的對打游戲

我發現沒有動畫想做什麼都不行噢~~~,這個動畫還是一個大俠給我的,網上找了很多bip動作文件,但是轉成FBX格式不行,好像是版本不一樣的緣故。後來為了做進度條我之前學了一下EZGUI,但是沒有得到想要的效果,高手說是因為沒有SM2的緣故,後來我又學習iGUI,的確簡單又多用,不錯哦~~~至於NGUI我還沒用過,以後看看再說~~~呵呵呵,如果要說他們的區別的話,EZGUI是3D的,但是控件較少;iGUI簡單易用,控件多,是2D的和unity本身的GUI相似,NGUI沒用過還不知道噢~~~~。還有就是我一運行unity就卡死,害我做了半天的東西都沒保存噢,大家一定要多保存哈~~~找了半天原因,後來發現原來是我在update函數裡面寫了一個while循環,把while改成if就好了(並不是一用while就卡,就是用的不恰當而已~~~)。

下面看看今天的demo吧,應該是看得懂的啦。我把這個demo的工程放到資源裡面去了,裡面有動畫的,大家可以去下來看看哈(下載見本文最後)~~~~~

注意:這裡面沒有用碰撞檢測,因為如果要發生碰撞的話,刀可能會飛的,而且也砍不下去啊,所以只能用觸發器了。

下面簡單來說說觸發器的用法吧,和碰撞一樣,必須至少有一個物體有rigidbody,而且兩個物體必須都有含有觸發器的的collider,我們這用boxcollider(meshcollider不能觸發),而且在collider中的Is Trigger要勾上哦~~~~

我們的游戲對象控制代碼player.js:

  1. //游戲角色的移動控制   
  2. var playerprogressbar:iGUI.iGUIProgressBar;  
  3. var play1:boolean=true;  
  4. var isdie:boolean=false;  
  5. function Update(){  
  6. if(!isdie){  
  7.   if(Input.GetKey(KeyCode.UpArrow)){  
  8.        animation.Play("walk");      
  9.        transform.Translate(Vector3.forward*1*Time.deltaTime);  
  10.   }    
  11.   if(Input.GetKey(KeyCode.DownArrow)){  
  12.       transform.Rotate(Vector3.up*180);  
  13.   }  
  14.   if(Input.GetKey(KeyCode.RightArrow)){  
  15.       transform.Rotate(Vector3.up*10);  
  16.   }  
  17.   if(Input.GetKey(KeyCode.LeftArrow)){  
  18.       transform.Rotate(Vector3.up*-10);  
  19.   }  
  20.   if(Input.GetKey(KeyCode.Space)){  
  21.       animation.Play("attack");      
  22.   }  
  23.    if (!animation.isPlaying){  
  24.       animation.Play("Take 001");  
  25.    }    
  26.  }      
  27. }  
  28. //游戲對象的血條控制   
  29. function OnTriggerEnter(obj:Collider){  
  30.   if(obj.gameObject.name!="playerarrow"){  
  31.     
  32.    if(playerprogressbar.value!=0){  
  33.        playerprogressbar.value-=10;   
  34.        print(obj.gameObject.name);  
  35.       }   
  36.    else{  
  37.        animation.Play("die");  
  38.        isdie=true;  
  39.       }  
  40.    }     
  41. }  

敵人的游戲對象控制代碼 enemy.js:

  1. var player:Transform;  
  2. var flag:boolean=true;  
  3. var enemyprogressbar:iGUI.iGUIProgressBar;  
  4. function Update () {   
  5.   if(flag){  
  6.    animation.Play("walk");  
  7.    transform.LookAt(player);  
  8.    transform.Translate(Vector3.forward*0.5*Time.deltaTime);   
  9.    }  
  10.    if(Vector3.Distance(player.position,transform.position)<3){  
  11.    flag=false;  
  12.    animation.Play("attack");  
  13.    }  
  14.    else{  
  15.      flag=true;  
  16.    }  
  17. }  
  18. function OnTriggerEnter(obj:Collider){  
  19.  if(obj.gameObject.name!="enemyarrow"){  
  20.      
  21.    if(enemyprogressbar.value!=0){  
  22.        enemyprogressbar.value-=10;    
  23.        print(obj.gameObject.name);  
  24.       }   
  25.    else{  
  26.        animation.Play("die");  
  27.       }  
  28.    }  
  29. }  

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/4月/17日/Unity3D一個簡單的對打游戲/

Copyright © Linux教程網 All Rights Reserved