[Tutorial] Camara En Movimiento
#1

Hola Amigos Vengo Con Un Tuto De La Camara En Movimiento Que Tiene Inquietos A Algunos Que no Saben Como Hacerlo A Continuacion La Explicacion Paso a Paso

1 Definimos Las Posiciones Que va a Tomar La Camara
pawn Код:
#define Pos_x 2178.4922// estas son las posiciones
#define Pos_y 1285.8121
#define Pos_z 42.2499
#define Pos_angle 270.0764
#define camara_x 2961.4202
#define camara_y -1875.7118
#define camara_z 9.7813
#define Velocidad 50//esta la velocidad de la camara, recomiendo dejarala asi

forward SetupPlayerForClassSelection(playerid);//los forwards
forward MoverCamara(playerid);

enum pInfo //y los enum que vamos a usar
{
Float:SpawnAngle,
bool:SpawnRotate,
SpawnTimer,
};

new PlayerInfo[MAX_PLAYERS][pInfo];
2 Lo que haremos ahora es colocar los codigos correspondientes para que al conectarse el player empieze a escoger el skin y y la rotacion de la camara

pawn Код:
// En OnPlayerRequestClass
SetupPlayerForClassSelection(playerid);// para que le digamos al sistema que al conectarse el jugador escoga los skins

// En OnPlayerConnect Agregas
PlayerInfo[playerid][SpawnRotate] = true;// le decimos al sistema que al conectarse el jugador empieze a rotar la camara alrededor de el

public OnPlayerDisconnect(playerid, reason)
{
  KillTimer(PlayerInfo[playerid][SpawnTimer]);// y esto en OnPlayerDisconnect
  return 1;
}
3 Haremos las modificaciones al momento de que el jugador se conecte empieze la camara a rotar y hacer la funcion que queremos lograr

pawn Код:
//esto es lo que ira en la callback SetupPlayerForClassSelection
public SetupPlayerForClassSelection(playerid)
{
   SetPlayerPos(playerid, Pos_x,Pos_y,Pos_z);//aqui estan las posiciones en donde la camara se movera alrededor las pueden cambiar en los defines o simplemente colocar sus posiciones y eliminar los defines  
   SetPlayerCameraPos(playerid, camara_x,camara_y,camara_z);//aqui la posicion donde la camara se va a fijar tambien se puede cambiar la posicion igual que en lo primero que dije  
    SetPlayerCameraLookAt(playerid, Pos_x,Pos_y,Pos_z);//aqui se coloca como la camara se posiciona sobre el jugador
    if (PlayerInfo[playerid][SpawnRotate]) PlayerInfo[playerid][SpawnTimer] = SetTimerEx("MoverCamara", Velocidad, true, "i", playerid);//y aqui le decimos al sistema la funcion que queremos hacer que es llamar a la callback que forwdeamos anteriormente para que empieze a mover la camara
   PlayerInfo[playerid][SpawnRotate] = false;
   return 1;
}
5 por ultimo colocamos la funcion de la rotacion de la camara en el jugador, esta funcion va en el forward que hicimos al principio de todo

pawn Код:
public MoverCamara(playerid)
{
    SetPlayerCameraPos(playerid, Pos_x - 2 * floatsin(-PlayerInfo[playerid][SpawnAngle], degrees), Pos_y - 10 *
floatcos(-PlayerInfo[playerid][SpawnAngle], degrees), Pos_z + 3);//lo unico que hacemos aqui es aumentar los valores para que la camara rote
    SetPlayerCameraLookAt(playerid, Pos_x, Pos_y, Pos_z + 0.5);// hacemos la misma funcion que arriba pero en la posicion en la que va a mirar la camara
    PlayerInfo[playerid][SpawnAngle] += 0.5;// y el angulo en que se posicionara la camara, esto se puede cambiar

    if (PlayerInfo[playerid][SpawnAngle] >= 360.0)
    PlayerInfo[playerid][SpawnAngle] = 0.0;// los angulos donde colocamos la sentencia que si el angulo llegue a 360 grados se repita el movimiento de nuevo
    return 1;
}

// y en OnPlayerSpawn se agrega
PlayerInfo[playerid][SpawnAngle] = 0.0;
KillTimer(PlayerInfo[playerid][SpawnTimer]);
SetCameraBehindPlayer(playerid);
Espero que le sirva el tuto

Quote:

PD: Espero que les sirva y recuerden que los valores de las posiciones y los angulos varian e la posicion en la que se encuentra el jugador

Quote:

PD: Los creditos no son mios simplemente quiero explicar como funciona y para lo que no lo encuentran facilmente, solo quiero ayudar y nada mas , si ya esta posteado perdon no lo sabia este codigo lo encontre en pawnscript es solo una ayuda para quien lo necesita

Edit: Arreglados unos pequeсos bugs y un pequeсo error encontrado, Gracias a josta por decirmelo cualquier otro problema solo informelo gracias
Reply
#2

їCrйditos? Ya esta posteado en la secciуn inglesa creo mmm

EDIT:

El de la inglesa no encontrй, encontrй acб uno: post. Pero en la inglesa habнa un cуdigo similar ( no se si era igual ).
Reply
#3

Bien
Reply
#4

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
їCrйditos? Ya esta posteado en la secciуn inglesa creo mmm

EDIT:

El de la inglesa no encontrй, encontrй acб uno: post. Pero en la inglesa habнa un cуdigo similar ( no se si era igual ).
De hecho es el mismo xD

http://forum.sa-mp.com/showthread.ph...ghlight=camera

aunque es mucho code se puede hacer con una callback...
Reply
#5

si solo quiero explicarlo nada mas no robo creditos
Reply
#6

No, no. Nadie dijo que robaste crйditos, sуlo que no aclaraste ( que se nos puede pasar de olvidarnos de poner a cualquiera )... :P Si robaras crйditos, dirнas que lo hiciste vos
Reply
#7

Me encantу el tutorial y muy ъtil pero tengo un error.
Quote:

C:\Users\Usuario\Downloads\samp03dsvr_RC6_win32\ga memodes\lvdm.pwn(380) : error 010: invalid function or declaration
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


1 Error.

Linea: PlayerInfo[playerid][SpawnAngle] = 0.0;
Reply
#8

Tienes correctamente el enum ?
pawn Код:
enum Info //y los enum que vamos a usar
{
Float:SpawnAngle,
bool:SpawnRotate,
SpawnTimer,
};
new PlayerInfo[MAX_PLAYERS][Info];
Reply
#9

edit: arrregle algunos bug pequeсos, gracias josta por informarme el error, cualquier otro bug me informan
Reply
#10

Esto no es un tutorial, es un script que hay rondando por el foro y que se puede hacer mucho mas simple y optimizado lo ъnico que hizo fue dividirlo en partes y decir "miren este tutorial de cбmara en movimiento".
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)