0

私はなんとかChipmunkの物理学と他のいくつかのものを使って画面にボールを置くことができました、そして私はいくつかのボタン/加速度計で重力に影響を与えることができます。イェーイ!

次に、重力をオフにして、ボールが自分の意志で画面上を移動するトップダウンビューをシミュレートします。を使用してボールに力を加えることはできますがbody -> f = cpv(dx, dy)、物理学と数学についてはあまり詳しくないので、ボールに与える2つの値がどのように動きを引き起こすかを理解しようとしています。

正の値は右または下に移動し、負の値は左または上に移動することを理解していますが、現時点で理解しているのはこれだけです。

たとえば、ランダムなコンパス方位(0〜359度)を選択してその方位上で移動したい場合、そのような値はどのようにベクトルに変換されますか?

このメソッドを作成しましたが、期待どおりに機能せず、何が間違っているのかわかりません。

- (CGPoint) getVectorFromAngle: (float) angle AndMagnitude: (float) magnitude
{
    float x = magnitude * cos(angle);
    float y = magnitude * sin(angle);
    CGPoint point = CGPointMake(x, y);
    NSLog(@"Made a CGPoint of X: %f and Y: %f.", point.x, point.y);
    return point;
}

角度45と大きさをフィードすると、 10Xは5.253220および8.509035として作成されます。ただし、ここにある計算機は、XとYを7.0711として作成する必要があることを示しています。

ここで何が間違っていますか?

4

2 に答える 2

1

sinとcosはラジアン単位の角度を取り、角度にπ/180を掛けます。

于 2013-01-09T14:40:46.197 に答える
0

Chipmunkには、あなたが望むことを正確に実行する関数がすでに含まれていることを指摘するのも良いことです。

cpvmult(cpvforangle(radians), magnitude)
于 2013-01-10T04:09:09.267 に答える