




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
模塊二:使用物理引擎項(xiàng)目七:角色控制器—控制角色運(yùn)動(dòng)UnityGameEngineUNITY模塊二使用物理引擎剛體——力的模擬碰撞體——物體碰撞檢測角色控制器——控制角色運(yùn)動(dòng)物理材質(zhì)與射線——射線技術(shù)應(yīng)用項(xiàng)目五項(xiàng)目六項(xiàng)目七項(xiàng)目八關(guān)節(jié)——關(guān)節(jié)模擬動(dòng)畫項(xiàng)目九任務(wù)概述虛擬數(shù)字人展示了數(shù)字技術(shù)的強(qiáng)大和多樣性,它們可以像真實(shí)世界的人一樣做出各種動(dòng)作。而游戲中的角色除了會(huì)有移動(dòng)、爬樓梯等各種動(dòng)作之外,還常常要與物體或其余的角色進(jìn)行交互,這都需要用到角色控制器。本項(xiàng)目主要介紹物理引擎中角色控制器的使用以及如何在不同視角下進(jìn)行角色運(yùn)動(dòng)控制。行業(yè)PPT模板/hangye/學(xué)習(xí)目標(biāo)011.能夠正確設(shè)置角色控制器的屬性參數(shù)2.能夠正確應(yīng)用角色控制器函數(shù)制作角色移動(dòng)動(dòng)畫教學(xué)目標(biāo)重難點(diǎn)重點(diǎn):角色控制器的使用難點(diǎn):角色控制函數(shù)的應(yīng)用項(xiàng)目實(shí)現(xiàn)02任務(wù)1:第三人稱視角控制角色移動(dòng)1.利用Plane、Cube和Capsule搭建場景,場景中膠囊代表角色,右側(cè)的臺(tái)階高度為0.5,最上層的臺(tái)階高度為1,左側(cè)的斜坡坡度分別為30度和60度,正面的斜坡坡度為45度,其余場景可自行設(shè)計(jì)。制作步驟提示2.選中膠囊,移除自帶的膠囊碰撞體組件,為其添加一個(gè)角色控制器組件CharacterController。項(xiàng)目實(shí)現(xiàn)02任務(wù)1:第三人稱視角控制角色移動(dòng)3.為膠囊添加ccController腳本。4.在膠囊的角色控制器組件中,設(shè)置允許其爬坡的角度(SlopeLimit)為45度,允許其行走的臺(tái)階高度(StepOffset)為0.5。制作步驟提示voidUpdate(){if(cc.isGrounded)//判斷角色是否在地面
{if(Input.GetKey(KeyCode.D))//按D鍵向右走
{cc.Move(Vector3.right*speed*Time.deltaTime);}if(Input.GetKey(KeyCode.A))//按A鍵向左走
{cc.Move(Vector3.left*speed*Time.deltaTime);}if(Input.GetKey(KeyCode.W))//按W鍵向前走
{cc.Move(Vector3.forward*speed*Time.deltaTime);}if(Input.GetKey(KeyCode.S))//按S鍵向后走
{cc.Move(Vector3.back*speed*Time.deltaTime);}}else{cc.Move(Vector3.down*speed*Time.deltaTime);//若不在地面,則讓其落到地面
}}}publicclassccController:MonoBehaviour{publicfloatspeed=3;//設(shè)置移動(dòng)速度
privateCharacterControllercc;//聲明角色控制器
voidStart(){cc=GetComponent<CharacterController>();
}
項(xiàng)目實(shí)現(xiàn)02任務(wù)1:第三人稱視角控制角色移動(dòng)5.為攝像機(jī)添加follow腳本,制作攝像機(jī)跟隨動(dòng)畫。6.運(yùn)行游戲,可以實(shí)現(xiàn)第三人稱角色的移動(dòng)。制作步驟提示usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassfollow:MonoBehaviour{publicTransformmyTransform;privateVector3distance;voidStart(){distance=transform.position-myTransform.position;}voidUpdate(){transform.position=myTransform.position+distance;}}項(xiàng)目實(shí)現(xiàn)02任務(wù)1:第三人稱視角控制角色移動(dòng)7.將膠囊移動(dòng)的代碼簡化,更改為CCMove,仍然可以實(shí)現(xiàn)第三人稱角色的移動(dòng)。制作步驟提示usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassCCMove:MonoBehaviour{privateCharacterControllercc;privatefloatspeed=5f;voidStart(){cc=GetComponent<CharacterController>();}voidUpdate(){floatx=Input.GetAxis("Horizontal");floaty=Input.GetAxis("Vertical");cc.SimpleMove(newVector3(x*speed,transform.localPosition.y,y*speed));}}項(xiàng)目實(shí)現(xiàn)02任務(wù)2:第一人稱視角控制角色移動(dòng)1.用與上一任務(wù)同樣的方法布置場景。制作步驟提示2.在場景中添加若干個(gè)Cube和Sphere,并為他們添加Rigidbody(剛體)組件。3.為攝像機(jī)添加CharacterController(角色碰撞器)組件。項(xiàng)目實(shí)現(xiàn)02任務(wù)2:第一人稱視角控制角色移動(dòng)4.為主攝像機(jī)添加CCMove腳本。5.運(yùn)行游戲,可以實(shí)現(xiàn)第一人稱視角角色的移動(dòng)。制作步驟提示voidUpdate(){transform.Rotate(newVector3(0,Input.GetAxis("Horizontal")*rotateSpeed,0));
Vector3forward=transform.TransformDirection(Vector3.forward);
cc.SimpleMove(forward*speed*Input.GetAxis("Vertical"));
}privatevoidOnControllerColliderHit(ControllerColliderHithit)
{Rigidbodyrig=hit.collider.attachedRigidbody;
if(rig==null||rig.isKinematic)return;if(hit.moveDirection.y<-0.3f)
return;
Vector3pushDirection=newVector3(hit.moveDirection.x,0,hit.moveDirection.z);
rig.velocity=pushDirection*pushForce;
}}publicclassCCMove:MonoBehaviour{publicfloatspeed=5f;//角色移動(dòng)速度
publicfloatpushForce=5f;//推動(dòng)物體的力量
publicfloatrotateSpeed=3f;//角色轉(zhuǎn)身速度
privateCharacterControllercc;voidStart(){cc=GetComponent<CharacterController>();}
項(xiàng)目實(shí)現(xiàn)02任務(wù)3:實(shí)現(xiàn)上帝視角1.新建一個(gè)大一些的plane,在上面放一些Cube,利用給出的素材為其添加材質(zhì)。2.調(diào)整攝像機(jī)的高度和角度,讓其顯示部分場景。制作步驟提示項(xiàng)目實(shí)現(xiàn)02任務(wù)3:實(shí)現(xiàn)上帝視角3.為主攝像機(jī)添加CameraController腳本。制作步驟提示
floatmovez=Input.GetAxis("MouseY");Vector3cameraPos=Camera.transform.position;cameraPos-=newVector3(movex*moveSpeed,0,0);cameraPos-=newVector3(0,0,movez*moveSpeed);if(cameraPos.x>moveRangeX.x&&cameraPos.x<moveRangeX.y&&cameraPos.z>moveRangeZ.x&&cameraPos.z<moveRangeZ.y){Camera.transform.position=cameraPos;}}floatscrollWheelValue=Input.GetAxis("MouseScrollWheel");if(scrollWheelValue!=0)//按鼠標(biāo)中鍵實(shí)現(xiàn)場景的縮放
{Vector3cameraPos=Camera.transform.position;cameraPos+=Camera.transform.forward*scrollWheelValue*moveSpeed*5;if(cameraPos.y>moveRangeY.x&&cameraPos.y<moveRangeY.y&&cameraPos.z>moveRangeZ.x&&cameraPos.z<moveRangeZ.y){Camera.transform.position=cameraPos;}}}}usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassCameraController:MonoBehaviour{publicGameObjectCamera;//聲明攝像機(jī)游戲物體
publicVector2moveRangeX;//聲明攝像機(jī)的移動(dòng)范圍
publicVector2moveRangeY;publicVector2moveRangeZ;publicfloatmoveSpeed=1;//聲明攝像機(jī)的移動(dòng)速度voidUpdate(){if(Input.GetMouseButton(1))
{floatmovex=Input.GetAxis("MouseX");項(xiàng)目實(shí)現(xiàn)02
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司讀書會(huì)策劃方案
- 公司租車活動(dòng)方案
- 公司文娛游戲活動(dòng)方案
- 公司新人培養(yǎng)活動(dòng)方案
- 公司福利房活動(dòng)方案
- 公司生日小活動(dòng)方案
- 公司組織電影活動(dòng)方案
- 公司改善之星活動(dòng)方案
- 公司新年patty活動(dòng)方案
- 公司紀(jì)念活動(dòng)方案
- 信息系統(tǒng)的使用與維護(hù)管理制度
- 常州保安證考試題及答案
- 《合理用藥安全教育》課件
- 稽留流產(chǎn)治療
- NES-3000 ECDIS電子海圖顯示與信息系統(tǒng)操作手冊
- 2025年上半年內(nèi)蒙古包頭市市直事業(yè)單位招考易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 雪亮工程可行性研究報(bào)告
- 2025年度人工智能產(chǎn)業(yè)投資基金入股協(xié)議4篇
- 聚脲涂料施工方案
- T-CCIASD 10012-2024 ISO 標(biāo)準(zhǔn)集裝箱用水性涂料
- 激越管理的22項(xiàng)建議(精神科患者激越的評(píng)估和管理)
評(píng)論
0/150
提交評(píng)論