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.
@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.
)
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.
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.
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