Hola amigos!
He estado investigado como hacer los controles básicos de un TPS (tercera persona). Os cuento.
Primero de todo creas lo necesario: un personaje y cámara.
Explicación de los activadores:Lo que vamos a hacer es orientar el personaje siempre a los grados de orientación de la cámara. Aquí no hay ningún problema de unidades, ya que si la cámara mira a 90 grados, el personaje cambiará su orientación también a 90 grados. Para podernos desplazar tenemos que crear un activador que ordene a nuestro personaje, que camine hacia su propia posición pero con un desplazamiento de "X" y "Y" puntos. Estos puntos de desplazamiento van a depender de los grados de orientación de la cámara.
El desplazamiento funcionará solamente con el uso de una tecla como los juegos de WOW o Max Payne, aunque se puede añadir A y D para desplazamiento lateral.
¿Por qué necesitamos saber los grados de la cámara?Lo que necesitamos es un desplazamiento relativo. Me explico. No le podemos decir unas coordenadas concretas al activador, porque siempre nos mandaría a la misma posición del mapa. Tenemos que calcular la posición del personaje, y decirle que vaya a su posición actual más una cierta cantidad de unidades de desplazamiento.
Por ejemplo, si esta en la posición (2,3) y queremos que se desplace, le indicamos que se mueva a la posición (3,3). Entonces se moverá de su posición anterior a la nueva.
¿Cómo sabe a qué coordenada X o Y, tiene que añadir alguna unidad?Pues es muy fácil. Como la única referencia de orientación es la orientación de la cámara en grados, la obtenemos y con las funciones seno y coseno obtenemos un valor. Por ejemplo, si estamos en la posición (0,0), y la cámara está mirando a 90º; el coseno de 90º es 0, y el seno es 1. Por lo tanto, tenemos la coordenada (0,1).
Vamos a explicar un poco de trigonometría básica para entender el comportamiento de los activadores:
Este dibujo se puede interpretar de dos modos:
Imaginaos que vemos a nuestro personaje desde arriba, por lo tanto solo veríamos el pelo o la cabeza de este. La circunferencia imaginaria de su alrededor, describe la posible orientación de la cámara, es decir, todas. Desde 1 grado hasta los 360 grados. Donde esta la X serían 0 grados o 360, y donde esta la Y, tendríamos 90 grados.
Otro modo de ver esta imagen es como una cuadrícula o un rectángulo definido por coordenadas (x,y). En el centro de la imagen, sería la posición relativa (0,0). Donde está la X, sería la posición relativa (X,0) o también le podríamos decir como (1,0) y donde esta la Y es la posición relativa (0,Y) o (0,1). En medio de la X y la Y, tendríamos un valor de (0.707,0.707).
Pues bien, la cámara solo entiende grados o radiantes (el editor solo utiliza los grados) y el personaje solo entiende de coordenadas. Por lo tanto, tenemos que transformar los grados de la cámara en coordenadas relativas X,Y . Obtendremos un vector que indicará hacia donde tiene que ir el personaje, y con un "dar orden" le mandamos las coordenadas de destino de cada moviemiento.
Cread un activador igual a este:
Cam
Eventos
Partida -Inicialización del mapa
Variables locales
Condiciones
Acciones
Cámara -Aplicar Cámara 001 al jugador 1 durante 0.0 segundos con una Velocidad existente% velocidad inicial, 10% de deceleración y Incluir objetivo
General -Esperar 0.1 Tiempo de la partida segundos
Cámara -Seguir a jugador 1 (Grupo de unidad(Fantasma [78.80, 74.45])) con la cámara y Limpiar objetivo actual
Cámara -Encendido la rotación del ratón de cámara para el jugador 1
Cámara -Encendido modo relativo de bloqueo de cámara de ratón para el jugador 1
Este activador activa las características propias de una cámara de un shooter en 1era o 3era persona.
Orientacion
Eventos
Cronómetro -Cada 0.1 segundos de Tiempo de la partida
Variables locales
Condiciones
Acciones
Unidad -Orientar Fantasma [78.80, 74.45] hacia (Viraje de cámara actual para el jugador 1) durante 0.2 segundos
Con este, lo que vamos a conseguir es que el personaje tenga la misma orientación que la cámara.Activar moverse
Eventos
IU -El jugador 1 pulsa la tecla W Abajo con mayús Excluir, control Excluir, alt Excluir
Variables locales
Condiciones
Acciones
Activador -Ejecutar Me muevo W (Ignorar condiciones, No esperar hasta que acabe)
---------
Parar moverse
Eventos
IU -El jugador 1 pulsa la tecla W Arriba con mayús Excluir, control Excluir, alt Excluir
Variables locales
Condiciones
Acciones
Activador -Detener todas las estancias de Me muevo W
---------
Me muevo W
Eventos
Partida -Inicialización del mapa
Variables locales
Grados = (Viraje de cámara actual para el jugador 1) <Real>
Condiciones
Acciones
Variable -Establecer Grados = (Viraje de cámara actual para el jugador 1)
Unidad -Ordenar a Fantasma [78.80, 74.45] ( Mover seleccionando (Compensación de (Posición de Fantasma [78.80, 74.45]) por ((Cos(Grados)), (Sen(Grados))))) (Reemplazar órdenes existentes)
General -Esperar 0.1 Tiempo de la partida segundos
Activador -Ejecutar (Activador actual) (Ignorar condiciones, No esperar hasta que acabe)
Con estos últimos activadores, obtenemos los grados del viraje (orientación), transformamos los grados en coordenadas (x,y), creamos el vector y damos la orden de desplazamiento. Además, esto ocurre cuando pulsas la W. Si la dejas de pulsar, el personaje se queda parado.
Espero que sea de mucha ayuda