box2D と cocos2D を使用して作成しているゲームについて簡単な質問があります。私は昨日物理エンジンを使い始めたので、その使用法と機能についてはかなり経験がありません。私のゲームでは、加速度計を使用して画面上でボールを転がします。地面に穴を追加して、ボールが転がり込んだ場合、穴のポケットから逃れるために加速度計を介してより大きな加速が必要になるようにします。摩擦、線形ダンピング、加速度計の重力ベクトルの変更、および引力の追加を試みましたが、あまり成功していませんでした。基本的には、いくつかのセンサーを作成し、ボールが落ちる小さなポケットの特性をそれらに与えたいだけです。ヒントやアドバイスは大歓迎です。ありがとう
2 に答える
Level Helper を使用することをお勧めします。物理ベースのゲームを作成するための素晴らしいツールです。
ここで見つけることができます
フレームごとにボールの y 位置を取得できます。特定のしきい値を下回っている場合、ボールは穴の中にあります。これに基づいて、ボールが穴にある場合は、感度を下げます。ボールがホールから出たら、感度を通常に戻します。
穴の作成に関しては、Vertex Helper を使用して、スプライトに対応するボディを作成します。
さらに説明が必要な場合は、お気軽にお問い合わせください。
詳細:
さて、基本的には絵の中に、先ほど描こうとしたものを描いています。実際に行う必要があるのは、プレーヤーの Y 位置が特定のポイントを下回っている場合に傾斜感度を変更することだけです。例として 50 を使用しました。
擬似コード:
- (void)update:(ccTime)dt
{
if (player.position.y >= 50) { //If the player's y position is above or equal to 50
if (sensitivity != normalSensitivity) { //We don't need to set it every frame, so lets check
sensitivity = normalSensitivity;
}
}
if (player.position.y < 50) { //If player's position is below our threshold of 50
if (sensitivity != limitedSensitivity) { //Check so we don't set the sensitivity every frame
sensitivity = limitedSensitivity;
}
}
}
現在、Vertex Helper に関する限り、それはカスタム シェイプの頂点を定義するのに役立つオープン ソース ツール (と私は信じています) であり、それをコピーして box2d または chipmunk cocos2d プロジェクトに直接貼り付けることができます。ここが 好き に なれます.
これがどのように使用されるかについてのチュートリアルをグーグルで検索することをお勧めします。これは非常に単純ですが、開始するにはクイック リファレンスが必要になる場合があります。
最後に、box2d は凸形状のみで機能し、凹形状では機能しないことを覚えておいてください。凸形状とは、形状自体を通過せずに頂点から別の頂点に線を引くことが不可能な形状です。基本的にはへこみのないもの。
これが役に立ったことを願っています。これ以上詳しく説明できるかどうかはわかりませんが、より具体的な質問がある場合は、遠慮なく質問してください。