我發現沒有動畫想做什麼都不行噢~~~,這個動畫還是一個大俠給我的,網上找了很多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:
- //游戲角色的移動控制
- var playerprogressbar:iGUI.iGUIProgressBar;
- var play1:boolean=true;
- var isdie:boolean=false;
- function Update(){
- if(!isdie){
- if(Input.GetKey(KeyCode.UpArrow)){
- animation.Play("walk");
- transform.Translate(Vector3.forward*1*Time.deltaTime);
- }
- if(Input.GetKey(KeyCode.DownArrow)){
- transform.Rotate(Vector3.up*180);
- }
- if(Input.GetKey(KeyCode.RightArrow)){
- transform.Rotate(Vector3.up*10);
- }
- if(Input.GetKey(KeyCode.LeftArrow)){
- transform.Rotate(Vector3.up*-10);
- }
- if(Input.GetKey(KeyCode.Space)){
- animation.Play("attack");
- }
- if (!animation.isPlaying){
- animation.Play("Take 001");
- }
- }
- }
- //游戲對象的血條控制
- function OnTriggerEnter(obj:Collider){
- if(obj.gameObject.name!="playerarrow"){
-
- if(playerprogressbar.value!=0){
- playerprogressbar.value-=10;
- print(obj.gameObject.name);
- }
- else{
- animation.Play("die");
- isdie=true;
- }
- }
- }
敵人的游戲對象控制代碼 enemy.js:
- var player:Transform;
- var flag:boolean=true;
- var enemyprogressbar:iGUI.iGUIProgressBar;
- function Update () {
- if(flag){
- animation.Play("walk");
- transform.LookAt(player);
- transform.Translate(Vector3.forward*0.5*Time.deltaTime);
- }
- if(Vector3.Distance(player.position,transform.position)<3){
- flag=false;
- animation.Play("attack");
- }
- else{
- flag=true;
- }
- }
- function OnTriggerEnter(obj:Collider){
- if(obj.gameObject.name!="enemyarrow"){
-
- if(enemyprogressbar.value!=0){
- enemyprogressbar.value-=10;
- print(obj.gameObject.name);
- }
- else{
- animation.Play("die");
- }
- }
- }
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2012年資料/4月/17日/Unity3D一個簡單的對打游戲/