2011-09-17 5 views
3

私は現在のゲームではかなりうまくいくコンポジットデザインを使用しています。すべてのゲームオブジェクトはGameObjectのインスタンスであるか、直接の子孫です...オブジェクトの中には、武器などの特定のインターフェイスを実装しているため、他のオブジェクトによって「使用」されたり、しかし、私は現時点ではbox2dをゲームに統合しようとしていますが、この場合は構成に問題があります。たとえば、スプライトはスプライトレンダリングコンポーネントでレンダリングされ、素材などのオブジェクトプロパティはレンダリング時に適用されますが、投射物などの場合に適用されます。合成と投射物

私は基本的に同じものを2度コードする必要があることを発見しています。武器は常に発射物を所有し、そのような方法で直接呼び出すため、基本発射は 'onFire'、 'onExpire'などのメソッドを持ちます。しかし、そのデータを発射体物理コンポーネントと同期しようとすると、時間が無駄になるようです。このケースでは、おそらく、発射物物理コンポーネントとしてonCollisionイベントを処理し、ポジションを更新する物理ボディを自分自身の「own」ボディにする必要があるはずです。今私はもちろんそうすることで、発射体オブジェクトをbox2dと明示的に結合していますが、私の必要に応じて、それはうまくいくでしょう。

私は実際には今のところ、他のオブジェクトが使用するのと同じコンポジットデザインを作成しようとして多くの問題を抱えているため、入力を希望します。

答えて

0

たとえば、スプライトはスプライトレンダリングコンポーネントでレンダリングされます。また、スプライトはスプライトレンダリングコンポーネントでレンダリングされます。レンダリング中に適用されますが、発射体などの場合は適用されます。

2dでは不定期です。 3dでは、マテリアルは反射とライティングに影響しますが、2dではまれです。私はこのケースで考える

は、私はおそらくすべてのシミュレートされたオブジェクトが接続された任意の固定具で身体を持っている必要があり、発射が自ら「自分の」物理学のボディ

はいすべきです。あなたの投射物にisBullte = trueフラグを使用してください。 ゲームロジックが発射物上のいくつかのメソッドを呼び出す必要がある場合は、参照のリストを保持するだけですが、そのための合成は必要ありません。

+0

あなたが言ったように、弾丸は本体を作りました。しかし、構成を使用した理由は主にすべてのオブジェクトがどこでも型キャストを行う必要なしに同じパイプラインを通過できるようになったことです。サブシステムを使用して、オブジェクトのコンポーネントを、各タイプを特に扱うシステムによって登録および更新できるようにしました。 – Xealgo