Operaciуn matemбtica..
#1

Hola, quiero saber como hacer una operaciуn matemбtica que he estado mucho tiempo tratando de hacer pero en realidad no puedo, ok, lo que quiero es que mediante posiciones un objeto se rote, un ejemplo: Una cбmara estй en la pared y a medida que el jugador avanza la cбmara rota el valor RZ (es un objeto..)(RZ serнa la rotaciуn horizontal).

En teorнa serнa mediante una pos del jugador suelte un nъmero que serнa el valor de rotaciуn del RZ. (como un efecto que la cбmara te ve)
Reply
#2

quiere que la cбmara persiga al jugador?
Reply
#3

No, que estй en un lugar estбtico pero que rote dependiendo de la pos del jugador, como lo dije en el ejemplo..
Reply
#4

http://forum.sa-mp.com/showpost.php?...postcount=2649

****** hace magia.
Reply
#5

pawn Код:
SetAnguloCamara(playerid, Objectid)
{
    new
        Float:X1,
        Float:Y1,
        Float:X2 = Aqui pon la coordenada x de la camara,
        Float:Y2= Aqui pon la coordenada y de la camara,
        Float:Angle;

    GetPlayerPos(playerid, X1, Y1, Angle);
    GetAngle(X2, Y2,  X1, Y1, Angle); //esto te devuelve que apunte hacia el jugador
       
//       aqui destruyes la camara
// aqui creas la camara con las coordenadas y en el angulo sacado
//esta funcion debes llamarla  cuando el jugador este cerca

       

}


GetAngle(Float:X, Float:Y, Float:CurrentX, Float:CurrentY, &Float:Angle)
{
    Angle = atan2(Y-CurrentY, X-CurrentX);
    Angle = floatsub(Angle, 90.0);
    if(Angle < 0.0) Angle = floatadd(Angle, 360.0);
}
juega un poco con esto!
Reply
#6

Muchas gracias NullBot creo que esto es lo que buscaba (no lo he probado), y gracias tambiйn StickAttack, no era lo que buscaba pero muchas gracias por tomarte la molestia de buscar el mensaje.
Reply
#7

Si lo que tъ quieres es que la cбmara estй fija en una posiciуn pero que a la vez te siga, creo que te va a servir esto:

Esto es a modo de prueba. Si te sirve y es lo que quieres, luego lo modificas a tu gusto.

PHP код:
new Float:PCP[3];    // CameraPosition
new Float:PCL[3];    // PlayerCameraLookat
new Float:PCA;        // PlayerCameraAngle
new bool:CamState;    // Si estбs en modo cбmara
new PlayerTimer;        // Id del Timer
stock GetCoordsOnLine3D(Float:startXFloat:startYFloat:startZFloat:endXFloat:endYFloat:endZFloat:length, &Float:RX, &Float:RY, &Float:RZ)
{
    
RX startX endX;
    
RY startY endY;
    
RZ startZ endZ;
    new 
Float:sqrt floatsqroot((RX RX) + (RY RY) + (RZ RZ));
    if (
sqrt 0.01)
        
sqrt 0.01;
    
RX = -length * (RX sqrt) + startX;
    
RY = -length * (RY sqrt) + startY;
    
RZ = -length * (RZ sqrt) + startZ;
// GetCoordsOnLine3D
forward FollowPlayer(playerid);
public 
FollowPlayer(playerid)
{
    new 
Float:PXFloat:PYFloat:PZ;
    new 
Float:XFloat:YFloat:Z;
    
GetPlayerPos(playeridPXPYPZ);
    
GetCoordsOnLine3D(PCP[0], PCP[1], PCP[2], PXPYPZ5.0XYZ);
    
PCL[0] = X;
    
PCL[1] = Y;
    
PCL[2] = Z;
    
SetPlayerCameraLookAt(playeridPCL[0], PCL[1], PCL[2]);
// FollowPlayer 
Y aсadн un comando para probarlo, si usas otro procesador de comandos adбptalo al mismo.

PHP код:

if(!strcmp("/cam"cmdtexttrue4))
{
    if(
CamState)
    {
        
KillTimer(PlayerTimer);
        
SetCameraBehindPlayer(playerid);
        
CamState false;
    }
    else
    {
        
GetPlayerPos(playeridPCP[0], PCP[1], PCP[2]);
         
GetPlayerFacingAngle(playeridPCA);
        
PCL[0] = PCP[0];
        
PCL[1] = PCP[1];
        
PCL[2] = PCP[2];
        
PCP[0] = PCP[0] - (5.0 floatsin(-PCAdegrees));
        
PCP[1] = PCP[1] - (5.0 floatcos(-PCAdegrees));
        
PCP[2] = PCP[2] + 2.0;
        
SetPlayerCameraPos(playeridPCP[0], PCP[1], PCP[2]);
        
SetPlayerCameraLookAt(playeridPCL[0], PCL[1], PCL[2]);
        
PlayerTimer SetTimerEx("FollowPlayer"70true"i"playerid);
        
CamState true;
    }
    return 
1;

Probalo y luego nos dices si te funcionу.

Saludos.
Reply
#8

La funcion detras del link hace lo mismo que los demas, y probablemente mejor.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)