1


x、yで定義された点と、見出し、速度で定義されたベクトルがあります。このベクトルに沿って、点x、yを「速度」の距離で移動しようとしています。以下は私が現在使用しているコードです:

self.x += self.speed * cos(self.heading);
self.y += self.speed * sin(self.heading);

見出しは、完全な円内の任意の角度(0〜2π(0〜360度))にすることができます。問題は上記のコードです:

  • 角度が0->270の場合にのみ、x軸またはy軸に沿って移動します
    • たとえば、アバターが右上隅(相対45度)を向いている場合、アバターはまっすぐ上に移動します。
  • 角度が270->360のときはまったく動かない

方位、速度、X、Yはすべて2倍であり、方位はユーザーが下隅の方向パッドに触れることで報告されます。アバターが正しい方向に回転するので、見出しが正しいことはわかっています。これは、私が問題を抱えている実際の動きにすぎません。

助けてくれてありがとう
-クリス

4

1 に答える 1

2

まっすぐ上に移動するとsin(90)、ではなく、になりますsin(45)。ですから、そこにはある種の問題があります。

sin(90) == 1これは、速度をyに追加し続け、xには何も追加しないためですcos(90) == 0)。

于 2010-12-22T01:48:44.183 に答える