2012-10-08 8 views
6

Sto sviluppando un prototipo di gioco piccolo in Unity 3.5.5f - in cui il giocatore controlla un piccolo alieno che controlla la mente. Il giocatore deve essere in grado di prendere il controllo di un NPC umano bersaglio, passando tutte le telecamere e i controlli all'umano in questione.UNITY3D: modifica del controllo giocatore su un modello target (FPS)

N.B. Tutto il mio codice, finora, è in C#.

Ho due idee su come progredire, quale è più fattibile? (Sono felice di ascoltare le idee alternative)

  1. Ogni persona nel livello ha uno script di controller FPS disattivato (e script di accompagnamento). Questi script sono attivati ​​quando controllati (disabilitando gli script degli alieni per la durata).
  2. Staccare gli script correnti dall'alieno e collegarli all'obiettivo umano.

I pro ei contro per quanto di loro mi sembra:

  1. Può avere script separati alieni/umani controlli (cioè non hanno bisogno di utilizzare Uniti per l'ingresso - ad esempio, può sparare con una pistola mentre umana , invece del corpo a corpo come alieno su LMB). Questo metodo è molto clusterfucky.
  2. Questo metodo è pulito, ma il file di codice per il lettore sarà molto più grande in quanto non riesco a separare il codice di input con la stessa facilità.

MODIFICA: un amico ha sottolineato, sì gli NPC hanno script propri che dovrebbero essere disabilitati.

risposta

2

Questo è piuttosto semplice, nel concetto. Basta avere l'NPC simile alla classe del giocatore, in quanto accetta il controllo ogni volta che qualcosa è vero.
Ad esempio:

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. 
    } 
} 

}

Dovrete istanziare NPC per ogni NPC che avete nel vostro gioco.

Problemi correlati