2011-04-04 21 views
0

ボールUIImageとパドルUIImageがあります。単純なボールパドルの衝突

ボールが上下に当たったときに衝突がうまくいきますが、ボールがパドルの小さな側面に当たった場合、ボールがボールを通過してパドル内で跳ね返ります。

if (CGRectIntersectsRect(ball.frame, racquet_green.frame)) 
{ 
     ballVelocity.y = -ballVelocity.y; 
} 

いくつかの提案やその他の衝突チェック方法を教えてください。これは簡単なボールパドルの問題です

注:これは、ボールが45度の長方形のパドルに当たったときにはっきりと起こります。

答えて

0

ボールが横から飛んできたとき、衝突前の1つのシミュレーションステップがパドルの上にありますが、そのX座標が小さすぎるため、まだ衝突していません(または大きすぎる)。

次に、次のシミュレーションステップが起こり、ボールがパドルに衝突するので、yの速度は逆になりますが、xの速度は同じです。ボールはパドルにさらに入ります。

次に、ボールがまだパドルの内側にあるので、yの速度は逆になりますが、xの速度は変わらないため、パドルにさらに進んで途中でバウンスします。

解決策 - パドルの垂直と水平の両方のエッジとの衝突をチェックします。

+0

ありがとう..私はあなたが言ったことを得るようです...私はそれをもう一度見て、あなたにピングバックします... – Ram