そのため、毎秒作成され、ランダムな位置 (sprite1) で移動するスプライトと、固定位置 (sprite2) を持つ別のスプライトがあります。スプライト1とスプライト2が衝突した際に、スプライト1がくっつくようにしたい(動かなくなってくっつく)。どうすればこれを行うことができますか? 私の英語で申し訳ありませんが、私はフランス人です:/
ps : スプライト 2 は加速度計で回転しているので、スプライト 1 が衝突した場合は回転させたいと思います :)
そのため、毎秒作成され、ランダムな位置 (sprite1) で移動するスプライトと、固定位置 (sprite2) を持つ別のスプライトがあります。スプライト1とスプライト2が衝突した際に、スプライト1がくっつくようにしたい(動かなくなってくっつく)。どうすればこれを行うことができますか? 私の英語で申し訳ありませんが、私はフランス人です:/
ps : スプライト 2 は加速度計で回転しているので、スプライト 1 が衝突した場合は回転させたいと思います :)
Cocos2dで簡単にできると思います。
1)まず、sprite1とsprite2のrectを次のように設定します。CGRectMake(x,y,width,height)
2)sprite1がランダムな位置で移動し、sprite2が特定の位置に固定されていると言ったように、を使用してそれらが衝突することを確認できますCGRectIntersectsRect([sprite1 bounds],[sprite2 bounds])
。
3)交差する場合は、sprite1.position = sprite2.position
注:sprite1は回転しているとおっしゃいましたが、rectは通常のボディにのみフィットできます。スプライトの正確な衝突または物理的特性が必要な場合は、box2dを使用できます。
Box2d (円の衝突を処理できる) を使用したくない場合は、次のような方法を試すことができます。
1.) 衝突を検出します。これは、2 つの円の中心点 (x,y) 間の距離であり、2 つの円の半径の合計よりも小さくなります。
2.) スプライト 1 をスプライト 2 に固定し、スプライト 1 の動きを停止し、相対デルタ (x,y) をスプライト 2 に保存します。次に、スプライト 2 が移動または回転するたびに、同じデルタの動きと回転をスプライト 1 に適用します。
box2d を使用してこれを行うことができると思います。衝突を検出し、回転、移動などを管理するのに役立ちます。