Colisão em topdown

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Colisão em topdown

Mensagem por RubensGM em Ter 25 Dez 2012, 17:46

Não estou conseguindo fazer a colisão do carro no meu jogo de corrida em top down...
alguem pode me ajudar ???
olhem o script que eh executado na colisão:
Código:
//Script que manipula colisão com um objeto sólido

var colDir;

colDir = point_direction(other.x, other.y, x, y);
direction = colDir;
if colDir != 0
speed = speed/direction;

Sera que eh possivel fazer uma colisão precisa, sem ser "speed = 0"
vlw

RubensGM

Número de Mensagens : 87
Data de inscrição : 31/05/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Colisão em topdown

Mensagem por Lukbebalduke em Ter 25 Dez 2012, 17:55

Nao entendo, mas porque nao pode ser speed=0 ?

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Colisão em topdown

Mensagem por RubensGM em Ter 25 Dez 2012, 22:36

pq em uma colisão precisa o carro bate e volta um pouco com a velocidaade reduzida drasticamente... e nao para d vez... e tambem se speed= for igual a 0 ao encostar na parede se ele soh 'ralá' o carro na parede o carro vai 'travar'....

RubensGM

Número de Mensagens : 87
Data de inscrição : 31/05/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Colisão em topdown

Mensagem por saim em Qua 26 Dez 2012, 09:22

RubensGM escreveu:
Código:
speed = speed/direction;
De cara, achei que essa linha geraria um erro. E se "direction" for "0"? Aí, pensei que você pode ter escrito o código de cabeça e pensado em "colDir" ao invés de "direction". Foi isso, né?
Mesmo assim, fica estranho. Se colDir for 1, a velocidade não muda nada, se for 359 (quase a mesma coisa), cai drasticamente.

Olha, o que eu faço normalmente é assim, eu verifico qual a direção ortogonal que mais se assemelha à da colisão. Então, colDir passa a assumir apenas os valores 0, 90, 180 ou 270.
Aí, eu divido a direção do carro em dois vetores. Aquele que for em direção à colisão é zerado e o restante é multiplicado por um valor fixo, tipo entre 0.75 e 1 (normalmente eu deixo 1, mesmo). Resultado: a direção fica ortogonal e a velocidade resultante depende da direção que ele vinha.

Ah, sim, a image_angle depende da direção, e não o contrário.
Com um pouco mais de trabalho, você pode fazer a image_angle ir girando até o ponto em que não há mais colisão (lembre-se de criar uma mask retangular). Aí, a direction vai depender da image_angle resultante. Com a direction inicial, o truque de dividir a velocidade em vetores ainda funciona, mas a matemática é um pouco mais chata.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Colisão em topdown

Mensagem por theguitarmester em Qua 26 Dez 2012, 11:44

pq em uma colisão precisa o carro bate e volta um pouco com a velocidaade reduzida drasticamente...
o Jeito mais Fácil de Fazer isto é colocar na Colisão Isto:
Código:
speed = speed/4
Porém não é o Melhor(mas o Jeito melhor e mais real, ainda não achei).

theguitarmester

Ranking : Sem avaliações
Número de Mensagens : 1908
Idade : 21
Data de inscrição : 28/02/2012
Notas recebidas : B
Reputação : 80
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 2
   : 2
   : 1

http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Re: Colisão em topdown

Mensagem por Conteúdo patrocinado Hoje à(s) 07:39


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum