SKPhysicsWorld

公式リファレンスはこちらSKPhysicsWorld(英語)

プロパティ

衝突時に呼ばれるデリゲート

contactDelegate

id<SKPhysicsContactDelegate>

衝突検知は2つの物体が重なり、一方の物体のcontactTestBitMaskプロパティとcategoryBitMaskプロパティが一致した時(両方のビットが共に1の時)に起こります。

コード例

self.physicsWorld.contactDelegate = self;

重力(m/sec)

gravity

CGVector
初期値 (0.0,-9.8)(地球の重力と同じ)

コード例

self.physicsWorld.gravity = CGVectorMake(0.0, 0.0); // 重力がゼロになる

シミュレーション速度

speed

CGFloat
初期値 1.0

例えば2.0にすると、シーンのシミュレーション時間の2倍速となる。0.0でシミュレーションは停止状態となる。

物理体同士を結合する

ジョイントを追加

- (void)addJoint:(SKPhysicsJoint *)joint

joint 追加するジョイント

全てのジョイントを削除

- (void)removeAllJoints

ジョイントを削除

- (void)removeJoint:(SKPhysicsJoint *)joint

joint 削除するジョイント

指定した座標上や線上にある物理体を見つける

線上の最初の物理体を得る

- (SKPhysicsBody *)bodyAlongRayStart:(CGPoint)start end:(CGPoint)end

start 始点(シーン座標系)
end 終点

最初に線と交差した最初に見つかった物理体を返す。
線と交差する物体が見つからない場合はnilを返す。

指定した点にある物理体を得る

- (SKPhysicsBody *)bodyAtPoint:(CGPoint)point

point シーン座標系における座標点

座標を含む最初に見つかった物理体を返す。
見つからない場合はnilを返す。

指定した矩形と交差する物理体を得る

- (SKPhysicsBody *)bodyInRect:(CGRect)rect

rect シーン座標系における矩形

矩形と交差する最初に見つかった物理体を返す。
見つからない場合はnilを返す。

線上にあるシーン内の物理体を列挙してブロック文を実行する

- (void)enumerateBodiesAlongRayStart:(CGPoint)start end:(CGPoint)end usingBlock:(void (^)(SKPhysicsBody *body, CGPoint point, CGVector normal, BOOL *stop))block

start 始点(シーン座標系)
end 終点
block ブロック文
body:見つかった物理体
point:物理体と接触した点
normal:接触した点の法線ベクトル
stop:BOOLのポインタ。YESを設定することで、列挙の処理をそこで中断できる。

指定した点にある物理体を列挙してブロック文を実行する

- (void)enumerateBodiesAtPoint:(CGPoint)point usingBlock:(void (^)(SKPhysicsBody *body, BOOL *stop))block

point シーン座標系における座標点
block ブロック文
body:見つかった物理体
stop:BOOLのポインタ。YESを設定することで、列挙の処理をそこで中断できる。

指定した矩形と交差する物理体を列挙してブロック文を実行する

- (void)enumerateBodiesInRect:(CGRect)rect usingBlock:(void (^)(SKPhysicsBody *body, BOOL *stop))block

rect シーン座標系における矩形
block ブロック文
body:見つかった物理体
stop:BOOLのポインタ。YESを設定することで、列挙の処理をそこで中断できる。