[Ajuda] Anomalia em posiзхes de cвmera
#1

Fui responder um tуpico e me deparei com esta dъvida:

Quote:
Originally Posted by DayvisonJJB
Посмотреть сообщение
Porque quando eu Uso:
PHP код:
TogglePlayerSpectating(playerid,true); 
E em seguida:
PHP код:
    SetPlayerCameraPos(playerid1322.08, -2095.54108.22); 
    
SetPlayerCameraLookAt(playerid1317.05, -2092.80106.44); 
A tela fica congelada na poisiзгo: 50.50, 50.50, 50.50(Padrгo do TogglePlayerSpectating)
A soluзгo foi usar um Timer de 300 ms para setar apуs a camera do player, porйm sу funciona em alguns players. Por que disso? seria o FPS?
Eu algumas vezes tenho problemas com a funзгo SetPlayerPos, ela simplesmente nгo seta a posiзгo. Tentei fazer uma soluзгo pro problema, criando o sistema abaixo (nгo vou explicar muito o cуdigo):

PHP код:
new IsForcingCamera[MAX_PLAYERS];
forward ChecarCamera(playerid,Float:_x,Float:_y,Float:_z);
public 
ChecarCamera(playerid,Float:_x,Float:_y,Float:_z)
{
    new 
Float:xFloat:yFloat:z;
    
GetPlayerCameraPos(playerid,x,y,z);
    
    
// Vamos criar uma variбvel para ver uma taxa de variaзгo de cвmera.
    // Eu nгo sei se a cвmera fica exatamente na posiзгo, vamos por um erro. 
    
new Float:taxa;
    
// Calcula a taxa
    
taxa floatabs(_x x) + floatabs (_y y) + floatabs (_z z);
   
// Faz a comparaзгo
    
if(taxa 5.0// atй 5.0 seria uma variaзгo aceitбvel
        
SetPlayerCameraPos(playerid,_x,_y,_z);
        
     
// DEBUG ONLY
    
printf("Posiзгo setada: (%.02f,%.02f,%.02f)",_x,_y,_z);
    
printf("Posiзгo obtida: (%.02f,%.02f,%.02f)",x,y,z);
    
printf("Taxa: %0.2f. Considerada %s.",taxa,taxa ? ("nгo aceitбvel") : ("aceitбvel"));
    return 
1;
}
CMD:teste(playerid)
{
    
ForcePlayerCameraPos(playerid,100.0,100.0,100.0);
    return 
1;
}
stock ForcePlayerCameraPos(playerid,Float:_x,Float:_y,Float:_z

    
KillTimer(IsForcingCamera[playerid]); 
    
SetPlayerCameraPos(playerid,_x,_y,_z); 
    
IsForcingCamera[playerid] = SetTimerEx("ChecarCamera",1001,false,"dfff",playerid,_x,_y,_z); 

Estou chamando ForcePlayerCameraPos no comando teste, e tambйm quando um jogador entra no servidor.

O comando /teste nгo setou a posiзгo da cвmera nenhuma vez. (nem mesmo forзando)

Jб quando eu setei a cвmera quando o jogador se conectou, setou de primeira e os resultados obtidos foram estes:



Resultado absurdo da funзгo GetPlayerCameraPos.

E й claro que nгo deu certo a funзгo de forзar -.-

A minha conclusгo й que ambas as funзхes de setar/obter cвmera, estгo com problemas.

Qual a opiniгo de vocкs sobre isto? Ou sou eu que to fazendo bost@?
Reply
#2

Uma vez fiz um teste, e descobri que o mйtodo que eu usava pra fazer interpolate sem o player estar spectando bugava o sa:mp e dava pra ver a camera original do jogo (que й muito dahora por sinal). Sobre o cуdigo ai, tem como postar as callbacks q vc testou ele tbm?
Reply
#3

OnPlayerConnect

E na callback de reposta do MySQL quando loga na conta.
Reply
#4

Acho que apenas o segundo SetPlayerCameraPos (da callback customizada) acaba bugando a cвmera, certo? Nгo tive problemas atй agora com a funзгo, vou analisar melhor aqui.
Reply
#5

Nas duas setadas que foram debugadas no console, a posiзгo foi setada corretamente como planejado.

Mas o valor de GetPlayerCameraPos que me intriga.

E quanto ao comando /teste ele nгo faz nada '-'

Vou fazer um debug ingame e gravar um vнdeo.

Aguarde ediзгo deste post.
Reply
#6

Estranho, tф testando seu cуdigo na 0.3.7 e a cвmera nгo estб sendo setada lol
Reply
#7

Exatamente.

[ame]http://www.youtube.com/watch?v=-H3sz5lQTPo[/ame]
Reply
#8

Descobri o que й, parece que й obrigatуrio usar SetPlayerCameraLookAt quando muda a posiзгo da cвmera, testa aн
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)