0

iOS + Cocos2d + Chipmunk を使用してシングル プレイヤー ゲームを作成しました。単一の剛体に複数の衝突形状をアタッチする方法を示すソリューションを探しています。衝突を検出する必要がある不規則な形状 (車) のターゲットがあります。ターゲット (車) はプレイヤーから側面から見られ、他のオブジェクトは前方や後方だけでなく、複数の方向からターゲットに衝突する可能性があります。単一の cpPolyShape を使用してリアルな衝突効果を実現できないような形状です。2 つの cpPolyShapes (四角形) を互いに重ね合わせ、下の四角形を大きくするとうまくいくはずです。

誰かがこれを達成する方法の例を提供できますか?

cpShape に関する Chipmunk のドキュメント、http://code.google.com/p/chipmunk-physics/wiki/cpShapeを読みました。ノートセクションのページに記載されていますが、例は提供されていません。

私は現在、機能するプロジェクトを実行しており、ゲーム プレイを改善するためにいくつかの最終調整を行っています。

4

2 に答える 2

1

cp*ShapeNew() を呼び出す場合、最初のパラメーターはそれをアタッチする本体です。同じボディを共有する複数の形状を単純に作成します。トリックはありません。

于 2011-07-14T06:55:38.587 に答える
0

メソッドを追加できます

.h ファイルにプロトタイプを追加します。

static int FunctionName (cpArbiter *arb, cpSpace *space, void *unused);

.m ファイルにコードを次のように追加します。

    cpSpaceAddCollisionHandler(<space name>, <cpCollisionType of  body a >, <cpCollisionType of body b>, <cpCollisionBeginFunc name>, <cpCollisionPreSolveFunc preSolve>, <cpCollisionPostSolveFunc postSolve>, <cpCollisionSeparateFunc separate>, <void *data>);

static int FunctionName(cpArbiter *arb, cpSpace *space, void *unused)
{
    cpShape *a, *b; cpArbiterGetShapes(arb, &a, &b);    
    printf("\n Collision Detected");    
    return 1;   
}

注:- 両方のボディの衝突タイプを指定することを忘れないでください。

于 2011-11-18T10:26:45.723 に答える