一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Unity3D 游戲引擎之控制模型移動旋轉(zhuǎn)與碰撞(七)

 奔跑的瓦力 2015-04-27

 Unity3D 游戲引擎之控制模型移動旋轉(zhuǎn)與碰撞


























上一章介紹了模型的旋轉(zhuǎn)與平移,本章介紹一些好玩的,通過按鈕來控制模型的移動與鏡頭的跟隨,腳本參數(shù)的傳遞。個人覺得Unity3D 這套游戲引擎真的很棒,它可以為開發(fā)者節(jié)省時間。用更多少的腳本,可以實現(xiàn)更多的功能。先贊一下,哇咔咔~廢話不多說了,入正題!



















首先在3D世界中創(chuàng)建一個箱子模型,然后添加一個腳本,命名為  js0綁定到這個箱子中。在添加一個腳本,命名為js1 ,同樣綁定到這個箱子上,用來實現(xiàn)對象的創(chuàng)建與調(diào)用方法參數(shù)的傳遞 ~










var Control;   這里聲明一個控制類的對象,用來進行參數(shù)的傳遞,調(diào)用方法。




Getomponent(js1): 得到腳本名稱為js1的對象,這里把值賦給Control,就可以使用js1腳本中的方法了,下面的代碼中通過這個對象調(diào)用模型的移動方法。




Input.GetKey(KeyCode): 這個方法返回一個Bool 判斷當前按鍵是否被按下,當然這里只能運行在PC上才可以感應(yīng)按鈕,因為IOS的設(shè)備上沒有按鍵,以后我會介紹在IOS上添加游戲搖桿的功能,本章我們先學習一下PC上的基本按鈕響應(yīng)。







下面代碼




實現(xiàn)按下“W”控制物體向前

實現(xiàn)按下“S”控制物體向后


實現(xiàn)按下“A”控制物體向左平移


實現(xiàn)按下“D”控制物體向右平移


實現(xiàn)按下“Q”控制物體向左旋轉(zhuǎn)


實現(xiàn)按下“E”控制物體向右旋轉(zhuǎn)








js0.js 代碼





  1. //旋轉(zhuǎn)移動速度   
  2. var Speed = 50;   
  3.    
  4. //控制對象   
  5. var Control;   
  6.    
  7. function Update()   
  8. {   
  9.   //得到控制對象   
  10.   Control = GetComponent(js1);    
  11.      
  12.   //判斷按鍵    
  13.        
  14.   if(Input.GetKey(KeyCode.W))   
  15.   {   
  16.         //前進   
  17.         Control.ForWard();   
  18.            
  19.   }else if(Input.GetKey(KeyCode.S))    
  20.   {   
  21.         //后退   
  22.         Control.Back();   
  23.   }   
  24.      
  25.     if(Input.GetKey(KeyCode.A))   
  26.   {   
  27.         //前左   
  28.         Control.GLeft();   
  29.            
  30.   }else if(Input.GetKey(KeyCode.D))    
  31.   {   
  32.         //后右   
  33.         Control.GRight();   
  34.   }   
  35.      
  36.      
  37.      
  38.   if(Input.GetKey(KeyCode.Q))   
  39.   {   
  40.     //左旋轉(zhuǎn)   
  41.        
  42.     Control.leftRotate(Vector3.up *Time.deltaTime * -Speed);   
  43.    
  44.   }else if(Input.GetKey(KeyCode.E))   
  45.   {   
  46.     //右旋轉(zhuǎn)   
  47.     Control.RightRotate(Vector3.up *Time.deltaTime * Speed);   
  48.    
  49.   }   
  50.       
  51. }   



js1.js 代碼




參數(shù)的傳遞可以使用obj進行傳遞,代碼中我將旋轉(zhuǎn)的角度做為參數(shù)傳遞到了js1.js中控制模型旋轉(zhuǎn)。

Vector3 標示一個3D的向量單位,它可以標示模型的三個方向,這里根據(jù)旋轉(zhuǎn)的角度與移動的向量設(shè)置它。





  1. //前進速度   
  2. var Speed = 50;   
  3.    
  4. //前進   
  5. function ForWard()    
  6. {   
  7.     transform.Translate(Vector3.forward * Time.deltaTime *Speed);   
  8. }   
  9.    
  10. //后退   
  11. function Back()    
  12. {   
  13.     transform.Translate(Vector3.forward * Time.deltaTime * -Speed);        
  14. }   
  15.    
  16.    
  17. //向左   
  18. function GLeft()    
  19. {   
  20.     transform.Translate(Vector3.right * Time.deltaTime *-Speed);   
  21. }   
  22.    
  23. //向右   
  24. function GRight()    
  25. {   
  26.     transform.Translate(Vector3.right * Time.deltaTime * Speed);           
  27. }   
  28.    
  29.    
  30.    
  31.    
  32. //傳遞參數(shù)   
  33.    
  34. //左旋轉(zhuǎn)   
  35. function leftRotate(obj)   
  36. {   
  37.     transform.Rotate(obj);     
  38. }   
  39.    
  40. //右旋轉(zhuǎn)   
  41. function RightRotate(obj)   
  42. {   
  43.     transform.Rotate(obj);     
  44. }   








OK點擊運行,通過按鍵我們可以正常的控制模型平移與旋轉(zhuǎn),但是現(xiàn)在有兩個問題 1, 主攝像機不能跟隨控制模型, 2  、模型可以橫穿過山丘,感覺很假。下面我們解決這兩個問題。







在Unity3D標準資源的腳本中系統(tǒng)幫我們寫好了跟隨腳本.如下圖所示,點擊Import Package - > Scripts 將系統(tǒng)腳本導入。




















選中攝像機 點擊Component - > Camera-Control - > Smoot Follow ,給主攝像機添加一個跟隨腳本。























跟隨腳本添加完以后,須要指定一個跟隨的物體,下面紅框內(nèi)將跟隨的物體Cube拖動進來,這里Cube就是我們上面控制的模型,那么這樣,攝像機將會一直在身后跟隨我們控制的模型。下面是一些跟隨的參數(shù),設(shè)置 跟隨的距離 高度等等,盆友們手動的修改一下運行游戲就可以看出來變化,。









































控制物體的碰撞可以使用 選中模型, Component - > Physics - > Rigidbody 設(shè)置這個模型的重力碰撞。那么這樣你控制的模型就不會穿過山丘,而是感應(yīng)重力碰撞。























點擊運行游戲,看看效果,控制箱子行走的同時,我們可以清晰的看出旁邊的樹木被物理碰撞所干擾,前后,左右,旋轉(zhuǎn) 完全OK .大家快試試吧。哇咔咔~~























明天開始MOMO又要開始處理一部分iPhone 的界面圖形化開發(fā),Tomorrow is another day ,加油哇咔咔~ Unity3D 的世界中腳本還可以做很多事情,以后我在慢慢向各位道來~ 歡迎各位盆友可以和MOMO一起討論Unity3D游戲開發(fā),哇咔咔~~~



本文出自 “雨松MOMO的程序世界” 博客,請務(wù)必保留此出處http://xys289187120.blog.51cto.com/3361352/696792


     

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    99久久婷婷国产亚洲综合精品| 好东西一起分享老鸭窝| 欧美成人免费一级特黄| 精品偷拍一区二区三区| 欧美大胆女人的大胆人体| 国产内射一级一片内射高清视频 | 国产综合一区二区三区av| 日本成人三级在线播放| 老鸭窝老鸭窝一区二区| 亚洲中文字幕高清视频在线观看| 日本av一区二区不卡| 五月婷婷六月丁香亚洲| 爱草草在线观看免费视频| 日韩精品一区二区一牛| 成年女人下边潮喷毛片免费| 日韩在线免费看中文字幕| 一本久道久久综合中文字幕| 精品日韩中文字幕视频在线| 国产传媒免费观看视频| 欧洲精品一区二区三区四区| 年轻女房东2中文字幕| 国产精品一区二区香蕉视频| 欧美日韩亚洲国产综合网| 成人三级视频在线观看不卡| 欧美欧美欧美欧美一区| 久久大香蕉一区二区三区| 国产麻豆一区二区三区在| 久久99精品国产麻豆婷婷洗澡| 日本高清一道一二三区四五区| 不卡视频在线一区二区三区| 91超频在线视频中文字幕| 日本欧美一区二区三区就| 久久天堂夜夜一本婷婷| 中文字幕高清不卡一区| 日韩不卡一区二区在线| 国产一级性生活录像片| 亚洲国产一级片在线观看| 99久久精品视频一区二区| 亚洲深夜精品福利一区| 亚洲二区欧美一区二区| 日韩精品一区二区亚洲|