ボールが曲がってiPhoneから飛び跳ねる

私は、ユーザーがスクリーン上に線を引っ張り、ボールが実際の生活やもので跳ね返る角度で現実的にラインから跳ね返るこのアプリケーションを作った。しかし、それは直線のためだけに働いた。今私はそれを湾曲させようとしています。

I have decided to feet clear from the calculus method as the matrices involved seem scarier than needed. What I am doing instead is in a -(void)touchesMoved event having it record the current point of the touch in a CGPoint array. Then to find the collision, I have a for loop like for (int i = 2; i <= numberOfPoints; i++) { That flies through all values for i as the numberOfPoints increases. So for collisions I assumed I would get the slope of the line between i and i-1, then get the perpendicular distance from the ball to that line and when it nears zero a collision has ocurred, just as I did in the straight line version.

しかし、これは動作しません。誰かがこれを行う良い方法のためにすべてのヒントを持っていますか?私は本当にこのすべての私のオプションを強調している

0
この種の状況では、掃引衝突検出を調べることができます。ボールが複数の線分に同時に接触することがある(U字型の線を想像してください)。これはリバウンドに影響します。 Nのための衝突検出文書は、これに関して簡単に触れる: metanetsoftware.com/technique/tutorialA.html
追加された 著者 ravuya,

1 答え

iとi-1を使って勾配を計算すると、それを単純化することができます。私は提案する:

  1. 傾き(iとi-4など)を計算するために2点間の距離を広げます。その理由は、人間の目には、2つの連続した点でその差が知覚できないからです。目は、少し離れたところで同じ勾配を感じます。ただし、離れているポイントは、より正確なスロープを提供します。

  2. 衝突点がiの場合、(i、i-1)、(i、i-2)、(i、i-3)、(i、i + 1) 、(i、i + 2)、(i、i + 3)である。私はこれがあなたに良い結果をもたらすはずだと感じています。

もし私があなただったら、私はオプション2を使います。

さらに離れている点のセットを選択し、それらのスロープを平均化することによって、2つのオプションを混在させることもできます。

Also, as a side note, I'm assuming you know about this already, but have you heard of Box2D

編集:

もう1つのこと...ユーザーの曲線セグメントを複数の直線セグメントにエイリアスする方法を理解できれば、古いアルゴリズムをそのまま使用することができます。

1
追加された