距離を計算して 2 つのボール間の衝突を検出する簡単な方法を作成しました。衝突が検出されたら、ボールが互いに入らないようにボールの位置を更新するにはどうすればよいでしょうか (交差)
private void BallCollisionBlueRed()
{
double fDist;
CentreAX = redBall.Left + ball.Width / 2;
CentreAY = redBall.Top + ball.Height / 2;
CentreBX = blueBall.Left + ball.Width / 2;
CentreBY = blueBall.Top + ball.Height / 2;
vDx = CentreBX - CentreAX;
vDy = CentreBY - CentreAY;
fDist = Math.Sqrt((vDx * vDx) + (vDy * vDy));
if (fDist < radA + radB)
{
// Help!
}
}
vDx と vDy は、計算の値を保持するためにのみ使用されます。私は両方のボールを矢印キー (プレーヤー) で制御しています。ボールが互いに跳ね返らないようにしたいのですが、交差させないようにしています。