ターゲットを攻撃するために剛体にインパルスを適用できる Ai を少し実装する必要があります。大砲から発射される砲弾のように。物理エンジンには Chipmunk Dynamics を使用しています。
私の物理学と同様に、私の数学はひどいですが、私は読んでいて、SO とこのウィキペディアのエントリからの以下の助けを借りて、これを得ました
float x = target.x = launchPos.x;
float y = target.y = launchPos.y;
float g = 9.8;
float v = 100;
float angle1, angle2;
float tmp = pow(v, 4) - g * (g * pow(x, 2) + 2 * y * pow(v, 2));
if(tmp < 0){
NSLog(@"No Firing Solution");
}else{
angle1 = atan2(pow(v, 2) + sqrt(tmp), g * x);
angle2 = atan2(pow(v, 2) - sqrt(tmp), g * x);
}
// Split the velocities
float vVel = v * sin(angle2);
//NSLog(@"Vertical Velocity: %f", vVel);
float hVel = v / cos(angle2);
//NSLog(@"Horizontal Velocity: %f", hVel);
CGPoint force = cpv(hVel, vVel);
これにより、発射体を発射するために必要な水平速度と垂直速度を計算できる角度が得られます。
しかし、それは機能していません。これは、いくつかの理由でまったく驚くことではありません。第一に、私は数学と物理が苦手だからですが、他にもいくつかのことで混乱しているからです。
この方法は質量を考慮していないようです。それはすべきですか?私はそれが非常に重要だと思ったでしょうか?でも、大学で美術を勉強したので、それは間違っているかもしれません。
Box2d には PTM_RATIO がありますが、シマリスにはそのようなものはありません。私の値はシマリスの空間座標にどのように対応していますか?
私はラジアンと、それらが度にどのように異なるか、および2つの間の変換方法を知っています。しかし、ここではどちらを使用する必要がありますか? angle1 と angle2 を度に変換する必要がありますか? やったとしても、まだうまくいきません。
要約すると、物理学とシマリスについて、私には理解できないことがたくさんあります。だから私はここにいて、助けを求めています。
シマリスにこれを理解するために使用できるものはありますか、または誰かがこれを自分で理解する必要がある場合は、助けていただければ幸いです。