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
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


[Resolvido]Objeto pode ser visto dependendo do angulo?

4 participantes

Ir para baixo

[Resolvido]Objeto pode ser visto dependendo do angulo? Empty [Resolvido]Objeto pode ser visto dependendo do angulo?

Mensagem por gabrielsch Qui 16 Ago 2012, 00:15

O titulo ja diz praticamente tudo, sei que há perguntas parecidas mas nunca nenhuma consegui responder o que eu queria, para demonstrar o que eu quero vou mostrar essa imagem:

[Resolvido]Objeto pode ser visto dependendo do angulo? Radius_likeaboss
Verde = Pode ser visto;
Vermelho = Não pode ser visto;

O objetivo seria verificar se o objeto pode ser visto dependo do angulo de visão do personagem, ja consegui fazer com uma linha reta mas nunca com o fator do angulo.
Alguém pode me ajudar com essa duvida?

Flw! sorrindo2


Última edição por gabrielsch em Qui 16 Ago 2012, 13:52, editado 1 vez(es)
gabrielsch
gabrielsch

Games Ranking : Nota A

Notas recebidas : D + A + A
Data de inscrição : 06/12/2009
Reputação : 28
Número de Mensagens : 1230
Prêmios : [Resolvido]Objeto pode ser visto dependendo do angulo? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 2 Bronze x 0

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

Ir para o topo Ir para baixo

[Resolvido]Objeto pode ser visto dependendo do angulo? Empty Re: [Resolvido]Objeto pode ser visto dependendo do angulo?

Mensagem por Jiraya Qui 16 Ago 2012, 00:27

tente isso
use no objeto que vai ser visto no raio de visão
Código:

dir=point_direction(OBJ_VISAO.x,OBJ_VISAO.y,x,y);
ANGLE_DIFF=abs(((((OBJ_VISAO.direction-dir)mod 360)+540)mod 360)-180);//diferença dos angulos

if(ANGLE_DIFF<45)
{
//então o objeto é visivel
}
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 : [Resolvido]Objeto pode ser visto dependendo do angulo? 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

[Resolvido]Objeto pode ser visto dependendo do angulo? Empty Re: [Resolvido]Objeto pode ser visto dependendo do angulo?

Mensagem por saim Qui 16 Ago 2012, 08:52

Genial, Jiraya! Eu conhecia esse código de ANGLE_DIFF, mas jamais pensaria em usar ele nessa situação. Pra limitar a área de visão, basta adicionar um "and point_distance < limite".
Até VER o código sendo usado, eu pensaria em usar um objeto com uma sprite, como o foco de uma lanterna, pra servir de teste de colisão. O objeto-lanterna seguiria o objeto-visão (através de códigos no próprio objeto-visão) e teria eventos de colisão pra visibilidade.

Em ambos os casos, paredes são um problema, pois nenhuma das alternativas leva elas em conta. Acredito que um collision_line resolva isso.
Código:
SE (é visível por qualquer meio acima){
  SE (a collision_line retornou noone){
    // aí é visível mesmo
    }
    ELSE {
      SE (a collision_line retornou uma parede){
          // aí é invisível
          }
  }
Mas e se a collision_line não retornar nem noone nem uma parede? Bom, aí depende do que ela retorna. Se retorna algo que bloqueie a visão, como uma caixa grande ou uma porta, permanece invisível, se retornar uma janela ou um fantasma, fica visível. Pra reduzir o número de if-else's ou or's, eu usaria parents (criaria um objeto "bloqueia-visão" e faria todos os objetos do jogo serem ou não serem childs dele).
Ainda tem o problema de visualizar um pedacinho do objeto mas, como a origem do objeto fica no centro, a collision_line retornar um objeto-bloqueia-visão. Mas isso já requer uma aproximação alternativa, mais elaborada (leia: "consome mais memória"), ao problema. Podemos ir a fundo, se for necessário.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Resolvido]Objeto pode ser visto dependendo do angulo? Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[Resolvido]Objeto pode ser visto dependendo do angulo? Empty Nossa

Mensagem por God_of_war425 Qui 16 Ago 2012, 10:56

Parece que vocês gostam do geito mais dificl,não é mais facil você criar uma sprite por para elá seguir o image angle deste objto,e fazer comque se o player encostar nela siguinifica que ele está vendo,e bem mais facil e pratico não é nessesario este metodo complicado,mais se que sabe todo mundo iguinora minha resposta mesmo =(.flw
God_of_war425
God_of_war425

Data de inscrição : 29/10/2011
Reputação : 4
Número de Mensagens : 510
Prêmios : [Resolvido]Objeto pode ser visto dependendo do angulo? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

[Resolvido]Objeto pode ser visto dependendo do angulo? Empty Re: [Resolvido]Objeto pode ser visto dependendo do angulo?

Mensagem por saim Qui 16 Ago 2012, 11:38

God_of_war425 escreveu:mais se que sabe todo mundo iguinora minha resposta mesmo =(.flw
É que ela já foi comentada. Se você observar o segundo parágrafo de meu post anterior, é exatamente o que eu faria ANTES de ver a sugestão do Jiraya. Os parágrafos seguintes são a respeito do problema dessa idéia (e da outra também).

Mas "mais fácil" nem sempre significa "melhor".
O código do ANGLE_DIFF usa um bocado de operações de mod, o que é lento de ser calculado, enquanto não usa uma única sprite sequer - o que reduz um pouco o tamanho do arquivo.
E ele tem a vantagem de te dar a resposta instantaneamente. Usar um outro objeto e um evento de colisão pode fazer com que a resposta chegue um step atrasado (nem sempre isso acontece, é só um risco que existe). Não que um step de atraso costume influenciar no gameplay - acontece, mas é uma raridade.

Agora, tenha um mente um detalhe importante: deve-se usar um OBJETO, não uma SPRITE pra isso. Uma sprite não te retorna nada, não tem eventos de colisão, não sabe o que é place_meeting. Sprites servem pra ser desenhadas na tela, mais nada. Objetos, sim, tendo uma mask (que pode ser igual à sprite), podem definir se, naquela posição e naquele image_angle eles estarão colidindo ou não com outros objetos.
Infelizmente, não existe como fazer essa verificação com uma sprite diferente daquela usada pelo objeto.
A não ser literalmente mudando a sprite_index e depois voltando pra sprite_index anterior. Mas aí, você vai estar comendo uma quantidade ainda maior (e desnecessária) de memória.

Enfim, o que realmente importa é pesar as duas soluções na balança. O que é mais caro: tamanho do arquivo ou velocidade de processamento? Qual solução é mais RÁPIDA?
Eu não tenho as respostas pra essas perguntas e, no final das contas, acho que faria pouca diferença.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Resolvido]Objeto pode ser visto dependendo do angulo? Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[Resolvido]Objeto pode ser visto dependendo do angulo? Empty Re: [Resolvido]Objeto pode ser visto dependendo do angulo?

Mensagem por gabrielsch Qui 16 Ago 2012, 13:51

Jiraya escreveu:tente isso
use no objeto que vai ser visto no raio de visão
Código:

dir=point_direction(OBJ_VISAO.x,OBJ_VISAO.y,x,y);
ANGLE_DIFF=abs(((((OBJ_VISAO.direction-dir)mod 360)+540)mod 360)-180);//diferença dos angulos

if(ANGLE_DIFF<45)
{
//então o objeto é visivel
}

Dei uma estuda no código e consegui fazer o que eu queria, ja imaginava que teria que usar o mod.
Com certeza você vai estar nos créditos, muito obrigado.

God_of_war425 escreveu:Parece que vocês gostam do geito mais dificl,não é mais facil você criar uma sprite por para elá seguir o image angle deste objto,e fazer comque se o player encostar nela siguinifica que ele está vendo,e bem mais facil e pratico não é nessesario este metodo complicado,mais se que sabe todo mundo iguinora minha resposta mesmo =(.flw

No caso do meu jogo a visão do mapa é MUITO grande e por isso é inviável usar uma sprite muito grande para verificar isso, alias, ja tentei isso em outro jogo e não deu certo.
Mesmo assim foi uma tentativa.

Tópico Resolvido!

Flw! sorrindo2
gabrielsch
gabrielsch

Games Ranking : Nota A

Notas recebidas : D + A + A
Data de inscrição : 06/12/2009
Reputação : 28
Número de Mensagens : 1230
Prêmios : [Resolvido]Objeto pode ser visto dependendo do angulo? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 2 Bronze x 0

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

Ir para o topo Ir para baixo

[Resolvido]Objeto pode ser visto dependendo do angulo? Empty Re: [Resolvido]Objeto pode ser visto dependendo do angulo?

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