GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


Como calcular o bounding box

4 participantes

Ir para baixo

Como calcular o bounding box Empty Como calcular o bounding box

Mensagem por Jiraya Dom 15 Abr 2012, 00:04

Spoiler:

Obrigado a todos, o problema ja foi resolvido!

para quem tiver a mesma duvida aqui esta a solução

Código:

x1 =(sprite_width * abs(cos(degtorad(image_angle))) + sprite_height * abs(sin(degtorad(image_angle))))*-.5
x2 =(sprite_width * abs(cos(degtorad(image_angle))) + sprite_height * abs(sin(degtorad(image_angle))))*.5
y1 =(sprite_width * abs(sin(degtorad(image_angle))) + sprite_height * abs(cos(degtorad(image_angle))))*-.5
y2 =(sprite_width * abs(sin(degtorad(image_angle))) + sprite_height * abs(cos(degtorad(image_angle))))*.5
Obrigado Matheus pelas dicas.





Última edição por Jiraya em Dom 15 Abr 2012, 01:22, editado 2 vez(es)
Jiraya
Jiraya

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 20/03/2010
Reputação : 108
Número de Mensagens : 1134
Prêmios : Como calcular o bounding box Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.facebook.com/seito.washiro.7

Ir para o topo Ir para baixo

Como calcular o bounding box Empty Re: Como calcular o bounding box

Mensagem por MatheusReis Dom 15 Abr 2012, 00:17

As bouding boxes são calculadas apartir do x e do y do objeto, da caixa de colisão da máscara e do centro da mesma máscara.

A bbox_left de um objeto, por exemplo, é calculada por:

x+sprite_get_bbox_left(mask_index)-sprite_get_xoffset(mask_index);

ou seja

X do objeto, mais a posição da lateral esquerda da caixa de colisão menos o centro da máscara.

O processo é repetido nas outras variáveis da caixa de colisão

x+sprite_get_bbox_right(mask_index)-sprite_get_xoffset(mask_index);

y+sprite_get_bbox_top(mask_index)-sprite_get_yoffset(mask_index);

y+sprite_get_bbox_bottom(mask_index)-sprite_get_yoffset(mask_index);


Pode verificar a igualdade de todas que dará certo, apenas lembre que mask_index não pode ser -1 ("same as sprite") nessa verificação (ele não pegará a id da sprite atual, mas tentará usar -1 para pegar as informações da máscara).


Última edição por MatheusReis em Dom 15 Abr 2012, 00:41, editado 2 vez(es)
MatheusReis
MatheusReis

Games Ranking : Nota A

Notas recebidas : B-A-A
Data de inscrição : 13/01/2010
Reputação : 31
Número de Mensagens : 1093
Prêmios : Como calcular o bounding box Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Unity
  • Java
  • C#
  • Javascript


http://www.mathaeuz.deviantart.com

Ir para o topo Ir para baixo

Como calcular o bounding box Empty Re: Como calcular o bounding box

Mensagem por Jiraya Dom 15 Abr 2012, 00:20

obrigado!
bom eu acho que eu deveria ter exclarecido.

eu gostaria de calcular manualmente.

pq assim eu poderia usar numa dll a formula.
Jiraya
Jiraya

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 20/03/2010
Reputação : 108
Número de Mensagens : 1134
Prêmios : Como calcular o bounding box Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.facebook.com/seito.washiro.7

Ir para o topo Ir para baixo

Como calcular o bounding box Empty Re: Como calcular o bounding box

Mensagem por PedroX Dom 15 Abr 2012, 00:22

Pelo que lembro, as variáveis são:

bbox_left
bbox_top
bbox_right
bbox_bottom

Elas te darão o valor absoluto.
Ou seja, você não deve somar o x ou o y.
Ele te dará a posição que a bbox está em relação ao ponto 0 da room.

Edit: agora que o MatheusReis disse, fiquei em dúvida.

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6086
Prêmios : Como calcular o bounding box Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

Como calcular o bounding box Empty Re: Como calcular o bounding box

Mensagem por MatheusReis Dom 15 Abr 2012, 00:28

Daí você precisaria ter um modo de verificar pixel por pixel da sprite.
As bounding boxes da esquerda e do topo seriam as menores posições de pixels com alpha acima de 0 (ou da tolerância que você estabelece), e as da direita e inferior seriam as maiores.
Assim se formaria uma caixa englobando tudo 'visível' na sprite, e portanto suscetível à colisão. Se for aplicar ao 3d... é ver esses valores com os vertexes.
MatheusReis
MatheusReis

Games Ranking : Nota A

Notas recebidas : B-A-A
Data de inscrição : 13/01/2010
Reputação : 31
Número de Mensagens : 1093
Prêmios : Como calcular o bounding box Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Unity
  • Java
  • C#
  • Javascript


http://www.mathaeuz.deviantart.com

Ir para o topo Ir para baixo

Como calcular o bounding box Empty Re: Como calcular o bounding box

Mensagem por Jiraya Dom 15 Abr 2012, 00:30

não existe uma solução matematica mais rapida ?
verificar pixel por pixel consumiria quase todo processo do jogo.
Jiraya
Jiraya

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 20/03/2010
Reputação : 108
Número de Mensagens : 1134
Prêmios : Como calcular o bounding box Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.facebook.com/seito.washiro.7

Ir para o topo Ir para baixo

Como calcular o bounding box Empty Re: Como calcular o bounding box

Mensagem por MatheusReis Dom 15 Abr 2012, 00:32

Ao exemplo do GameMaker, essas bounding boxes são calculadas no momento que as sprites são importadas, e então memorizadas em variáveis. Assim no decorrer do jogo basta verificá-las. Mas não duvido que haja um método mais rápido... apenas desconheço.
MatheusReis
MatheusReis

Games Ranking : Nota A

Notas recebidas : B-A-A
Data de inscrição : 13/01/2010
Reputação : 31
Número de Mensagens : 1093
Prêmios : Como calcular o bounding box Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Unity
  • Java
  • C#
  • Javascript


http://www.mathaeuz.deviantart.com

Ir para o topo Ir para baixo

Como calcular o bounding box Empty Re: Como calcular o bounding box

Mensagem por Jiraya Dom 15 Abr 2012, 00:48

sim, mas esse bounding box do qual vc esta se referindo é o da sprite, este é uma constante.

o qual eu preciso é variavel de acordo com o angulo
Como calcular o bounding box BoundingBox
Jiraya
Jiraya

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 20/03/2010
Reputação : 108
Número de Mensagens : 1134
Prêmios : Como calcular o bounding box Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.facebook.com/seito.washiro.7

Ir para o topo Ir para baixo

Como calcular o bounding box Empty Re: Como calcular o bounding box

Mensagem por Kabeção Dom 15 Abr 2012, 11:38

Acho que se pode usar o teorema de Pitágoras pra isso.
Como calcular o bounding box Pythagorean_proof
http://pt.wikipedia.org/wiki/Teorema_de_Pit%C3%A1goras

Ou talves calculando a area dos triangulos (sendo que um retangulo são dois triangulos).

Mas essas variáveis bbox não são constantes, essas são recalculadas quando quando alteramos image_x/yscale ou image_angle, além disso elas são relativas a posição do objeto.
Se não for para algo externo como a dll que disse, da pra fazer isso só com as bbox dentro do gm mesmo.
Teste
Código:
image_angle += 1;
draw_rectangle(bbox_left,bbox_top,bbox_right,bbox_bottom,0)
draw_sprite_ext(....);
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : Como calcular o bounding box Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

Como calcular o bounding box Empty Re: Como calcular o bounding box

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos