歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Unity3D一個簡單的對打游戲

Unity3D一個簡單的對打游戲

日期:2017/3/1 10:24:30   编辑:Linux編程

我發現沒有動畫想做什麼都不行噢~~~,這個動畫還是一個大俠給我的,網上找了很多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. if(playerprogressbar.value!=0){
  32. playerprogressbar.value-=10;
  33. print(obj.gameObject.name);
  34. }
  35. else{
  36. animation.Play("die");
  37. isdie=true;
  38. }
  39. }
  40. }

敵人的游戲對象控制代碼 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. if(enemyprogressbar.value!=0){
  21. enemyprogressbar.value-=10;
  22. print(obj.gameObject.name);
  23. }
  24. else{
  25. animation.Play("die");
  26. }
  27. }
  28. }

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

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

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

Copyright © Linux教程網 All Rights Reserved