[SceneKit專題]2-physics物理效果

蘋果API搬運工發表於2017-12-25

說明

本系列文章是對<3D Apple Games by Tutorials>一書的學習記錄和體會

此書對應的程式碼地址

SceneKit系列文章目錄

physics body物理形體

  • Static(靜態的):形體不移動:當其他物體能夠與該型別碰撞時,該型別自身不受任何力和碰撞的影響,該型別用於牆壁和大質量不可移動的岩石;
  • Dynamic(動態的):可以被力和碰撞影響,用於可移動的桌椅,杯子;
  • Kinematic(運動學的):類似於靜態形體,不受力和碰撞影響.但你可以移動該型別,移動過程中與其他動態形體碰撞.用於移動的電梯或可以開關的門;

physics shapes物理形狀

物理形狀決定了物理引擎在處理碰撞時的形狀檢測. 為了讓物理模擬器執行的更快,最好將物理形狀設定為簡單的方形,球形或其他系統提供的原始形狀,大略匹配節點外觀就行了

QQ20170402-223133@2x.png

如果想要新增更多細節到物理形狀,可以手動建立SCNPhysicsShape並傳入,否則可使用nil

geometryNode.physicsBody = SCNPhysicsBody(type: .Dynamic, shape: nil)
複製程式碼

Scene Kit中的scene預設開啟了重力,當設定過動態形體後,物體就會受到重力影響下落

forces力

力使用3維向量SCNVector3表示,使用applyForce(_: atPosition: impluse:)方法來新增一個力,並指定位置.一個力可以同時影響線速度和角速度. impluse脈衝狀只作用一次,比如踢一個球,非脈衝狀的則可以持續作用. Position位置可以影響力的作用效果

QQ20170402-225158@2x.png

torque力矩

力矩使用4維向量SCNVector4表示,使用applyTorque(_: impulse:)來新增一個力矩,力矩隻影響角動量. x-,y-,z-指定旋轉軸,w-指定旋轉角度也就是大小值 Scene Kit使用國際單位制,因此質量單位是kg千克,力的單位是N牛,脈衝單位是N-s牛秒,力矩單位是N-m牛米.

WX20171203-134257@2x.png

相關文章