Uniyt3D物體移動的多種方法以及(jí)手套抓取方法
在unity3d中(zhōng),有(yǒu)多種方式可以改變物體的坐標,實現移動的目的,其本質是每(měi)幀修改物體的(de)position。
1. 通過Transform組件(jiàn)移動物體。
Transform 組件用於描述物體在空間中的狀態,它包括 位置(position), 旋轉(zhuǎn)(rotation)和 縮放(scale)。 其實所有的移動都會導(dǎo)致position的改變,這裏(lǐ)所說的通過Transform組件來移動物體,指的是直接操作Transform來控製物體的位置(position)。
1.1 Transform.Translate 該方法可(kě)以將物體從當前位置,移動到指定位置,並且可以選擇參照的坐標係。 當需要進行坐標係(xì)轉換時,可以(yǐ)考慮(lǜ)使用該方(fāng)法以省去轉換坐標係的步驟。
public function Translate(translation: Vector3, relativeTo: Space = Space.Self):
1.2 Vector3.Lerp, Vector3.Slerp, Vector3.MoveTowards Vector3 既可以表示三維空間中的(de)一個點,也可以(yǐ)表示一個(gè)向量。這三個方法均為插值方法, Lerp為線(xiàn)性插值,Slerp為球(qiú)形插值, MoveTowards在Lerp的基礎上增加了(le)限製速度功能。 當需要從指定A點移動到B點時,可以考(kǎo)慮時候這些方法。
1.3 Vector3.SmoothDamp 該方法(fǎ)是可以平滑的(de)從A逐漸移動到B點,並且可以控(kòng)製速度,常見的用法是相機跟隨目標。
2.4 Transform.position 有時重新賦值position能更快實現我們的目標。
2. 通過Rigidbody組件移動物體
Rigidbody組件用於模擬物體的物理狀態,比如物體受重力影響,物體被碰撞後的擊(jī)飛等等。 注意:關於Rigidbody的調用均應放(fàng)在FixedUpdate方法中,該方法會在每一次執行物理模擬前被調用(yòng)。
2.1 Rigidbody.velocity 設(shè)置剛體速度可以讓物體運動並且忽略靜摩擦力,這會(huì)讓物體快(kuài)速從靜止狀態進入運動(dòng)狀態。
2.2 Rigidbody.AddForce 給剛體添(tiān)加一個方向的力,這種方式適合模擬物體在外力的(de)作用下的運動狀態。
2.3 Rigidbody.MovePosition 剛體受到物理約束的情況(kuàng)下,移動到指定點。
3. 通過CharacterController組件移動物體
CharacterController用於控製第一人稱或第三(sān)人(rén)稱角色的運動,使用這種(zhǒng)方式可以(yǐ)模擬(nǐ)人的一些行為,比如限製角色爬坡(pō)的斜度,步伐的高(gāo)度等。
3.1 CharacterController.SimpleMove 用(yòng)於(yú)模擬簡單運動(dòng),並(bìng)且自(zì)動應用(yòng)重力,返回值表示角色當前是(shì)否著地。
3.2 CharacterController.Move 模擬(nǐ)更(gèng)複雜的運動,重(chóng)力需要通過代碼實現,返回(huí)值表示角色與周(zhōu)圍的碰(pèng)撞信息(xī)。
4. 使用WONGLOVE數據手套配套的(de)腳本代(dài)碼可以快(kuài)速(sù)實現抓握,拿起,放下等(děng)動作。
- 上一(yī)篇:wonglove力反饋器支持UNITY3D開發 2018/4/23
- 下一篇:Unity3D開源了,引擎和MONO編輯(jí)器的C#源代碼發布了 2018/3/28
