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

說明

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

此書對應的代碼地址github

SceneKit系列文章目錄swift

physics body物理形體

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

physics shapes物理形狀

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

QQ20170402-223133@2x.png

若是想要添加更多細節到物理形狀,能夠手動建立SCNPhysicsShape並傳入,不然可以使用nilpost

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

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

forces力

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

QQ20170402-225158@2x.png

torque力矩

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

WX20171203-134257@2x.png
相關文章
相關標籤/搜索