タスクシステム総合スレ part5at GAMEDEVタスクシステム総合スレ part5 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト547:名前は開発中のものです。 09/03/04 08:57:09 m+yO0HqN >>545 > 完全否定する奴は完全肯定する奴と同罪で、頭おかしい。 つ鏡 548:名前は開発中のものです。 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 に向かって自分の位置を調整 } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch