タスクシステム総合スレ part5at GAMEDEV
タスクシステム総合スレ part5 - 暇つぶし2ch548:名前は開発中のものです。
09/03/04 09:08:31 mN9/jFMx
>>544
526のコードは、ポインタではなく実体で持たせているから、保障も何も要らんと思うが。
いずれにせよハンドルクラス (整数値とインスタンスの対応付け) は用意したほうが
便利だが、その場合でもプレイヤー・敵は別の ID 体系にしておくな。

たとえば、最大 2 プレイヤー同時プレイ可能なゲームで、プレイヤーに向かって
進む敵を作りたい場合。

class PlayerID { int id_; friend class Scene; }; class EnemyID { int id_; friend class Scene; };
class EnemyEnv {
 virtual ~EnemyEnv() {};
 virtual PLAYER_ID GetNearestPlayer(ENEMY_ID enemy_id) const = 0;
 virtual Vec3 GetPlayerPos(PLAYER_ID player_id) const = 0;
};

class Scene : public EnemyEnv {
 Player player_[2];
 std:::list<Enemy> enemies_;
public:
 void Update() { player_.Update(*this); enemy_.Update(*this); }
 virtual PLAYER_ID GetNearestPlayer() const { ... }
 virtual bool GetPlayerPos(PLAYER_ID player_id, Vec3* pos) const {
  // 実際には、ここで player_id.id の値チェックを行い、生存していなかったら false 返す
  *pos = player_[player_id.id_].GetPos(); return false;
 }
}

void Enemy::Update(EnemyEnv& env) {
 PLAYER_ID player_id = env.GetNearestPlayer(this.GetID());
 Vec3 pos = env.GetPlayerPos(player_id);
 // あとは pos に向かって自分の位置を調整
}


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch