物理システムをエンティティシステムに追加しようとしていて、ECSのシステム部分について混乱しています。私はと同様PositionComponentとVelocityComponentで動作MovementSystemを持つことになり、ECSプロジェクトにおけるしかしECS(エンティティコンポーネントシステム)のインターリーブシステム?
function updatePhysics()
foreach(thisRobot in robots)
thisRobot.move()
foreach(otherRobot in robots)
if(response = thisRobot.isColliding(otherRobot))
thisRobot.resolveCollision(response)
:
は例えば、非ECSプロジェクトで、私はこのようなものを持っているかもしれませんPositionComponentとShapeComponentで動作するCollisionSystemです。
MovementSystem
function update()
foreach(entity in entities)
this.move(entity)
CollisionSystem
function update()
foreach(thisEntity in entities)
foreach(otherEntity in entities)
if(response = this.isColliding(thisEntity, otherEntity)
this.resolve(thisEntity, response)
非ECSのバージョンで動作し、衝突がどこに区切られECSのバージョンのようにインターリーブされているということで差異:結果は次のようなものであること。エンティティシステムでこの動作をモデル化するための通常のパターンはありますか?私はECSの全ポイントが継承から離れようとしていることを知っていますが、MovementSystemとCollisionSystemの両方を持つシステムは、各システムが独自のループを維持するのではなく、他のシステム更新機能を単一のentitiyで呼び出す、移動し、すべてのエンティティがシミュレーションで物理学に影響されない
ループでは、4と5が分かれています。私の質問は、これらの2つのシステムをインターリーブする方法を目指していました。 – zorqy