[Trancado] Como verificar objeto de outro objeto?

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

Resolvido [Trancado] Como verificar objeto de outro objeto?

Mensagem por iSillum em Sex 25 Jan 2013, 23:44

Tenho um objeto porta e um objeto jogador, queria a partir do objeto porta saber se o objeto jogador pressionou uma tecla (no caso UP), como eu faço?

Tenho o obj_jogador, e no obj_porta coloque no step assim:

Código:
image_speed=0
image_index=0
if with(obj_jogador) keyboard_check(vk_up){
    with(obj_porta)
    image_speed=1 //sprite da porta abrindo
}

(jogo em plataforma)
Quando o jogador fica em frente a porta, se ele pressionar UP executa a animação da porta se abrindo.

Eu sei que isso não funciona, mas é só pra vocês entenderem o que eu queria.


Última edição por iSillum em Sab 26 Jan 2013, 13:33, editado 1 vez(es)

iSillum

Número de Mensagens : 72
Data de inscrição : 22/01/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Trancado] Como verificar objeto de outro objeto?

Mensagem por Thyago em Sex 25 Jan 2013, 23:55

.keyboard_check é global,não precisa de with basta verificar se a tecla foi pressionada.

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

Resolvido Re: [Trancado] Como verificar objeto de outro objeto?

Mensagem por Super Maker em Sab 26 Jan 2013, 01:00

Podes checar a clolisão a partir do player usando esse bloco:
Código:
if keyboard_check(vk_up){
    with(other) {
        //animação da porta aqui
    }
}
Ou a partir da porta com esse:
Código:
if keyboard_check(vk_up){
        //animação da porta aqui
}
Eu particularmente usaria um keyboard_check_pressed(vk_up) pra animação dos dois tomar conta do momento.

Super Maker

Número de Mensagens : 646
Idade : 33
Data de inscrição : 09/07/2011
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Trancado] Como verificar objeto de outro objeto?

Mensagem por NPH em Sab 26 Jan 2013, 09:56

Ei iSillum, eu fiz um jogo meio "sem noção" que utilizava portas automáticas!
Se quer fazer isso em seu jogo, eu posso te ensinar agora!
CREATE EVENT
Código:

image_speed=0; //desativa a animacao
porta_aberta=false;//indica se a porta esta aberta ou nao
No STEP EVENT
Código:

//checa se o jogador esta a 5 pixels de distancia da porta:
if (distance_to_object(obj_jogador)<5){ porta_aberta=true;}//se sim, abrir a porta
else if (distance_to_object(obj_jogador)>4){porta_aberta=false;}//se nao, fechar a porta
Fazendo isso você já tem a porta programada para abrir assim que você chegar perto dela e fechar se você se afastar.
Mas ainda faltou um detalhe: Como a porta irá se abrir se image_speed for 0?
Ainda no Step coloque:
Código:

//se a porta estiver aberta, animar o sprite
if (porta_aberta=true)and(image_index<image_number-1){image_speed=0.3;}
//Se a porta estiver fechada, animar o sprite de forma reversa
else if (porta_aberta=false)and(image_index>0){image_speed=-0.3;}
Fazendo isso, você não terá que apertar uma tecla para que a porta se abra, mas se você quer apertar uma tecla (no seu caso VK_UP), então troque a primeira parte do step por este outro:
STEP EVENT
Código:

//checa se o jogador esta a 5 pixels de distancia da porta e se pressionou a tecla UP:
if (distance_to_object(obj_jogador)<5)and(keyboard_check_pressed(vk_up))
{porta_aberta=true;}
//checa se o jogador esta a mais de 9 pixels de distancia da porta para fecha-la:
else if (distance_to_object(obj_jogador)>9){porta_aberta=false;}
Fazendo isso, a sua porta irá abrir somente se você apertar a tecla UP, e se fechará sozinha ao se afastar dela!
Esperto ter te ajudado!
[edit]
Se tiver algum bug com a animação me avisa!

NPH

Ranking : Nota B
Número de Mensagens : 452
Idade : 22
Data de inscrição : 28/11/2010
Notas recebidas : B
Reputação : 32
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Trancado] Como verificar objeto de outro objeto?

Mensagem por iSillum em Sab 26 Jan 2013, 13:29

Pessoal, lendo a resposta de cada um, e dando uma boa pesquisada e quebrando a cabeça cheguei a um código do qual estou muito satisfeito:

Declarei essas vareias no obj_porta no evento create

Código:
//variaveis auxiliares
entrando=false
global.dentrodaporta=false
saindo=false

Coloquei isso no obj_porta o evento step

Código:
//deixa o sprite da porta fechada
image_speed=0

//para saber se quer entrar na porta
if place_meeting(x,y,obj_jogador){//muda a variavel somente se estiver na porta
    if keyboard_check(vk_up) and global.dentrodaporta==false{//muda a variavel se estiver na porta e apertar UP
        entrando=true
    }
}

//executa animaçao da porta abrindo para entrar
if entrando==true{
    if(image_index<29){image_speed=1}
}

//entra quando a porta estiver aberta (no frame 14)
if image_index==14 and entrando==true{
    with(obj_jogador){depth=1}
    global.dentrodaporta=true//para ativar outras funçoes do jogo...

}



//para saber se quer sair da porta
if place_meeting(x,y,obj_jogador){//muda a variavel somente se estiver na porta
    if keyboard_check(vk_down) and global.dentrodaporta==true{//muda a variavel se estiver na porta e apertar DOWN
        saindo=true
    }
}

//animacao da porta abrindo para sair
if saindo==true{
    if(image_index<29){image_speed=1}
}

//para o jogador fica visivel novamente
if image_index==14 and saindo==true{
    with(obj_jogador){depth=-1}
    global.dentrodaporta=false//para ativar outras funçoes do jogo...
}

//muda a variavel quando o jogador estiver "dentro" ou "fora" da porta
if image_index==29{
    image_index=0
    entrando=false
    saindo=false
}



E coloquei pro jogador não se mover enquanto estiver na porta isso(no objeto jogador):

Código:
if keyboard_check(vk_right) and global.dentrodaporta==false /*nao se mover se estiver na porta*/{codigo}
if keyboard_check(vk_left) and global.dentrodaporta==false /*nao se mover se estiver na porta*/{codigo}

Obrigado todo mundo que respondeu, tópico resolvido!

iSillum

Número de Mensagens : 72
Data de inscrição : 22/01/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Trancado] Como verificar objeto de outro objeto?

Mensagem por Conteúdo patrocinado Hoje à(s) 04:02


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