Problemas ao rotacionar Player. ????

 
   3D Game Builder - Índice » Suporte
Problemas ao rotacionar Player. ????
Autor Mensagem
kleiton157
Usuário
Usuário


Registrado: 06/05/11
Mensagens: 1170
Localização: Na cáducarai

Problemas ao rotacionar Player. ????
Alguém sabe me informar qual seria o objeto responsável por guardar as posições de rotação originais do player?

Porque quando eu uso os comandos de rotacinar no player, dependendo da quantidade que eu rotacione, ele perde as posições de rotação original.

Por exemplo: Eu uso o comando setobjectROLLangle('Player',getobjectrollangle('Player')+15); para fazer o player rodar. Dai coloco o comando setobjectROLLangle('Player',0); para retornar a posição original, mas essa posição não corresponde mais ao que era antes, ele fica meio inclinado... Se eu repetir o processo ele toma outra posição e por assim vai, sempre a posição 0 vai significar uma posição diferente...


Não sei se estou sendo claro, mas se alguém entender e souber o porquê, pode me ajudar?



_________________
________________________________________
- É nescessário ver além do que os olhos mostram
Dom Dez 28, 2014 11:54 am Exibir perfil de usuários
welgomes
Usuário
Usuário


Registrado: 10/07/11
Mensagens: 827
Localização: São Paulo - Capital

Se eu não me engano o meu exemplo TINIFile_v1.1.rar guarda e restaura a rotação do player, dê uma olhada.
http://wsantos.eti.br/3d_game_builder/

Se não for esse, veja os demais: RegWin.rar e TStringList.rar
Dom Dez 28, 2014 2:26 pm Exibir perfil de usuários
Matheus Dantas
Usuário
Usuário


Registrado: 23/04/13
Mensagens: 249
Localização: São Paulo, Mogi das Cruzes

sim, mas eu ja testei isso e a posição original dele é 180, que fica assim: SetObjectRollAngle('Player',180); quando zera este valor, aí que ele gira 180 graus, os ângulos Turn, Pitch e Roll podem ser trocados dependendo do objeto utilizado



_________________
//Contato

YouTube:
https://www.youtube.com/channel/UCCBpgDU7UrI1V8YvoKg86QA

Wordpress (Projetos):
http://dantasgames.wordpress.com/

Page(Facebook):
https://www.facebook.com/mathdantasgames

Deviantart:
http://dantasgames.deviantart.com/

Profile(Facebook):
https://www.facebook.com/matheus.dantas.1000

Instagram:
matheusdantassantana

Twitter:
@MatheusDantasDG
Dom Dez 28, 2014 4:32 pm Exibir perfil de usuários
kleiton157
Usuário
Usuário


Registrado: 06/05/11
Mensagens: 1170
Localização: Na cáducarai

Então, eu criei esse script aqui:

Código:
if iskeypress(37)=false then
if iskeypress(39)=false then
if getobjectROLLangle('Player') > 0 then
begin
setobjectROLLangle('Player',getobjectrollangle('Player')-0.5)
end;
if iskeypress(37)=false then
if iskeypress(39)=false then
if getobjectROLLangle('Player') < 0 then
begin
setobjectROLLangle('Player',getobjectrollangle('Player')+0.5)
end;


Era pra ser um comando de retornar o player pra posição 0 assim que as teclas das setas estiverem soltas. Mas só funciona se eu rotacionar no angulo 'rollangle', quando eu envolvo um segundo angulo, dependendo da magnitude do movimento ele não retorna a posição original, é como se 0 significasse outro numero.

_________________
________________________________________
- É nescessário ver além do que os olhos mostram
Dom Dez 28, 2014 6:22 pm Exibir perfil de usuários
kleiton157
Usuário
Usuário


Registrado: 06/05/11
Mensagens: 1170
Localização: Na cáducarai

Estava vendo o projeto que o welgomes me mandou, dai vi que tinha um sobre camera...

Baixei por curiosidade e vi que lá tinha um marcador de rotação do player, dai fui e implementei meu sistema ao projeto da camera para ver o que acontecia com o angulo do player, troquei os verificadores de posição por verificadores de rotação, e olhem o resultado.


A area marcada em vermelho corresponde ao angulo roll e a verde ao angulo pitch.

Nessa foto eu rotacionei o player várias vezes e depois esperei que o script voltasse tudo pro 0... Se for ver pelos numeros funcionou perfeitamente, tudo está em 0 como está na imagem, mas como da pra ver, o player está todo torto, isso nunca seria a posição 0 Sad

_________________
________________________________________
- É nescessário ver além do que os olhos mostram
Dom Dez 28, 2014 6:50 pm Exibir perfil de usuários
welgomes
Usuário
Usuário


Registrado: 10/07/11
Mensagens: 827
Localização: São Paulo - Capital

Faz o seguinte teste.
Ao invés de 0 usa um valor próximo de zero, algo como 0.0001
No meu exemplo o jogador não consegue deixar o valor absolutamente em zero e o que é mostrado na tela é um valor arredondado.
Sei lá, vai que é algum bug.
Dom Dez 28, 2014 10:07 pm Exibir perfil de usuários
kleiton157
Usuário
Usuário


Registrado: 06/05/11
Mensagens: 1170
Localização: Na cáducarai

Usei os valores que tu falou e alguns parecidos também como 0.1 0.01 e tal... O resultado continua o mesmo... Por isso upei o projeto modificado para que vocês possam ver o problema comigo:
http://www.4shared.com/rar/C3ot7waGba/projeto023.html

Primeiro testem tecla por tecla, reparem que ao mover o objeto com as setas direita ou esquerda ele retorna automaticamente pra posição inicial, perfeitamente...
Testem também com as setas para cima e para baixo... também funciona... Depois testem com combinações tipo pra cima e pro lado...

A minha teoria é que ao mudar dois angulos de uma só vez, automaticamente muda o terceiro angulo, no caso seria o turn. Porém isso não é mostrado na tela, e nem da pra colocar um corretor pro terceiro angulo, é como se ele fosse 0.



_________________
________________________________________
- É nescessário ver além do que os olhos mostram
Seg Dez 29, 2014 1:23 pm Exibir perfil de usuários
kleiton157
Usuário
Usuário


Registrado: 06/05/11
Mensagens: 1170
Localização: Na cáducarai

Se acharmos a solução desse problema, vamos achar a solução da camera FPS controlada pelo mouse..

_________________
________________________________________
- É nescessário ver além do que os olhos mostram
Seg Dez 29, 2014 1:28 pm Exibir perfil de usuários
   3D Game Builder - Índice » Suporte
Página 1 de 1