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
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

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

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

» 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


[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


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