2012-10-08 8 views
6

Estoy desarrollando un pequeño prototipo de juego en la Unidad 3.5.5f, en el que el jugador controla una pequeña mente que controla al alienígena. El jugador debe ser capaz de tomar el control de un PNJ humano objetivo, cambiando todas las cámaras y controles al ser humano en cuestión.UNITY3D: Cambie el control del jugador a un modelo objetivo (FPS)

N.B. Todo mi código, hasta ahora, está en C#.

Tengo dos ideas sobre cómo progresar, ¿cuál es más factible? (Me complace escuchar ideas alternativas)

  1. Cada ser humano en el nivel tiene un script de controlador FPS desactivado (y los scripts que lo acompañan). Estos scripts se activan cuando se controlan (deshabilitando los scripts del alienígena para la duración).
  2. Separe los scripts actuales del alien y los conecte al humano de destino.

Los pros y contras por lo que yo les parece:

  1. puede tener escrituras separadas extraterrestres/humanos controles (es decir, no es necesario utilizar para la entrada de los Estados - por ejemplo, puede disparar un arma mientras humana , en lugar de cuerpo a cuerpo como un extraterrestre en LMB). Este método es muy clusterfucky.
  2. Este método está limpio, pero el archivo de código para el reproductor será mucho más grande ya que no puedo separar el código de entrada tan fácilmente.

EDITAR: Un amigo ha señalado, sí, los NPC tienen scripts propios que deberían estar deshabilitados.

Respuesta

2

Esto es bastante simple, en concepto. Simplemente tenga el NPC similar a la clase de jugador, ya que acepta el control siempre que algo sea cierto.
Por ejemplo:

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

}

Vas a tener que crear una instancia de la APN para cada NPC que tiene en su juego.

Cuestiones relacionadas