19.10.2011, 20:55
(
Последний раз редактировалось davidxxx; 20.10.2011 в 00:26.
)
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
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
3 Haremos las modificaciones al momento de que el jugador se conecte empieze la camara a rotar y hacer la funcion que queremos lograr
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
Espero que le sirva el tuto
Edit: Arreglados unos pequeсos bugs y un pequeсo error encontrado, Gracias a josta por decirmelo cualquier otro problema solo informelo gracias
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];
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;
}
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;
}
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);
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 |