A comunidade brasileira de desenvolvimento e programação de jogos.
Bem-vindo: Qua Abr 14, 2021 11:51 am

Todos os horários são GMT - 3 horas




Criar novo tópico Responder  [ 84 mensagens ]  Ir para página Anterior  1, 2, 3, 4, 5, 6  Próximo
Autor Mensagem
 Título:
MensagemEnviado: Ter Out 10, 2006 4:45 pm 
Offline
Site Admin
Avatar do usuário

Registrado em: Ter Nov 08, 2005 1:03 pm
Mensagens: 574
Localização: Santos-SP
jah tentou só setar o AnimPos := 0 e o AnimSpeed := 0 ?

_________________
Luiz Pestana
facebook | blog

Imagem


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Qua Out 11, 2006 3:05 pm 
Offline
Membro júnior
Avatar do usuário

Registrado em: Seg Set 25, 2006 11:00 am
Mensagens: 34
Ops! Obrigado de novo Luis.

Mas e a questão de ignorar a entrada de dados enquanto a animação não terminar?

_________________
Asta la vista.


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Qua Out 11, 2006 10:31 pm 
Offline
Membro avançado
Avatar do usuário

Registrado em: Qui Jan 12, 2006 7:30 pm
Mensagens: 434
Localização: irc.voidzero.com - #gamedev
maximus escreveu:
Mais uma coisa, quando aperto um tecla, que faz uma animação qualquer, a animação não começa enquanto eu não solto a tecla.


Depende do evento que você está utilizando.
Se você está utilizando o onKeyUp, ele só vai ocorrer quando você soltar a tecla.
Se você utilizar o onKeyDown, ele vai ocorrer no momento que você aperta a tecla.

maximus escreveu:
Como faço pra ignorar a entrada de dados enquanto a animação não terminar?


Mantendo uma variável que contém o estado da animação.

Ao iniciar a animação, você atribui algum valor à variável. Ao finalizar a animação, você "zera" a variável.
Enquanto a variável não estiver "zerada", você ignora a entrada de dados, com um simples If.

_________________
The best performance improvement is the transition from the nonworking state to the working state.
~J. Osterhout


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sáb Out 14, 2006 10:22 am 
Offline
Membro júnior
Avatar do usuário

Registrado em: Seg Set 25, 2006 11:00 am
Mensagens: 34
Nameless Stranger escreveu:
Depende do evento que você está utilizando.
Se você está utilizando o onKeyUp, ele só vai ocorrer quando você soltar a tecla.
Se você utilizar o onKeyDown, ele vai ocorrer no momento que você aperta a tecla.

Estou usando o método do inputstate:
Código:
if isButton1 in Form1.DXInput1.States then
{animação}

Enquanto a tecla está pressionada ele fica repetindo a primeira parte da animação, a animação só continua quando solto a tecla.

Nameless Stranger escreveu:
Mantendo uma variável que contém o estado da animação.
Ao iniciar a animação, você atribui algum valor à variável. Ao finalizar a animação, você "zera" a variável.
Enquanto a variável não estiver "zerada", você ignora a entrada de dados, com um simples If.

Ja tentei fazer isso, mas o inputstate parece ignorar a variável.
Essa semana fiquei longe do computador, mas amanhã mesmo vou tentar de novo, com um temporizador.

Valeu pelas dicas. :D

_________________
Asta la vista.


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sáb Out 14, 2006 1:56 pm 
Offline
Site Admin
Avatar do usuário

Registrado em: Ter Nov 08, 2005 1:03 pm
Mensagens: 574
Localização: Santos-SP
Faz o if junto com mais outro if, procurando saber se a animação já foi iniciada. Ex:
Código:
if ((isButton1 in Form1.DXInput1.States) and (animacao=false)) then
begin
{animacao}
animacao = true
end;

_________________
Luiz Pestana
facebook | blog

Imagem


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Seg Out 16, 2006 3:19 pm 
Offline
Membro júnior
Avatar do usuário

Registrado em: Seg Set 25, 2006 11:00 am
Mensagens: 34
Valeu pela ajuda gente!
Consegui resolver, mas tive que recorrer às técnicas de PORTA - Programação Orientada a Recurso Técnico Alternativo, ou seja, a boa e velha gambiarra. Usei um timer pra controlar quando o personagem pode se mover ou não.
Luis, a idéia da variável não deu certo porque ela muda de estado muito rápido, quando ativada pelas teclas, não consegui vincula-las a animação.

_________________
Asta la vista.


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Qua Out 25, 2006 2:43 pm 
Offline
Membro júnior
Avatar do usuário

Registrado em: Seg Set 25, 2006 11:00 am
Mensagens: 34
Não consigo fazer as colisões, alguem poderia, por favor, dizer o que está errado nestes trechos do código?

Primeiro nas declarações, do personagen e de um inimigo:
Código:
TPer = class(TImageSprite)
    public
    procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
    procedure DoMove(MoveCount: Integer); override;
end;

TEnemy = class(TImageSprite)
    public
    procedure DoMove(MoveCount: Integer); override;
end;


Agora na colisão propriamente dita:
Código:
procedure Tper.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
  if (Sprite is TEnemy)then
  begin
  Tenemy(PlayerSprite).dead;
  end;
end;


Fiz com que o inimigo sempre venha na direção do personagem, e mesmo depois que se encontram nada acontece.
Deve ta faltando alguma coisa muito óbvia, mas não consigo descobrir o que é.
A propósito, nas declarações especifiquei TImageSprite, mas na colisão tive que colocar PlayerSprite porque não queria aceitar o anterior. O que significa cada um, exatemente?

_________________
Asta la vista.


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Qua Out 25, 2006 11:47 pm 
Offline
Site Admin
Avatar do usuário

Registrado em: Ter Nov 08, 2005 1:03 pm
Mensagens: 574
Localização: Santos-SP
Quando vc utiliza:
Código:
procedure Tper.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
  if (Sprite is TEnemy)then
  begin
  Tenemy(PlayerSprite).dead;
  end;
end;

O sprite que é colidido é o objeto Self com o objeto Sprite passado por parametro. Para realizar a instrução dead vc deve usar:
Código:
TEnemy(Sprite).dead;

Isso levando em consideração que seu loop esteja com as intruções corretas mostrada no exemplo.

Abraços.

_________________
Luiz Pestana
facebook | blog

Imagem


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Qui Out 26, 2006 7:51 am 
Offline
Membro júnior
Avatar do usuário

Registrado em: Seg Set 25, 2006 11:00 am
Mensagens: 34
Dei uma olhada nuns códigos que achei pela internet usando o DelphiX, agora sei o que ta faltando, tem que colocar a seguinte linha no DoMove do personagem:
Código:
Collision;

Caramba, eu tava percebendo que era uma coisa muito simples.

Quanto a instrução dead vc estava certo, se eu deixar
Código:
Tenemy(PlayerSprite).dead;
quem some é o personagen e não o inimigo.

Grato pela atenção Luiz Pestana.

_________________
Asta la vista.


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Qui Nov 16, 2006 1:53 pm 
Offline
Membro júnior
Avatar do usuário

Registrado em: Seg Set 25, 2006 11:00 am
Mensagens: 34
Só agora percebi que as colisões acontecem mesmo que a parte colidida não esteja visível, ou seja, mesmo que seja uma cor marcada como transparente.
Tem como fazer com que as colisões ocorram somente se as partes colididas não sejam transparentes?

_________________
Asta la vista.


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Sáb Nov 03, 2007 7:52 pm 
Offline
Membro novo

Registrado em: Sáb Dez 31, 2005 10:17 am
Mensagens: 8
Fala ai Luiz Pestana, beleza contigo?

Faz um tempinho que você escreveu esse tutorial e pelo visto ele ficou descontinuado... Me interessei pela idéia e vou me aprofundar na parada, vou ver se escrevo um tipo de versão mais explicativa do tutorial, vi que você esqueceu uns detalhezinhos acerca do guia oficial do DelphiX, tipo o TDXForm (uma versão aprimorada da classe TForm própria pro DelphiX, é só trocar a classe lá no código e pronto :D).

Vou tirar um tempinho qualquer hora dessas e dar minha participação por aqui, valeu pela iniciativa, eu estava precisando mesmo desenferrujar no DelphiX :P

_________________
Timóteo Ramos a.k.a. Raz0r


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Qui Mar 20, 2008 8:01 pm 
Offline
Membro júnior
Avatar do usuário

Registrado em: Seg Jan 07, 2008 6:13 pm
Mensagens: 47
Não sei o que houve, baixo o programa, e só vem arquivo, nenhum programa...


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Qui Mar 20, 2008 10:43 pm 
Offline
Membro veterano
Avatar do usuário

Registrado em: Dom Mai 20, 2007 8:42 am
Mensagens: 1114
Localização: Belo Horizonte
8) O DelphiX é apenas uma biblioteca de apoio para o Delphi para poder utilizala você tera que ter o Delphi 7 ou 6 instalado em sua maquina.
Ok!^^xD...Abraço!

_________________
Imagem


Voltar ao topo
 Perfil  
 
 Título: Não entendi
MensagemEnviado: Ter Mar 25, 2008 6:44 pm 
Offline
Membro intermediário
Avatar do usuário

Registrado em: Dom Mar 23, 2008 3:51 pm
Mensagens: 176
Localização: Passo Fundo RS - Brasil
8) Bom naqueles códigos que tu mandou botar ao Unit1 não funcionaram os secundários (que voce falou que eram para o funcionamento do program) e consequentemente os Principais, o problema reportado foi esse: '=' expected but '(' found, esse é um exemplo, mas no lugar do ( as vezes havia '.' ',' e etc.etc.etc...., Responda Rápido


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Ter Mar 25, 2008 6:53 pm 
Offline
Membro intermediário
Avatar do usuário

Registrado em: Dom Mar 23, 2008 3:51 pm
Mensagens: 176
Localização: Passo Fundo RS - Brasil
[quote="tonyhf"]Não sei o que houve, baixo o programa, e só vem arquivo, nenhum programa...[/quote] Aconteceu o seguinte: Para mim eu fiz o seguinte, fiz o unzip na pasta Delphi\DelphiX e ai deixei lá. Depois peguei e executei o programa Source\DelphiX_for7 que seria o próprio delphi 7 (Se seu Delphi for 5 (Ex) use o DelphiX_for'5') quando abrir o delphi vai ter as abas'Standard''DirectX' e no Final Pressionando >>>>>> terá o DelphiX e os componentes que o Luis Pestana falow, por exemplo DirectDraw ... problemas com o código voce terá de falar com o LuisPestana... eu por exemplo tive problemas em expected...


Voltar ao topo
 Perfil  
 
Exibir mensagens anteriores:  Ordenar por  
Criar novo tópico Responder  [ 84 mensagens ]  Ir para página Anterior  1, 2, 3, 4, 5, 6  Próximo

Todos os horários são GMT - 3 horas


Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante


Enviar mensagens: Proibido
Responder mensagens: Proibido
Editar mensagens: Proibido
Excluir mensagens: Proibido
Enviar anexos: Proibido

Ir para:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzido por: Suporte phpBB