1

私は小さな宇宙射手がいて、戦闘機に砲塔を撃っています。

タレットは、次の簡単な計算を使用して、戦闘機に発射体を発射します。

Vector3 destination = mTarget;
Vector3 origin = mPosition;
Movement = destination - origin;
Movement .Normalize();
mPosition += Movement * speed;

これで問題なく動作し、発射物が私の戦闘機に発射されます。

ただし、砲塔が発射体を発射したときの戦闘機の位置に発射物が当たると、発射体は停止します。基本的に、発射体は、船が置かれているポイントを通過したかどうかに関係なく、方向ベクトルに沿って移動し続けます。

ベクトルが移動する方向をスケーリング/乗算しようとしましたが、何も機能しません。前もって感謝します

4

1 に答える 1

0

終了条件を変更...

 // by distance

 float distance = (destination - origin).Length();

 distance *= 1.1; // Will overpassed by 10%
 ...

 mPosition += Movement * Speed;
 distance -= Speed;             // Movement lenght is one
 if (distance<0) destroy_bullet();


 // by position
 mPosition += Movement * Speed;
 if (!Screen.Bounds.Contains(mPosition)) destroy_bullet();
于 2012-05-14T06:19:45.157 に答える