![設計之前課件第三天_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/e278efb6-7813-46d5-9c5a-a10043cea728/e278efb6-7813-46d5-9c5a-a10043cea7281.gif)
![設計之前課件第三天_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/e278efb6-7813-46d5-9c5a-a10043cea728/e278efb6-7813-46d5-9c5a-a10043cea7282.gif)
![設計之前課件第三天_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/e278efb6-7813-46d5-9c5a-a10043cea728/e278efb6-7813-46d5-9c5a-a10043cea7283.gif)
![設計之前課件第三天_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/e278efb6-7813-46d5-9c5a-a10043cea728/e278efb6-7813-46d5-9c5a-a10043cea7284.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、4.4 Vector3類(向量)3D游戲開發(fā)中經(jīng)常需要用到向量和向量的運算,Unity中提供了完整的向量以及向量操縱方法,分別為表示二維向量的Vector2類和表示三維向量的Vector3類。二維和三維其實都差不多,這里我們只學習Vector3類就可以了。創(chuàng)建一個Vector3的實例用以下方式:(1)Vector3 vec1 = new Vector3(); vec1.x = 1;vec1.y = 2;vec1.z = 3;(2)Vector3 vec2 = new Vector3(1,2,3);Vector3類中也定義了一些常量,從Mono編輯器中可以跳進去看到如下,通過腳本,我們可以打印這
2、些常量的值。頁碼:1/12關于向量操縱,還有很多,像我們高中數(shù)學中向量的乘積、+、-、*、/等。常用的方法有Distance求點的距離、Max/Min返回兩個向量中最長/最短的向量。具體可以看課堂上給的中文API文檔,僅供參考。4.5 成員變量和靜態(tài)成員變量一般情況下,定義在方法體外的變量是成員變量,如果這里變量的訪問權限是public,就可以在檢視視圖中查看到,這樣就可以在檢視視圖中修改,它的值會一并自動保存。如果聲明的是一個組件類型的變量,需要在檢視視圖中給這個變量賦值一個對象。具體操作,前面的例子已經(jīng)包含,不再贅述。private和protected是不能再檢視視圖中查看到的。C#腳本中
3、可以通過static關鍵字來創(chuàng)建全局變量,這樣就可以在不同腳本間調(diào)用這個變量。如下,public static int test;如果想從另外一個腳本調(diào)用變量”test”,可以通過”腳本名.變量名”的方法來調(diào)用。4.6 實例化游戲?qū)ο蟮谌绿岬竭^動態(tài)創(chuàng)建對象的方法Instantiate,以下就給出一段代碼,不再贅述。using UnityEngine;using System.Collections;public class InstantiateDemo : MonoBehaviour protected GameObject obj;/ Use this for initializatio
4、nvoid Start () GameObject objT = GameObject.Find("Cube");頁碼:2/12obj = Instantiate(objT,objT.transform.position+new Vector3(1,1,1),objT.transform.rotation) as GameObject;/as 是強制類型轉(zhuǎn)換/ Update is called once per framevoid Update () obj.transform.Rotate(10,0,0);4.7 Unity中一些比較重要的類(1) MonoBehavio
5、r類MonoBehavior類是每個腳本的基類,其繼承自Behavior類。都繼承自Object類。MonoBehavior類中的一些方法可以重寫,這些方法會被系統(tǒng)在固定的時間回調(diào)。常用的可以重寫的方法有很多。頁碼:3/12方法說明Update腳本掛載到對象,每幀都會調(diào)用一次FixedUpdate腳本掛載到對象,會在固定的物理時間調(diào)用一次Awake腳本實例被載入時該方法被調(diào)用Start僅在Update方法第一次被調(diào)用前調(diào)用OnCollisionEnter當剛體撞擊或碰撞體撞擊剛體時該方法被調(diào)用OnEnable對象變?yōu)榭捎没蚣せ顮顟B(tài)時調(diào)用OnDisable對象變?yōu)椴豢捎没蚍羌せ顮顟B(tài)時該方法被調(diào)用
6、OnDestroy對象被銷毀時調(diào)用OnGUI渲染和處理GUI事件時被調(diào)用同樣。MonoBehavior類中有許多被子類繼承的成員變量,這些變量可以在腳本中直接使用。例如之前用的transform變量,其就是繼承自MonoBehavior類,不用通過獲取Transform組件也能得到對象的transform屬性。在Unity5.x之后,很多的成員變量已不再存在,需要通過獲取組件才能獲取相關屬性。具體需要去Mono中查看。不過建議除了transform屬性其他都通過獲取組件來獲取屬性。MonoBehavior類中也包含了很多的成員方法,這些方法在子類也同樣可以使用。(2)Transform類頁碼:
7、4/12成員方法說明GetComponent返回游戲?qū)ο笊现付Q的組件GetComponentsInChildren返回游戲?qū)ο蠹捌渥訉ο笊现付愋偷乃薪M件GetComponentInChildren返回游戲?qū)ο蠹捌渥訉ο笊现付愋偷牡谝粋€找到的組件GetComponents返回游戲?qū)ο笊现付Q的全部組件SendMessage掛載在游戲?qū)ο蟮拿恳粋€腳本中調(diào)用指定名稱的方法Instantiate動態(tài)的實例化一個對象Destroy銷毀一個游戲?qū)ο蟆⒔M件、或資源DestroyImmediate立即銷毀物體FindObjectsOfType返回指定的游戲?qū)ο蟮拿Q的且被激活的所有物體列表Find
8、ObjectOfType返回指定的游戲?qū)ο蟮拿Q的且被激活的第一個物體場景中的每一個物體都有一個”Transform”組件,它就是Transform實例化的對象,用于儲存并操控物體的位置、旋轉(zhuǎn)、縮放。每一個Transform可以有一個父級,允許分層次應用位置、旋轉(zhuǎn)、縮放(既參考系不同)。層次關系可以在層級視圖中查看到。打開Mono可以進入到Transform中查看到它其中的成員函數(shù)和變量。這里需要提一下LookAt可以被用作相機跟隨物體的移動,可以用于那種第三人稱的游戲。4.8 輸入對象Unity引擎為開發(fā)人員提供了兩個輸入對象-Touch 與Input。開發(fā)人員通過Touch與Input輸入
9、對象中的方法以及參數(shù)可以非常方便地獲取用戶輸入的各種參數(shù),包括觸摸位置、相位、手指按下后在屏幕的移動距離,Input還能處理鍵盤的輸入等。(1) Touch輸入對象Touch結構體對象中有很多的靜態(tài)變量,通過這些變量可以輕松獲取手指在可觸摸設備上的位置等信息,以上是Touch中變量和說明。關于Touch的游戲只能在真機上才能測試。(2) Input輸入對象Input相對于Touch而言,Input是Unity中單獨的一個類,可以通過Input.touchCount、Input.touches以及Input.GetTouch配合觸摸使用,而且Input還可以處理鍵盤的敲擊以及鼠標的點擊事件,以下
10、是Input對象的主要變量。頁碼:5/12變量名含義變量名含義fingerID手指索引position手指觸摸位置deltaPosition距離上次改變的距離增量deltaTime自上次改變的時間增量tapCount點擊次數(shù)phase觸摸相位(.)mousePosition變量變量mousePosition是一個三維的坐標,用于獲取當前鼠標的像素坐標。像素坐標的坐標系是以屏幕左下角為(0,0)點,右上角為(Screen.width,Screen.height)計算的。具體看如下代碼,void Update()if(Input.GetButtonDown("Fire1") D
11、ebug.Log(Input.mousePosition);(.)anyKey變量與anyKeyDownanyKey用監(jiān)聽當前是否有按鍵按下,不管什么按鍵都會觸發(fā),若按住鍵不放則一直觸發(fā)。anyKeyDown也能監(jiān)聽當前是否有按鍵按下,不管不同的,若按住鍵不放只會在按住的時候觸發(fā)一次,之后就不會觸發(fā),直到松開再次按下便能觸發(fā)。(.)inputString變量頁碼:6/12變量名含義變量名含義mousePosition當前鼠標的像素坐標anyKey當前是否有按鍵按住,若有則trueanyKeyDown用戶點擊任何鍵盤或鼠標按鈕, 第一禎返回trueinputString返回鍵盤輸入的字符串a(chǎn)cc
12、eleration加速度傳感器的值touches返回當前所有觸摸列表變量inputString返回鍵盤在這一禎中輸入的字符串,在返回的字符串中只包含有ASCII碼的字符串。若沒有則為一個空串??捎萌缦麓a進行測試,void Update()if(Input.inputString !="")Debug.Log(Input.inputString);(.)acceleration變量變量acceleration可用獲取設備在當前三維空間中的線性加速度,常用于3D游戲的重力感應的游戲。當具有加速度傳感器的設備傾斜時,就會回傳一個代表設備的傾斜加速度三維向量,使用Input.ac
13、celeration變量可用獲取該值。(.)touches變量變量touches可用于獲取當前在屏幕上所有觸控的引用(Touch類型),可用根據(jù)索引可以輕易地獲取各個觸控點的信息。如下代碼所示, void Update()int fingerCount = 0;/觸摸計數(shù)器foreach(Touch touch in Input.touches)/遍歷觸摸的點頁碼:7/12if(touch.phase != TouchPhase.Ended && touch.phase != TouchPhase.Canceled)/當前觸摸沒結束或者取消fingerCount+; /觸摸計數(shù)
14、器自加1if(fingerCount > 0)Debug.LogFormat("User has0fingers touching the Screen");Input除了以上幾個常用變量以外,還有很多實用的方法,如下所示,(.)GetAxis方法和GetAxisRaw方法頁碼:8/12變量名含義GetAxis返回被標識的虛擬軸的值GetAxisRaw返回沒有經(jīng)過平滑處理的虛擬軸的值GetButton虛擬按鈕被按下,則該方法返回trueGetButtonDown虛擬按鈕被按下的一幀,該方法返回trueGetButtonUp虛擬按鈕被按下后被抬起的一幀,該方法返回tru
15、eGetKey按下指定按鈕時返回trueGetKeyDown按下指定按鈕的一幀時返回trueGetKeyUp按下指定按鈕然后抬起的一幀時返回trueGetMouseButton指定的鼠標按鍵按下時返回trueGetMouseButtonDown指定的鼠標按鍵按下時的一幀返回trueGetMouseButtonUp指定的鼠標按鍵按下然后抬起時的一幀返回trueGetTouch返回當前觸摸(Touch對象)GetAxis方法和GetAxisRaw方法都是獲取虛擬軸的值得方法。在游戲的開發(fā)過程中,經(jīng)常會在屏幕中添加一些2D的虛擬軸,可以通過觸控或者鼠標事件改變虛擬軸的值來控制場景中的游戲?qū)ο?。如下?/p>
16、碼所示。using UnityEngine;using System.Collections;public class TouchDemo : MonoBehaviour / Use this for initializationvoid Start () / Update is called once per framevoid Update () Debug.Log(Input.GetAxis("Horizontal");/-11 Debug.Log(Input.GetAxis("Vertical");/-11頁碼:9/12如果以上GetAxis換成
17、GetAxisRaw就只有-1、0、1,而上面的值都是在-11之間變化。關于Axis可以在Unity中查看,如下圖所示,(.)GetButton方法、GetButtonDown方法與GetButtonUp方法這3種方法用監(jiān)聽虛擬按鈕的按下狀態(tài),包括按鈕按下時、按鈕按下過程、按鈕抬起時3個狀態(tài)。虛擬按鈕如上圖所示。測試代碼如下。using UnityEngine;using System.Collections;public class TouchDemo : MonoBehaviour / Use this for initializationvoid Start () 頁碼:10/12/ U
18、pdate is called once per framevoid Update () if(Input.GetButton("Fire1")Debug.Log("Fire1");if(Input.GetButtonDown("Fire1") Debug.Log("Fire1 Down");if(Input.GetButtonUp("Fire1") Debug.Log("Fire1 Up");(.)GetKey方法、GetKeyDown方法、GetKeyUp方法這3種方法用于監(jiān)聽鍵盤上的按鍵的狀態(tài),其他跟上面差不多,代碼如下。void Update () if(Input.GetKey("up")Debug.Log("up key");if(Input.GetKeyDown(KeyCode.UpArrow)/可以用鍵碼 鍵名”up”的鍵碼就是UpArrowDebug.Log("up key down");頁
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年公共設施建設與維護承包合同范文
- 九江學院《形式語言》2023-2024學年第二學期期末試卷
- 河南建筑職業(yè)技術學院《語文基礎與前沿問題》2023-2024學年第二學期期末試卷
- 2025年辦公區(qū)域租用合同
- 中南民族大學《服裝工藝創(chuàng)新》2023-2024學年第二學期期末試卷
- 黃岡職業(yè)技術學院《動作捕捉及數(shù)字掃描》2023-2024學年第二學期期末試卷
- 南昌職業(yè)大學《智能微電網(wǎng)控制技術》2023-2024學年第二學期期末試卷
- 2025年家居用品銷售策劃合同范本
- 2025年合同中的權益保障解析
- 2025年公共區(qū)域綠化植物采購及養(yǎng)護合同
- 北京市海淀區(qū)2024-2025學年五年級上冊語文期末試卷(有答案)
- 完整版金屬學與熱處理課件
- T∕CSTM 00640-2022 烤爐用耐高溫粉末涂料
- 304不銹鋼管材質(zhì)證明書
- 民用機場不停航施工安全管理措施
- 港口集裝箱物流系統(tǒng)建模與仿真技術研究-教學平臺課件
- 新教科版2022年五年級科學下冊第2單元《船的研究》全部PPT課件(共7節(jié))
- QTD01鋼質(zhì)焊接氣瓶檢驗工藝指導書
- 人教版七年級英語下冊全冊英語單詞默寫直接打印
- 公共衛(wèi)生服務考核評分標準(新)
- 《乒乓球》體育課教案(全)
評論
0/150
提交評論