6

私はUnity3.5.5fで小さなゲームのプロトタイプを開発しています。このプロトタイプでは、プレイヤーがエイリアンを制御する小さなマインドを制御します。プレイヤーは、対象の人間のNPCを制御し、すべてのカメラとコントロールを問題の人間に切り替えることができる必要があります。

NBこれまでのところ、私のコードはすべてC#です。

進歩する方法について2つのアイデアがありますが、どちらがより実現可能ですか?(私は別のアイデアを聞いてうれしいです)

  1. レベル内の各人間には、非アクティブ化されたFPSコントローラースクリプト(および付随するスクリプト)があります。これらのスクリプトは、制御されるとアクティブになります(その間、エイリアンのスクリプトを無効にします)。
  2. エイリアンから現在のスクリプトを切り離し、ターゲットの人間に添付します。

私が思う限り、賛否両論:

  1. 別々のエイリアン/人間のコントロールスクリプトを持つことができます(つまり、入力に状態を使用する必要はありません-たとえば、LMBでエイリアンとして近接する代わりに、人間の間に銃を発射することができます)。この方法は非常にクラスターファッキーです。
  2. この方法はクリーンですが、入力コードを簡単に分離できないため、プレーヤーのコードファイルははるかに大きくなります。

編集:友人が指摘しました、はい、NPCには無効にする必要がある独自のスクリプトがあります。

4

1 に答える 1

2

これは、概念的には非常に単純です。何かが真実であるときはいつでもコントロールを受け入れるという点で、プレイヤークラスに似たNPCを持っているだけです。
例えば:

class NPC {
static bool isBeingControlled = false;
public void OnUpdate() {
    if (isBeingControlled)
    {
        //set camera position to NPC position (make sure you're using NPC as an instantiated class)
        //accept key input WASD or whatever you are using and move NPC according to input.
    }
}

}

ゲーム内にあるNPCごとにNPCをインスタンス化する必要があります。

于 2012-10-31T03:20:31.030 に答える