![](templates/Jet/images/c_left_top.gif) |
![](templates/Jet/images/c_right_top.gif) |
![](templates/Jet/images/spacer.gif) |
Autor |
Mensagem |
Lemos
Usuário
![Usuário Usuário](images/3.gif)
![](images/avatars/4988925549e4841e6b1c3.gif)
Registrado: 14/04/09 Mensagens: 802 Localização: Rio de Janeiro - RJ |
|
Erro de Script: animação executada só uma vez |
|
Amigos, fiz um script inicial de teste, falta muita coisa, mas tem uma coisa que tá me encucando é que a animação pain do ator md2 da swatt não é executada várias vezes, durante o ataque do robô. O robô bate e o personagem executa a animação 1 vez e fica ali congelado, apanhando, até que eu o tire de lá e eu queria que a animação fosse executada em loop, várias vezes, enquanto durasse o ataque.
Esse script está no evento mainloop do mapa. Vejam:
//---Begin Script Builder: RoboPrincipal Perseguir Jogador---//
if (GetObjectDistance('RoboPrincipal','Player') < 6) and (GetObjectDistance('RoboPrincipal','Player') >= 0. then
begin
if GetObjectAnimation('RoboPrincipal') <> 'run' then
SetObjectAnimation('RoboPrincipal', 'run');
PointObjectTo('RoboPrincipal', 'Player');
ApplyForce('RoboPrincipal', 1500, 0, 0);
end
else if (GetObjectDistance('RoboPrincipal','Player') < 0. and (not iskeypress(37)) and (not iskeypress(3 ) and (not iskeypress(39)) and (not iskeypress(40)) then
begin
if GetObjectAnimation('RoboPrincipal') <> 'attack' then
SetObjectAnimation('RoboPrincipal', 'attack');
PointObjectTo('RoboPrincipal', 'Player');
if GetObjectAnimation('MainActor') <> 'pain' then
SetObjectAnimation('MainActor', 'pain');
SetObjectAnimationMode('MainActor', 'loop');
if GetObjectAnimation('mainactorweapon') <> 'pain' then
SetObjectAnimation('mainactorweapon', 'pain');
SetObjectAnimationMode('mainactorweapon', 'loop');
end
else if GetObjectAnimation('RoboPrincipal') <> 'stand' then
begin
SetObjectAnimation('RoboPrincipal', 'stand');
end;
//---End Script Builder---//
Fico no aguardo
_________________ Lemos
http://alemdanimacao.zip.net/
![](http://i9.photobucket.com/albums/a63/paykan/Desaparecidos/BannerAssinaturaAlemdaAnimao01A.gif) |
|
Sex Jul 24, 2009 12:29 am |
![Exibir perfil de usuários Exibir perfil de usuários](templates/Jet/images/lang_english/icon_profile.gif) |
![](templates/Jet/images/spacer.gif) |
Mililo
Usuário
![Usuário Usuário](images/2.gif)
![](images/avatars/gallery/Bleach_Anim/bleach85.gif)
Registrado: 05/12/08 Mensagens: 366 Localização: Santo Antônio de Pádua / RJ |
|
|
|
Estranho, será que não é algum script em outro lugar que está mudando o AnimationMode para PlayOnce?
Pelo que vi o AnimationMode só fica MainLoop se essa condição for obedecida:
![](templates/Jet/images/code_header.gif) | ![](templates/Jet/images/spacer.gif) | else if (GetObjectDistance('RoboPrincipal','Player') < 0. and (not iskeypress(37)) and (not iskeypress(3) and (not iskeypress(39)) and (not iskeypress(40)) then
[color=red]Não deu para copiar direito pque no seu ta aparecendo emoticons em alguns lugares do codigo[/color] |
Talvez esta condição esteja deixando de ser obedecida e o AnimationMode mudando para PlayOnce em vez de Loop(via algum outro código) mas a animação continuando em Pain porque nada muda ela(neste outro código).
Foi a única conclusão que consegui chegar, mas não sei, talvez o Edirlei possa te ajudar melhor.
_________________ "Em verdade, em verdade te digo que se alguém não nascer de novo, não pode ver o reino de Deus."
"Porque pela graça sois salvos, mediante a fé; e isto não vem de vós, é dom de Deus; não de obras, para que ninguém se glorie."
----
www.aquiestamos-juventude.blogspot.com
http://todosnecessitam.blogspot.com/ |
|
Sex Jul 24, 2009 10:50 am |
![Exibir perfil de usuários Exibir perfil de usuários](templates/Jet/images/lang_english/icon_profile.gif) |
![](templates/Jet/images/spacer.gif) |
Lemos
Usuário
![Usuário Usuário](images/3.gif)
![](images/avatars/4988925549e4841e6b1c3.gif)
Registrado: 14/04/09 Mensagens: 802 Localização: Rio de Janeiro - RJ |
|
|
|
![](templates/Jet/images/quote_header.gif) | ![](templates/Jet/images/spacer.gif) | Estranho, será que não é algum script em outro lugar que está mudando o AnimationMode para PlayOnce?
Pelo que vi o AnimationMode só fica MainLoop se essa condição for obedecida:
![](templates/Jet/images/code_header.gif) | ![](templates/Jet/images/spacer.gif) | else if (GetObjectDistance('RoboPrincipal','Player') < 0. and (not iskeypress(37)) and (not iskeypress(3) and (not iskeypress(39)) and (not iskeypress(40)) then
[color=red]Não deu para copiar direito pque no seu ta aparecendo emoticons em alguns lugares do codigo[/color] |
Talvez esta condição esteja deixando de ser obedecida e o AnimationMode mudando para PlayOnce em vez de Loop(via algum outro código) mas a animação continuando em Pain porque nada muda ela(neste outro código).
Foi a única conclusão que consegui chegar, mas não sei, talvez o Edirlei possa te ajudar melhor. |
Mililo, obrigado por responder.
Como eu imaginei, esse é o tipo de coisa em que parece que tá tudo certo e mesmo assim não funciona...
Bom, os emoticons apareceram pque a distância da ação é 0.8. Não sei se tem a ver com a proximidade dos campos de colisão dos dois, mas nessa distância se você ver de lado ainda está falso, o robô bate mas você vê que o jogador executa a ação sem ser atingido realmente. Pretendo ir reduzindo essa distância oas poucos, para ver se melhora.
Se eu não colocar a condição das teclas direcionais, quando ocorre a ação e o jogador entra na porrada (nessa condição ele fica paradão, meio caído para trás, mas não se mexe, é como se estivesse sendo usado o playonce!), ao pressionar as teclas ele vai se movendo congelado, sendo arrastado, até que a distância fique maior que 0.8 e aí sim ele começa a correr. Do jeito que está, imediatamente quando apertamos as teclas, ele corre e se livra do robô.
Tentei no animationmode o none e o loop, como está aí, e também testei sem essa linha do animationmode, que só coloquei para tentar solucionar o problema.
O script completo do robô está aí, não tem outro para ele e nem pro jogador principal. Por enquanto ele tá parado, esperando a aproximação para iniciar a perseguição, executando a animação stand.
Se eu descobrir alguma coisa, posto aqui, por agora estou mexendo em outras coisas do jogo para poder postar um screenshot.
No momento, meu maior problema é salvar as coisas, com o volume do objetos, a maioria do 3dgb, mesmo que copiados e colados para aliviar a memória, o salvamento do jogo para ver rodando está muito lento, uns 2 ou 3 minutos... Bom, Celeron é celeron, espero um dia ter um Core 2 duo ou superior...
Abraço
_________________ Lemos
http://alemdanimacao.zip.net/
![](http://i9.photobucket.com/albums/a63/paykan/Desaparecidos/BannerAssinaturaAlemdaAnimao01A.gif) |
|
Sex Jul 24, 2009 12:18 pm |
![Exibir perfil de usuários Exibir perfil de usuários](templates/Jet/images/lang_english/icon_profile.gif) |
![](templates/Jet/images/spacer.gif) |
Mililo
Usuário
![Usuário Usuário](images/2.gif)
![](images/avatars/gallery/Bleach_Anim/bleach85.gif)
Registrado: 05/12/08 Mensagens: 366 Localização: Santo Antônio de Pádua / RJ |
|
|
|
É não sei direito o que pode ser... eu também to fazendo meu jogo por isso não posso testar, mas se der eu tento.
E quanto aos emoticons, você pode usar o comando 'Code' do forum, nele acho que não carrega esses códigos(tanto que meu codigo de color não funcionou no meu outro post).
E quanto ao tempo de carregamento, não é só você, o meu também tá em, mais ou menos, 2min.
Aqui: Pentium 4 3.06GHz, Geforce 6200, 768RAM - Sei que é um lixo ![Sad](images/smiles/icon_sad.gif)
_________________ "Em verdade, em verdade te digo que se alguém não nascer de novo, não pode ver o reino de Deus."
"Porque pela graça sois salvos, mediante a fé; e isto não vem de vós, é dom de Deus; não de obras, para que ninguém se glorie."
----
www.aquiestamos-juventude.blogspot.com
http://todosnecessitam.blogspot.com/ |
|
Sex Jul 24, 2009 1:02 pm |
![Exibir perfil de usuários Exibir perfil de usuários](templates/Jet/images/lang_english/icon_profile.gif) |
![](templates/Jet/images/spacer.gif) |
Edirlei
Administrador
![Administrador Administrador](images/5.gif)
![](images/avatars/narutobase-019.gif)
Registrado: 15/03/08 Mensagens: 760
|
|
|
|
Não tive tempo para testar, mas tente editar os if onde você altera a animação dos personagens colocando um begin e um end de modo que o SetObjectAnimationMode só seja executado uma única vez junto com o SetObjectAnimation.
Se isso não funcionar você também pode tentar desabilitar as animações automáticas do ator principal no momento do ataque, se não mesmo que você altere as animações no script o código interno do 3D Game Builder vai restaurar elas para o padrão.
|
|
Sex Jul 24, 2009 4:14 pm |
![Exibir perfil de usuários Exibir perfil de usuários](templates/Jet/images/lang_english/icon_profile.gif) |
![](templates/Jet/images/spacer.gif) |
Lemos
Usuário
![Usuário Usuário](images/3.gif)
![](images/avatars/4988925549e4841e6b1c3.gif)
Registrado: 14/04/09 Mensagens: 802 Localização: Rio de Janeiro - RJ |
|
|
|
![](templates/Jet/images/quote_header.gif) | ![](templates/Jet/images/spacer.gif) | Não tive tempo para testar, mas tente editar os if onde você altera a animação dos personagens colocando um begin e um end de modo que o SetObjectAnimationMode só seja executado uma única vez junto com o SetObjectAnimation.
Se isso não funcionar você também pode tentar desabilitar as animações automáticas do ator principal no momento do ataque, se não mesmo que você altere as animações no script o código interno do 3D Game Builder vai restaurar elas para o padrão. |
Coloquei assim:
//---Begin Script Builder: RoboPrincipal Perseguir Jogador---//
if (GetObjectDistance('RoboPrincipal','Player') < 6) and (GetObjectDistance('RoboPrincipal','Player') >= 0.8) then
begin
if GetObjectAnimation('RoboPrincipal') <> 'run' then
SetObjectAnimation('RoboPrincipal', 'run');
PointObjectTo('RoboPrincipal', 'Player');
ApplyForce('RoboPrincipal', 1500, 0, 0);
end
else if (GetObjectDistance('RoboPrincipal','Player') < 0.8) and (not iskeypress(37)) and (not iskeypress(38)) and (not iskeypress(39)) and (not iskeypress(40)) then
begin
if GetObjectAnimation('RoboPrincipal') <> 'attack' then
begin
SetObjectAnimation('RoboPrincipal', 'attack');
PointObjectTo('RoboPrincipal', 'Player');
end
else if GetObjectAnimation('MainActor') <> 'pain' then
begin
SetObjectAnimation('MainActor', 'pain');
SetObjectAnimationMode('MainActor', 'loop');
end
else if GetObjectAnimation('mainactorweapon') <> 'pain' then
begin
SetObjectAnimation('mainactorweapon', 'pain');
SetObjectAnimationMode('mainactorweapon', 'loop');
end
else if GetObjectAnimation('RoboPrincipal') <> 'stand' then
begin
SetObjectAnimation('RoboPrincipal', 'stand');
end
end;
//---End Script Builder---//
Mas infelizmente, continua congelando, nada mudou. Eu ainda não fechei e abri o aplicativo, às vezes dá certo. Se tiver mais alguma novidade, posto aqui.
_________________ Lemos
http://alemdanimacao.zip.net/
![](http://i9.photobucket.com/albums/a63/paykan/Desaparecidos/BannerAssinaturaAlemdaAnimao01A.gif) |
|
Sex Jul 24, 2009 5:03 pm |
![Exibir perfil de usuários Exibir perfil de usuários](templates/Jet/images/lang_english/icon_profile.gif) |
![](templates/Jet/images/spacer.gif) |
Lemos
Usuário
![Usuário Usuário](images/3.gif)
![](images/avatars/4988925549e4841e6b1c3.gif)
Registrado: 14/04/09 Mensagens: 802 Localização: Rio de Janeiro - RJ |
|
|
|
Uma outra curiosidade, neste projeto existem sons de passos do ator principal, que são ativados através da tecla direcional 38. Tentei usar o mesmo script para gerar o som de disparo da arma, mas a tecla padrão, de espaço, é 0x20 e esse valor é rejeitado pelo script... Qualquer outro valor é aceito normalmente, isso me obriga a mudar a tecla de disparo, mas a barra de espaço é bem legal...
_________________ Lemos
http://alemdanimacao.zip.net/
![](http://i9.photobucket.com/albums/a63/paykan/Desaparecidos/BannerAssinaturaAlemdaAnimao01A.gif) |
|
Sex Jul 24, 2009 5:11 pm |
![Exibir perfil de usuários Exibir perfil de usuários](templates/Jet/images/lang_english/icon_profile.gif) |
![](templates/Jet/images/spacer.gif) |
Mililo
Usuário
![Usuário Usuário](images/2.gif)
![](images/avatars/gallery/Bleach_Anim/bleach85.gif)
Registrado: 05/12/08 Mensagens: 366 Localização: Santo Antônio de Pádua / RJ |
|
|
|
Eu já tive esse problema, é só usar strtoint(0x20).
Bom não lembro bem mas acho que é isso sim .
_________________ "Em verdade, em verdade te digo que se alguém não nascer de novo, não pode ver o reino de Deus."
"Porque pela graça sois salvos, mediante a fé; e isto não vem de vós, é dom de Deus; não de obras, para que ninguém se glorie."
----
www.aquiestamos-juventude.blogspot.com
http://todosnecessitam.blogspot.com/ |
|
Sáb Jul 25, 2009 12:03 pm |
![Exibir perfil de usuários Exibir perfil de usuários](templates/Jet/images/lang_english/icon_profile.gif) |
![](templates/Jet/images/spacer.gif) |
|
|
![](templates/Jet/images/spacer.gif) |
![](templates/Jet/images/c_left_bottom.gif) |
![](templates/Jet/images/c_right_bottom.gif) |
|