Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

Evento de colisão não funcionou direito

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
katisuke
Novato
Novato
Reações: 0
Mensagens: 13

Evento de colisão não funcionou direito

Mensagem por katisuke » Seg Abr 17, 2017 4:02 pm

No meu jogo, tem o objeto espinhos, se o personagem tocar neles a vida do player vai a 0 e ele morre, ate ai tudo bem, porem, se eu pular de uma altura muito grande
o efeito de colisão não funciona da maneira esperada, e o personagem fica dentro do espinho sem levar dano.

Ate mesmo, se eu tiver no solo, e tiver uma rampa, e eu desça a rampa e entre nos espinhos, não acontece nada, o espinho so funciona quando eu caio sobre ele
de uma altura razoável.
Aqui está o codigo q eu usei para o player levar dano. Esse codigo ta no evento collision com o player do espinho.

Código: Selecionar todos

///Damage the entity!
if (other.can_damage)
if (other.vsp > 0)
{
    yy = other.bbox_bottom-other.y;
    if (other.yprevious+yy < mid_y())
    {
        other.take_damage += 10;
        other.vsp = -2.5;
    }
}


Avatar do usuário
Adilson
Membro
Membro
Reações: 0
Mensagens: 114
Localização: Curitiba Parana

Re: Evento de colisão não funcionou direito

Mensagem por Adilson » Seg Abr 17, 2017 5:18 pm

Tire o solid dos espinhos
Vlw, Flw !!

Avatar do usuário
katisuke
Novato
Novato
Reações: 0
Mensagens: 13

Re: Evento de colisão não funcionou direito

Mensagem por katisuke » Ter Abr 18, 2017 9:51 pm

O solid dele ja está desativado
Editado pela última vez por katisuke em Ter Abr 18, 2017 9:53 pm, em um total de 2 vezes.

Avatar do usuário
Lolando
Novato
Novato
Reações: 0
Mensagens: 19

Re: Evento de colisão não funcionou direito

Mensagem por Lolando » Qua Abr 19, 2017 4:15 am

Você não precisa fazer o player tomar dano quando cair nos espinhos, coloca para quando ele tocar os espinhos

Avatar do usuário
Adilson
Membro
Membro
Reações: 0
Mensagens: 114
Localização: Curitiba Parana

Re: Evento de colisão não funcionou direito

Mensagem por Adilson » Qua Abr 19, 2017 12:34 pm

Você mostra uma var "bbox_bottom" que não tem como saber o valor, um script que não sabemos....Como podemos ajudar?
Sem contar que você parece estar sendo ilógico, primeiro retira o jogador da posição, de depois verifica se ele esta lá

Recomendo que estude mais, começe com tutoriais basicos.
Vlw, Flw !!

Avatar do usuário
Superbomber
Programador
Programador
Reações: 0
Mensagens: 283
Localização: Natal-RN

Re: Evento de colisão não funcionou direito

Mensagem por Superbomber » Qui Abr 20, 2017 6:44 pm

Adilson escreveu:Você mostra uma var "bbox_bottom" que não tem como saber o valor, um script que não sabemos....Como podemos ajudar?
Sem contar que você parece estar sendo ilógico, primeiro retira o jogador da posição, de depois verifica se ele esta lá

Recomendo que estude mais, começe com tutoriais basicos.
Cara, o próprio nome da variável diz o que é > bbox_bottom

"Sem contar que você parece estar sendo ilógico, primeiro retira o jogador da posição, de depois verifica se ele esta lá"
Ele não retira o jogador da posição. :detetive:

@katisuke

Cara isso é um problema muito básico e fácil de resolver. (qualquer programador com experiência razoável resolve isso fácil, não entendi porque ninguém respondeu ainda. :hmm: )

Primeiro que você verifica a velocidade vertical do player(other.vsp), por isso não dá colisão quando ele ta andando. (na rampa como você disse)
Segundo, você faz aquele calculo embolado para ver se o player estava acima do meio do espinho. (o espinho só machuca por cima, certo?)
Por isso quando o player cai de um lugar baixo ele deve "travar" com o evento de colisão antes de alcançar o centro, já que está lento.

Dito os erros, vou dar uma recomendação:
Nunca use o evento de colisão, é ruim pakas. :yes:

Eu poderia dar um código de exemplo, mas o ideal seria você mudar muita coisa.
E se for pra exemplificar de forma que funcione como você fez o game... Bem, eu não sei como você fez o game. :shrug:

Mas eu vou lhe dar o seu mesmo código com umas melhorias:

Código: Selecionar todos

/// This is Sparta!
if(other.can_damage && other.bbox_bottom < y+(sprite_height/2)){
   other.take_damage += 10;
   other.vsp = -2.5;
}
Isso é só pra lhe dar uma luz. Você já conhece os erros, avante a corrigi-los! :D
Entrem neste link com o JavaScript desabilitado e vejam a mágica: https://tgmbrasil.com.br/?PageSpeed=n0script

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes