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