0

継承ではなくコンポーネントから属性を取得する非常に単純な敵クラスを作成したいと考えています。属性は今のところただの健康になると思います。まず、本当に単純な例が必要です。コンポーネントパターンについてまだ学んでいて、まだ迷っています。

どんな助けでも素晴らしいでしょう!

4

2 に答える 2

4

コンポジションを使用したいようです。この場合、クラスを次のように定義します。

健康成分:

class Health
{
public:
    Health();
    // other attributes / methods defined here
};

スキル コンポーネント:

class Skills
{
public:
    Skills();
    // other attributes / methods defined here
};

武器コンポーネント:

class Weapons
{
public:
    Weapons();
    // other attributes / methods defined here
};

Enemy クラスは、他のコンポーネントからの構成によって定義されます。

#include "health.h"
#include "weapons.h"
#include "skills.h"
class Enemy
{
public:
    Enemy();

    Health itsHealth;
    Weapons itsWeapons;
    Skills itsSkills;
};

私が思いついた「サンプル」コンポーネントは、示されているように別々のクラスで定義されています。その後、各クラスは独自のインスタンス変数とメソッドを追跡します。

Enemy クラス コンストラクターは、敵オブジェクトの作成時に各コンポーネントをどのように定義するかを決定します。これらのコンポーネントをデフォルト値でセットアップする方法の例については、クラス初期化子リストを参照することもできます。

于 2013-11-11T14:31:30.110 に答える
0

それはすべて、どのように取り組みたいかによって異なります。エンティティがあり、コンポーネントに依存し、エンティティとコンポーネントを更新するシステムが必要な ECS アーキテクチャが必要ですか。通常、各コンポーネントには次のものが含まれていると言います。

1. id (文字列か整数かに関係なく)

2.コンポーネントのベクトル

3. 親のエンティティ。null の場合はルート

4.子としてのエンティティのベクトル。

基本的に各コンポーネント、またはコンポーネント タイプごとにシステムがあります。グラフィックスのように、バッファにロードして表示する画像のスタック、または世界内の重力と動きの変化 (デルタ) の更新を実行する物理システムがあります。

于 2015-09-20T22:48:00.287 に答える