成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Unity3D 游戲引擎之腳本實現模型的平移與旋轉

移動開發 iOS 游戲開發
這一章MOMO帶大家討論一下Unity3D中使用的腳本,腳本的最大特點就是用少量的代碼實現繁多的功能,避免大量的代碼。Untiy3D這一塊可以使用腳本做很多東西,那么我們開始學習腳本吧。
這一章MOMO帶大家討論一下Unity3D中使用的腳本,腳本的***特點就是用少量的代碼實現繁多的功能,避免大量的代碼。Untiy3D這一塊可以使用腳本做很多東西,那么我們開始學習腳本吧。
有關Unity3D 腳本的API所有文檔盆友們都可以去這里查閱。
官方API 文檔:http://unity3d.com/support/documentation/ScriptReference/
腳本描述
Scripting inside Unity consists of attaching custom script objects called behaviours to game objects. Different functions inside the script objects are called on certain events. The most used ones being the following: Update: This function is called before rendering a frame. This is where most game behaviour code goes, except physics code. FixedUpdate: This function is called once every physics time step. This is the place to do physics-based game behaviour. Code outside any function: Code outside functions is run when the object is loaded. This can be used to initialise the state of the script. Note: Sections of this document assume you are using Javascript, but see Writing scripts in C# & Boo for information about how to use C# or Boo scripts.
大概意思是介紹三個重要的腳本函數

Update:這個函數在渲染幀之前被調用,大部分的游戲行為代碼都在這里執行,除 物理代碼。

FixedUpdate:這個函數在每進行一次物理時間步調時被調用,它是基于物理的游戲行為。

Code outside any function:這類函數在對象加載時被調用,它可以用來腳本的初始化工作。

本章我們著重討論Update 這個函數,創建腳本與綁定腳本的方法在第二章中已經介紹過了不會的盆友請去那里閱讀。雖然官方推薦腳本使用JavaScript編輯,但是其實C#更符合 Unity3D的編程思想,推薦新人先使用JavaScript,然后在學習C#,因為JavaScript更容易上手一些。

在三維世界中創建兩個矩形,然后在添加兩個腳本分別綁定在這兩個箱子上,腳本的名稱暫時命名為 js0 、js1。

在Project 頁面中打開剛剛創建的js0,發現Unity3D 已經將Update 函數添加在腳本中了。

模型的移動

Translate方法中的三個參數分別標示,模型在三維世界中X 、Y、Z 軸移動的單位距離。

[代碼]c#/cpp/oc代碼:

01 function Update () { 
02    
03 //模型x軸,移動一個單位 
04 transform.Translate(1,0,0); 
05    
06 //模型y軸,移動一個單位 
07 transform.Translate(0,1,0); 
08    
09 //模型z軸,移動一個單位 
10 transform.Translate(0,0,1); 
11    
12 }

執行代碼發現參數為1速度居然移動的著么快,怎么能修改移動的速度呢?

Time.deltaTime:標示上一次調用Update一秒為標示每幀執行所消耗的時間。

有了這個參數,我們就可以根據它修改方向移動的速度了。

[代碼]c#/cpp/oc代碼:

01 function Update () { 
02    
03     //設置移動的范圍 
04     var translation : float = Time.deltaTime * 10; 
05        
06     //移動的方向 
07     transform.Translate (translation, 0, 0); 
08     transform.Translate (0, translation, 0); 
09     transform.Translate (0, 0, translation); 
10    
11 }

模型的平移可以選擇一個參照物,下面代碼第二個參數設置模型移動參照物,這里設置成攝像機。那么模型將以相對與攝像機進行移動。

[代碼]c#/cpp/oc代碼:

01 function Update () { 
02    
03     //設置移動范圍 
04     var translation : float = Time.deltaTime * 10; 
05        
06     //相對于攝像機,模型向右移動。 
07     transform.Translate(Vector3.right * translation, Camera.main.transform); 
08        
09     // 相對于攝像機,模型向上移動。 
10     transform.Translate(Vector3.up * translation, Camera.main.transform); 
11        
12     // 相對于攝像機,模型向左移動。 
13     transform.Translate(Vector3.left * translation, Camera.main.transform); 
14        
15     }

模型的旋轉

 

Rotate方法中的三個參數分別標示,模型在三維世界中X 、Y、Z 軸旋轉的單位距離。

 

[代碼]c#/cpp/oc代碼:

01 function Update () { 
02       
03    //以模型X軸旋轉,單位為2. 
04    transform.Rotate(2, 0, 0); 
05       
06    //以模型Y軸旋轉,單位為2. 
07    transform.Rotate(0, 2, 0); 
08        
09    //以模型Z軸旋轉,單位為2. 
10    transform.Rotate(0, 0, 2); 
11 }
模型的旋轉可以選擇一個參照物,下面代碼第二個參數設置模型移動參照物,這里設置成3D世界。那么模型將以相對與整個3D世界進行旋轉。

 

 

[代碼]c#/cpp/oc代碼:

01 function Update () { 
02       
03    //設置旋轉的范圍 
04     var rotate : float = Time.deltaTime * 100; 
05        
06     //旋轉的方向 
07        
08     //相對于世界坐標中心向右旋轉物體 
09     transform.Rotate(Vector3.right * rotate, Space.World); 
10        
11      //相對于世界坐標中心向上旋轉物體 
12     transform.Rotate(Vector3.up * rotate, Space.World); 
13        
14      //相對于世界坐標中心向左旋轉物體 
15     transform.Rotate(Vector3.left * rotate, Space.World); 
16 }
如下圖所示,給出一個小例子,在腳本中移動箱子的坐標,在屏幕中記錄模型移動的位置,并且顯示在游戲視圖中。效果很不錯吧,嘻嘻~~

完整代碼

[代碼]c#/cpp/oc代碼:

01 //X軸移動位置 
02 var posX : float; 
03 //Y軸移動位置 
04 var posY : float; 
05 //Z軸移動位置 
06 var posZ : float; 
07    
08    
09    
10 function Update () { 
11       
12   //設置移動的范圍 
13     var x : float = Time.deltaTime * 10; 
14     var y : float = Time.deltaTime * 8; 
15     var z : float = Time.deltaTime * 5; 
16        
17     //移動的方向X軸 
18     transform.Translate (x, 0, 0); 
19        
20     //移動的方向Y軸 
21     transform.Translate (0, y, 0); 
22     //移動的方向Z軸 
23     transform.Translate (0, 0, z); 
24        
25        
26     //賦值計算模型在三維坐標系中的位置 
27      posX += x;  
28      posY += y;  
29      posZ += z;  
30
31    
32 function OnGUI () {   
33              
34   //將坐標信息顯示在3D屏幕中 
35   GUI.Label(Rect(50, 100,200,20),"x pos is" + posX +"float");   
36   GUI.Label(Rect(50, 120,200,20),"y pos is" + posY +"float");   
37   GUI.Label(Rect(50, 140,200,20),"z pos is" + posZ +"float");   
38      
39 }
責任編輯:冰凝兒
相關推薦

2012-12-24 08:52:44

iOSUnity3D

2012-12-24 08:46:50

iOSUnity3D

2012-12-24 08:40:12

2012-12-24 08:54:47

iOSUnity3D

2012-12-24 09:06:14

iOSUnity3D

2012-12-24 08:48:25

iOSUnity3D

2012-12-24 08:50:21

iOSUnity3D

2012-12-24 09:04:04

iOSUnity3D

2012-12-24 08:45:19

iOSUnity3D

2012-12-24 09:07:09

iOSUnity3D

2012-12-24 08:57:35

iOSUnity3D

2012-12-24 09:01:41

iOSUnity3D

2013-04-25 09:56:24

unity3D手機游戲引擎

2012-12-24 09:00:31

iOSUnity3D

2012-12-24 08:59:13

iOSUnity3D

2012-12-24 08:56:15

iOSUnity3D

2013-04-25 10:03:07

unity3D手機游戲引擎

2012-12-24 09:02:48

iOSUnity3D

2012-12-24 09:11:58

iOSUnity3D

2012-12-24 09:20:48

AndoidUnity3D
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 三级免费 | 国产成人免费视频 | 91精品国产91久久久久久吃药 | av一区二区三区四区 | 亚洲毛片在线观看 | 视频在线一区二区 | 91精品国产91久久久久久密臀 | 色综久久 | 亚洲精品久久久 | 国产精品一二三区在线观看 | 亚洲欧美第一视频 | 中文字幕国产 | 国产高清精品一区 | 久久久亚洲综合 | 免费黄色录像视频 | 亚洲人成人一区二区在线观看 | 久久久精品一区二区三区 | 亚洲精品三级 | 成人免费在线播放 | 午夜视频在线观看一区二区 | 日韩中文字幕在线观看 | 精品在线一区二区 | 国产视频福利一区 | 国产在线激情视频 | 久久综合久色欧美综合狠狠 | 欧美久久一区二区 | 国产精品久久国产愉拍 | 中文字幕乱码视频32 | 成人免费淫片aa视频免费 | 国产精品久久亚洲7777 | 日韩成人免费av | 免费看91| 日韩1区 | 精品久久视频 | 成人精品一区二区三区 | 亚洲成人一区 | 正在播放国产精品 | 欧美日韩第一页 | 龙珠z国语版在线观看 | 全部免费毛片在线播放网站 | 国产一区二区三区视频 |