0

Chipmunk 物理エンジンでやりたいことを実行するのに苦労しています。機能しているように見える唯一の解決策は、いくつかの重いベクトル計算を必要とします。私のゲームの他のコンポーネントのためにそのうさぎの穴に飛び込む前に、誰かがこれを行うためのより良い方法で私を埋めてくれることを望んでいました. 望ましいゲームプレイは次のとおりです。

  • キャラクターがトップダウン ビューで有限の空間を動き回る
  • 移動は、キャラクターがどの方向を向いていても常に一定の速度です
  • プレイヤーが画面をタップすると、キャラクターがタッチした場所に向かって「向きを変える」

基本的な考え方は車の運転に似ています。すぐに向きを変えることはできませんが、代わりに最初に U ターンを実行する必要があります。その車も一定の速度を維持する必要があります。どうすればこれを行うことができますか? おまけの質問: シマリスが体の位置を更新するために呼び出すメソッドをオーバーライドするにはどうすればよいですか? これは良い考えですか?

4

2 に答える 2

0

基本的に、プレーヤーの向きをより緩やかに回転させたいと考えています。これを一定の速度で行うこともできるので、画面をタップすると、正しい向きになるまで一定の速度で回転し始めます。これにより、円形の回転円が得られます。ただし、これはあなたの位置に影響を与えるため、タップした位置との衝突コースになるまで回転し続ける必要があります. あなたがたどる道は、ゲーム Achtung die kurve のそれに似ています。

そのため、プレイヤーの位置と向き (x、y、ファイ座標) を保存する必要があります。回転を停止するかどうかを判断するには、次のようにします。

dx = playerx - tapx;
dy = playery - tapy;
targetAngle = atan2(dy,dx);
if (phi > targetAngle)
    {
    if (phi - targetAngle > PI) omega = rotate;
    else omega = -rotate;
    }
else if (phi < targetAngle)
    {
    if (targetAngle - phi > PI) omega = -rotate;
    else omega = rotate;
    }
else omega = 0;
于 2013-04-07T04:49:51.253 に答える