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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

模塊二:使用物理引擎項目七:角色控制器—控制角色運動UnityGameEngineUNITY模塊二使用物理引擎剛體——力的模擬碰撞體——物體碰撞檢測角色控制器——控制角色運動物理材質(zhì)與射線——射線技術(shù)應(yīng)用項目五項目六項目七項目八關(guān)節(jié)——關(guān)節(jié)模擬動畫項目九任務(wù)概述虛擬數(shù)字人展示了數(shù)字技術(shù)的強大和多樣性,它們可以像真實世界的人一樣做出各種動作。而游戲中的角色除了會有移動、爬樓梯等各種動作之外,還常常要與物體或其余的角色進行交互,這都需要用到角色控制器。本項目主要介紹物理引擎中角色控制器的使用以及如何在不同視角下進行角色運動控制。行業(yè)PPT模板/hangye/學(xué)習(xí)目標(biāo)011.能夠正確設(shè)置角色控制器的屬性參數(shù)2.能夠正確應(yīng)用角色控制器函數(shù)制作角色移動動畫教學(xué)目標(biāo)重難點重點:角色控制器的使用難點:角色控制函數(shù)的應(yīng)用項目實現(xiàn)02任務(wù)1:第三人稱視角控制角色移動1.利用Plane、Cube和Capsule搭建場景,場景中膠囊代表角色,右側(cè)的臺階高度為0.5,最上層的臺階高度為1,左側(cè)的斜坡坡度分別為30度和60度,正面的斜坡坡度為45度,其余場景可自行設(shè)計。制作步驟提示2.選中膠囊,移除自帶的膠囊碰撞體組件,為其添加一個角色控制器組件CharacterController。項目實現(xiàn)02任務(wù)1:第三人稱視角控制角色移動3.為膠囊添加ccController腳本。4.在膠囊的角色控制器組件中,設(shè)置允許其爬坡的角度(SlopeLimit)為45度,允許其行走的臺階高度(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è)置移動速度

privateCharacterControllercc;//聲明角色控制器

voidStart(){cc=GetComponent<CharacterController>();

}

項目實現(xiàn)02任務(wù)1:第三人稱視角控制角色移動5.為攝像機添加follow腳本,制作攝像機跟隨動畫。6.運行游戲,可以實現(xiàn)第三人稱角色的移動。制作步驟提示usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassfollow:MonoBehaviour{publicTransformmyTransform;privateVector3distance;voidStart(){distance=transform.position-myTransform.position;}voidUpdate(){transform.position=myTransform.position+distance;}}項目實現(xiàn)02任務(wù)1:第三人稱視角控制角色移動7.將膠囊移動的代碼簡化,更改為CCMove,仍然可以實現(xiàn)第三人稱角色的移動。制作步驟提示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àn)02任務(wù)2:第一人稱視角控制角色移動1.用與上一任務(wù)同樣的方法布置場景。制作步驟提示2.在場景中添加若干個Cube和Sphere,并為他們添加Rigidbody(剛體)組件。3.為攝像機添加CharacterController(角色碰撞器)組件。項目實現(xiàn)02任務(wù)2:第一人稱視角控制角色移動4.為主攝像機添加CCMove腳本。5.運行游戲,可以實現(xiàn)第一人稱視角角色的移動。制作步驟提示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;//角色移動速度

publicfloatpushForce=5f;//推動物體的力量

publicfloatrotateSpeed=3f;//角色轉(zhuǎn)身速度

privateCharacterControllercc;voidStart(){cc=GetComponent<CharacterController>();}

項目實現(xiàn)02任務(wù)3:實現(xiàn)上帝視角1.新建一個大一些的plane,在上面放一些Cube,利用給出的素材為其添加材質(zhì)。2.調(diào)整攝像機的高度和角度,讓其顯示部分場景。制作步驟提示項目實現(xiàn)02任務(wù)3:實現(xiàn)上帝視角3.為主攝像機添加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)中鍵實現(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;//聲明攝像機游戲物體

publicVector2moveRangeX;//聲明攝像機的移動范圍

publicVector2moveRangeY;publicVector2moveRangeZ;publicfloatmoveSpeed=1;//聲明攝像機的移動速度voidUpdate(){if(Input.GetMouseButton(1))

{floatmovex=Input.GetAxis("MouseX");項目實現(xiàn)02

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論