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


Parede isométrica transparência (Resolvido)

5 participantes

Página 1 de 2 1, 2  Seguinte

Ir para baixo

Parede isométrica transparência (Resolvido) Empty Parede isométrica transparência (Resolvido)

Mensagem por generalzero Sáb 24 maio 2014, 22:12

Como eu poderia deixar uma parede isométrica transparente quando o player passar por trás dela?

Obrigado pela ajuda.


Última edição por generalzero em Qua 28 maio 2014, 22:26, editado 2 vez(es)
generalzero
generalzero

Data de inscrição : 24/05/2014
Reputação : 1
Número de Mensagens : 9
Prêmios : Parede isométrica transparência (Resolvido) 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por Zero. Sáb 24 maio 2014, 22:29

mude a image_alpha do objeto isometrico qndo o jogador passar por ela
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Parede isométrica transparência (Resolvido) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por generalzero Sáb 24 maio 2014, 22:32

E como eu sei que o player passou pelo objeto?
E como muda o alpha da imagem pelo código?
generalzero
generalzero

Data de inscrição : 24/05/2014
Reputação : 1
Número de Mensagens : 9
Prêmios : Parede isométrica transparência (Resolvido) 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por MissingNo Sáb 24 maio 2014, 22:39

Código:
if place_meeting(x,y,obj_player) then image_alpha=0.4 else image_alpha=1

é só por isso no step da parede amigo  flw
MissingNo
MissingNo

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 03/06/2013
Reputação : 22
Número de Mensagens : 134
Prêmios : Parede isométrica transparência (Resolvido) 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
Plataformas :
  • Game Maker 8.0 ou 8.1
  • RPG Maker


Ir para o topo Ir para baixo

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por Zero. Sáb 24 maio 2014, 22:57

O place_meeting checa se o objeto está colidindo com o outro objeto (definido na função), nas posições x e y, que neste caso é toda a mascara de colisão do objeto (a imagem do objeto). image_alpha é a opacidade da imagem que vai de 0 a 1.
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Parede isométrica transparência (Resolvido) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por generalzero Dom 25 maio 2014, 00:14

A pergunta que fica é:
Como é um objeto isométrico, a máscara de colisão está só na base da parede.
Testei agora e não deu certo.

Será que é porque o place_meeting testa a colisão pela máscara?
generalzero
generalzero

Data de inscrição : 24/05/2014
Reputação : 1
Número de Mensagens : 9
Prêmios : Parede isométrica transparência (Resolvido) 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por Gabreel Dom 25 maio 2014, 00:25

Sim, mas você pode deixar a máscara de colisão com o formato da parede se isso não for atrapalhar suas colisões!
Gabreel
Gabreel

Data de inscrição : 02/10/2009
Reputação : 52
Número de Mensagens : 2232
Prêmios : Parede isométrica transparência (Resolvido) 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
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • Outros


Ir para o topo Ir para baixo

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por generalzero Dom 25 maio 2014, 00:35

Se eu botar a máscara de colisão em todo o objeto então não seria mais um objeto isométrico, não?

Parede:
Parede isométrica transparência (Resolvido) Spr_wall

Máscara da parede:
Parede isométrica transparência (Resolvido) Msk_wall
generalzero
generalzero

Data de inscrição : 24/05/2014
Reputação : 1
Número de Mensagens : 9
Prêmios : Parede isométrica transparência (Resolvido) 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por Convidado Dom 25 maio 2014, 00:57

Não é a forma mais técnica, mas se você comparar a posição x e y do personagem com a da parede em um evento do tipo Step, pode deduzir se ele está atrás dela ou não.

Desse modo não importa o tipo de máscara ou colisão, já que será apenas uma leitura de coordenadas.
avatar
Convidado
Convidado


Ir para o topo Ir para baixo

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por Zero. Dom 25 maio 2014, 09:49

vc pode por um obj com a mascara da parede mna posição da parede.
vc cria um obj_mascara no create e vinvula este obj criado a pare e neste obj_mascara vc põe o código de place_meeting e muda o image_alpha do obj que criou o obj_mascara. é um caminho.
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Parede isométrica transparência (Resolvido) Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por Kabeção Dom 25 maio 2014, 09:54

O código executa de acordo com o que está definido até aquela linha.
Você pode mudar a mascara em um linha e voltar para a normal depois, por exemplo:

Código:
var temp_mask;
temp_mask = mask_index;

mask_index = -1; // remover mascara e usar a sprite do objeto para colisão

if place_meeting....

mask_index = temp_mask;
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 : Parede isométrica transparência (Resolvido) 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por generalzero Dom 25 maio 2014, 15:16

Não deu muito certo.
Os códigos da parede estão assim:

CREATE:
depth=-x-y

var temp_mask;
temp_mask = mask_index;

mask_index = -1;

if place_meeting(x,y,obj_player) then image_alpha=0.4 else image_alpha=1;

mask_index = temp_mask;

Bom, as imagens acima são as imagens que eu uso para a parede e para a máscara.

Isso é o que eu gostaria de fazer:
Parede isométrica transparência (Resolvido) History_board
generalzero
generalzero

Data de inscrição : 24/05/2014
Reputação : 1
Número de Mensagens : 9
Prêmios : Parede isométrica transparência (Resolvido) 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por generalzero Seg 26 maio 2014, 13:35

Galera, tive avanços.
Após consultas alterei algumas linhas.

1) Alterei a máscara do sprite da parede para assumir como sendo toda a parede.
2) Ao invés de colocar o código no objeto da parede, eu coloquei o código dentro do sprite do player, ficando assim:

Código:
if keyboard_check(vk_right) {x+=8}
if keyboard_check(vk_left) {x-=8}
if keyboard_check(vk_down) {y+=8}
if keyboard_check(vk_up) {y-=8}

var temp_mask;
temp_mask = mask_index;

mask_index = -1;

if place_meeting(x,y,obj_wall) then obj_wall.image_alpha=0.4 else obj_wall.image_alpha=1;

mask_index = temp_mask;

Não checo colisão porque eu verifico isso no place_meeting.


E o resultado foi este:
Parede isométrica transparência (Resolvido) Spr_image_alpha

Muito próximo do que eu queria.
Como podem ver, a bolinha azul simboliza o player, que ao passar por traz da parede, ela ganha transparência.
Mas, ainda tenho algumas ressalvas:

1) Como é um objeto isométrico, a colisão dele teria que se dar apenas na área vermelha ilustrada na base do sprite. Os outros pontos de colisão teoricamente não existem pois ele não está colidindo com a parede, mas passando por ela. De repente será que não tem como colocar duas máscaras no mesmo objeto? Dai tem uma máscara de colisão e outra apenas para verificar se o player está atrás da parede. O correto é que o game veja isso:
Parede isométrica transparência (Resolvido) Spr_image_alpha_colision

2) Eu consegui colocar alpha em todos os sprites que tem wall. Funciona em partes, mas eu gostaria que fosse apenas na parede que o player está.

3) Como deu alpha em todo algumas paredes ficaram "acavaladas". Existe algum ajuste fino para que eu possa colocar uma parede do lado da outra sem que elas fiquem sobrepostas?
generalzero
generalzero

Data de inscrição : 24/05/2014
Reputação : 1
Número de Mensagens : 9
Prêmios : Parede isométrica transparência (Resolvido) 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por Convidado Seg 26 maio 2014, 14:08

Quanto à 2° e 3° questões:

- Para afetar apenas a instância da parede em que o personagem está, aplique o código de transparência para o id específico desta instância. Pesquise sobre id no help do programa;

- Quando você aplica alpha em 2 ou mais objetos sobrepostos é normal que a sobreposição contenha uma opacidade maior, afinal são 2 camadas que estão ali. Você pode contornar isso usando paredes intermediárias semelhantes à isto:
Parede isométrica transparência (Resolvido) Ezimba19565171103304
avatar
Convidado
Convidado


Ir para o topo Ir para baixo

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por Kabeção Ter 27 maio 2014, 12:29

Como já disse, mude a mascara no momento antes de testar a colisão e você pode usar milhares de máscaras diferentes até no mesmo script.

Tem algum outro motivo para não ter funcionado.
Tente também mask_index = sprite_index.
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 : Parede isométrica transparência (Resolvido) 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por generalzero Qua 28 maio 2014, 13:31

E ai galera, como estão?
Bom, depois das dicas valiosas tive muitos avanços.
Obrigado a todos!

Em resumo:
1) Apesar da experiência de sumir com todas as paredes ser bem interessante eu acabei descobrindo o que estava fazendo de errado. Me desculpem, é que sou muito iniciante no game maker, mas eu tinha colocado o código do alpha no create do obj, e no no step. Ajustando isso o efeito foi bem o que eu procurava:
Parede isométrica transparência (Resolvido) Spr_image_alpha_correct

2) Como podem observar, depois da dica do @scratchware_dev e alguns ajustes finos, consegui deixar o efeito o alpha bem mais bonito, sem as sobreposições de imagens. Usei como obj_wall padrão a imagem da parede recortada e criei um obj_wall_canto para fazer o acabamento, e ficou bem legal.

3) Em relação ao mapeamento da imagem, me desculpem, mas não consegui fazer entrar na minha cabeça as explicações acima. Atualmente a máscara dos objetos está como todo o sprite. Isso funciona para fazer o efeito de transparência. Mas como eu faria para ele se comportar como na imagem abaixo e manter o place_meeting da transparência?
Parede isométrica transparência (Resolvido) Spr_image_alpha_colision
generalzero
generalzero

Data de inscrição : 24/05/2014
Reputação : 1
Número de Mensagens : 9
Prêmios : Parede isométrica transparência (Resolvido) 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por Convidado Qua 28 maio 2014, 17:21

General, como o Kabeção lhe disse no outro post, você pode trabalhar a máscara do objeto independentemente para cada ação que for executar.

Não importa que na linha anterior do seu código a máscara atribuída ao objeto parede era a própria sprite, você pode simplesmente fazer isto:

Código:
mask_index = máscara de checagem de transparência;
< ações de checagem de transparência aqui >
mask_index = máscara de colisão;
< ações de colisão aqui >

Compreende o conceito? Você pode alterar uma definição do objeto SOMENTE para a ação seguinte e então RETORNAR ela pra condição original na linha posterior.
avatar
Convidado
Convidado


Ir para o topo Ir para baixo

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por generalzero Qua 28 maio 2014, 21:30

Pessoal, após a grande ajuda de vocês todos consegui chegar o ponto que desejava.
Ficou muito legal.
Então apenas para deixar registrado aqui para quem mais tiver dúvidas o procedimento que eu fiz foi o seguinte.

1) Criei um sprite vazado chamado spr_wall com as seguintes configurações:
- Precise collision checking
- Separate collision masks
[Modify Mask:]
- Bounding box: Automatic
- Shape: Precise
[Sprite] 
Parede isométrica transparência (Resolvido) Ezimba19565171103304

2) Criei um sprite com o canto da parede chamado spr_wall_canto com as mesmas configurações, mudando apenas a imagem do sprite:
- Precise collision checking
- Separate collision masks
[Modify Mask:]
- Bounding box: Automatic
- Shape: Precise
[Sprite] 
Parede isométrica transparência (Resolvido) Spr_wall

3) Criei um sprite chamado msk_wall com as seguintes configurações:
- Precise collision checking
[Modify Mask:]
- Bounding box: Automatic
- Shape: Precise
[Sprite] 
Parede isométrica transparência (Resolvido) Msk_wall

4) Criei um objeto chamado obj_wall com as seguintes configurações:
- Solid
- Sprite: spr_wall
- Mask: msk_wall
[Create]
Código:
depth=-x-y

[Step]
Código:
var temp_mask;
temp_mask = mask_index;

mask_index = -1;

if place_meeting(x,y,obj_player) then image_alpha=0.4 else image_alpha=1;

mask_index = temp_mask;


5) Criei um objeto chamado obj_wall_canto com as seguintes configurações:
- Solid
- Sprite: spr_wall_canto
- Mask: msk_wall
[Create]
Código:
depth=-x-y

[Step]
Código:
var temp_mask;
temp_mask = mask_index;

mask_index = -1;

if place_meeting(x,y,obj_player) then image_alpha=0.4 else image_alpha=1;

mask_index = temp_mask;


6) Criei um objeto chamado obj_player com as seguintes configurações:
- Sprite: spr_player
- Mask: same as sprite
[Step]
Código:
if keyboard_check(vk_right) && place_free(x+8,y) {x+=8}
if keyboard_check(vk_left) && place_free(x-8,y) {x-=8}
if keyboard_check(vk_up) && place_free(x,y-8) {y-=8}
if keyboard_check(vk_down) && place_free(x,y+8) {y+=8}


Agora só criar a room e adicionar os elementos. Tudo funcionando.

Então pra finalizar, ficou só duas perguntas:
1) Existe algum ajuste fino para colocar elementos na room? Achei aquele grid do game maker um tanto quanto grande. Ele me obrigou a cortar uma boa parte da imagem pra poder montar a parede. Se fosse menor, tipo, pixel por pixel, seria melhor.

2) Como eu trabalho com HTML, CSS e Javascript, no front-end da pra setar classes e IDs para os elementos. Eu posso dizer que eu quero UM elemento com o ID x e posso também pegar todos os elementos que possuem a classe y. Tem como fazer isso no game maker? Pergunto isso porque no efeito de alpha da parede ele da um place_meeting passando o nome do player. Imagina se eu tiver 200 players, vai ser uma confusão. Então se eu disser pra ele que todos os elementos que possuírem tal classe ele deve executar esta função. 

É possível?

Abraços!
generalzero
generalzero

Data de inscrição : 24/05/2014
Reputação : 1
Número de Mensagens : 9
Prêmios : Parede isométrica transparência (Resolvido) 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por Convidado Qua 28 maio 2014, 21:34

1) Você pode ajustar o "tamanho" do grid. Há dois campos com o valor pros espaçamentos em x e y no editor de rooms (na parte superior).

2) Pesquise sobre objetos "parent" no Game Maker.
avatar
Convidado
Convidado


Ir para o topo Ir para baixo

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por generalzero Qua 28 maio 2014, 21:40

Obrigado galera por tudo.
Como eu faço pra dar como resolvido este tópico?
generalzero
generalzero

Data de inscrição : 24/05/2014
Reputação : 1
Número de Mensagens : 9
Prêmios : Parede isométrica transparência (Resolvido) 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

Parede isométrica transparência (Resolvido) Empty Re: Parede isométrica transparência (Resolvido)

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Página 1 de 2 1, 2  Seguinte

Ir para o topo

- Tópicos semelhantes

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