3

SKSpriteNode オブジェクトの最小衝突角度を設定して、他のスプライトと衝突したときに、反転角度が常にこの角度 (負または正) 以上になるようにするにはどうすればよいですか?

私の目的は、たとえば、2 つの平行なエッジ間のデッドロック衝突を防止して、ボールがそれらの間で永遠に振動しないようにすることです。

4

1 に答える 1

2

最後に、私は解決策を見つけました - 最善ではないかもしれませんが、うまくいきます -.

スプライトが他のスプライトと衝突すると、式:

angle = atan(dy/dx) からスプライトの速度角度を見つけ、

角度の値を確認します。最小値より小さい場合は、角度を最小値に設定し、式から新しい速度 dy を見つけます:

dy_new = dx * tan(new_angle)

式から dx_new を見つけます:

dx_new = sqrt(pow( dx, 2) + pow(dy, 2) - pow(dx_new, 2));

これは、速度の大きさは同じですが、方向のみが変更されることを意味します。これは、次のベクトル方程式に基づいています。

speed = sqrt(pow(dx, 2) + pow(dy, 2)); 角度 = atan(dy /
dx);

速度ベクトル数学のリンクは次のとおりです。 http://faculty.wwu.edu/vawter/PhysicsNet/Topics/Vectors/TheVelocityVector.html

于 2015-11-19T18:56:30.583 に答える