教學(xué)課件 07項(xiàng)目七:角色控制器-控制角色運(yùn)動(dòng)_第1頁
教學(xué)課件 07項(xiàng)目七:角色控制器-控制角色運(yùn)動(dòng)_第2頁
教學(xué)課件 07項(xiàng)目七:角色控制器-控制角色運(yùn)動(dòng)_第3頁
教學(xué)課件 07項(xiàng)目七:角色控制器-控制角色運(yùn)動(dòng)_第4頁
教學(xué)課件 07項(xiàng)目七:角色控制器-控制角色運(yùn)動(dòng)_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論