Anomalia em posiзхes de cвmera -
arakuta - 04.04.2015
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(playerid, 1322.08, -2095.54, 108.22);
SetPlayerCameraLookAt(playerid, 1317.05, -2092.80, 106.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:x, Float:y, Float: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 > 5 ? ("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@?
Re: Anomalia em posiзхes de cвmera -
n0minal - 04.04.2015
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?
Re: Anomalia em posiзхes de cвmera -
arakuta - 04.04.2015
OnPlayerConnect
E na callback de reposta do MySQL quando loga na conta.
Re: Anomalia em posiзхes de cвmera -
n0minal - 04.04.2015
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.
Re: Anomalia em posiзхes de cвmera -
arakuta - 04.04.2015
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.
Re: Anomalia em posiзхes de cвmera -
n0minal - 04.04.2015
Estranho, tф testando seu cуdigo na 0.3.7 e a cвmera nгo estб sendo setada lol
Re: Anomalia em posiзхes de cвmera -
arakuta - 04.04.2015
Exatamente.
[ame]http://www.youtube.com/watch?v=-H3sz5lQTPo[/ame]
Re: Anomalia em posiзхes de cвmera -
n0minal - 05.04.2015
Descobri o que й, parece que й obrigatуrio usar SetPlayerCameraLookAt quando muda a posiзгo da cвmera, testa aн