0

私はおそらくこれを考えすぎているので、前もってそれを取り除きます。しかし、何かにぶつかったときにエンティティの速度を変更する単純な衝突アプローチの良い例を見つけることができないようです。最初に頭に浮かぶのは、順番に実行される 3 つのシステムがあることです。

  1. MovementSystem (速度コンポーネントに基づいてエンティティの位置コンポーネントを更新します)
  2. InputSystem (マウス/キーボードからの入力に基づいてエンティティの速度コンポーネントを更新します)
  3. CollisionSystem (別のエンティティと交差しているかどうかに基づいて、エンティティの速度コンポーネントを変更します)

しかし、ここにキャッチ22はありませんか?すでに別のエンティティと衝突している場合、衝突システムが私の速度を殺し続けるため、逃げることはできません。それとも衝突システムに速度の方向を理解させる必要がありますか?

4

2 に答える 2

0

単純な衝突システムは、オブジェクトが入ってきた角度を知り、反対方向に送り出す必要があります。これは、速度ベクトルを 180°、たとえば 0,1 から 0,-1 に回転させることを意味します。再衝突を回避するには、オブジェクトの位置に新しい速度を適用するように、次のティックの前に衝突範囲から「ホップ」する必要があります (p2 = p1*速度*ティック)。

于 2013-01-20T14:26:42.573 に答える
0

それは衝突の弾力性に依存すると思います。これを見てください: Elastic Collision Reponse in a Game .

おそらく、この投稿も役立つかもしれません: https://gamedev.stackexchange.com/ .

于 2012-12-16T15:46:01.583 に答える