Página 1 de 1

Ajuda player e inimigo

Enviado: Sex Out 21, 2016 5:47 pm
por DVictor
Seguinte, eu to com um pequeno problemitcha aqui:
 sempre que o player pula no inimigo, o inimigo morre, e quando o player encosta no inimigo, ele fica piscando e não pode tomar dano nesse tempo que ele pisca

SÓ QUE

eu queria que além do player piscar, ele desse um dashzinho pra traz. Como acontece no SONIC por exemplo, ou no MEGAMAN (tipo alternar uma sprite indicando que ele tomou dano e ele dar o dash pra traz)
Eu to usando isso aqui na colisão do player com o inimigo

Código: Selecionar todos

if piscando = false and noar=false {
global.saude -= 1
piscando = true
alarm[0] = 120 //tempo pro player parar de piscar
}

Ajudem-me se possível ;-;

Re: Ajuda player e inimigo

Enviado: Sex Out 21, 2016 5:54 pm
por Dust
isso não é dificiu, você pode fazer por exemplo

Código: Selecionar todos

if piscando=true {sprite_index=dash_spr; x-=1}
Se possível, preste atenção no que você está fazendo, e pare de ficar copiando da internet, ou de uma engine, tente aprender.

Re: Ajuda player e inimigo

Enviado: Sex Out 21, 2016 5:56 pm
por Rodrigo Santiago
Tente o seguinte na hora que ele colidir com o inimigo:

Código: Selecionar todos

x += sign(x-inimigo.x) * 5;

Re: Ajuda player e inimigo

Enviado: Sex Out 21, 2016 6:08 pm
por DVictor
@Dust - O código realmente dá um mini dash pra traz quando o player está na frente do inimigo. Porém quando ele colide de traz pra frente, ao em vez de ele ir pra traz ele ta indo pra frente do inimigo. Ex = Ele ta na esquerda do inimigo e colide com ele, dai ele da um mini dash pra esquerda. Dai ele ta na direita do inimigo, ele colide e da um dash pra esquerda, sendo que era pra ter ido pra direita

@Rodrigo - Não funcionou, vou tentar dar uma improvisada no método que o Dust deixou ali

Muito obrigado por tentarem ajudar :)

Re: Ajuda player e inimigo

Enviado: Sex Out 21, 2016 6:14 pm
por divin sphere hirosha
vou tentar mudar o codigo do dust um pouco para ver se resolve
cria no create a variavel:

Código: Selecionar todos

dano_lado=1

e na colisão com o inimigo quando levar dano:

Código: Selecionar todos

if other.x>x{dano_lado=1}else{dano_lado=-1}

e no step o codigo do dust mas assim:

Código: Selecionar todos

if piscando=true {sprite_index=dash_spr; x-=dano_lado}
acho que deve funcionar

Re: Ajuda player e inimigo

Enviado: Sex Out 21, 2016 6:24 pm
por DVictor
@Divin - Não funcionou.

Então eu fiz de outra maneira que também não funcionou.
No create eu deixei assim:

Código: Selecionar todos

dash=false
Então, quando o player colidisse com o inimigo, ficou:

Código: Selecionar todos

if piscando = false and noar=false {
global.saude -= 1
piscando = true
alarm[0] = 120 //tempo pro player parar de piscar, 4 segundos, pra ficar piscando=false
alarm[1] = 5 // tempo pro dash acabar, pra ficar dash=false
dash=true
}
Então no step eu coloquei assim:

Código: Selecionar todos

if dash=true {sprite_index=dash_spr; x-=4}
O Problema, é que o dash ta dando so pra esquerda, e é bem pouquinho.

Alguma outra ideia?  :tedio:

Re: Ajuda player e inimigo

Enviado: Sex Out 21, 2016 6:29 pm
por Rodrigo Santiago
guarde o lado usando sign (ele retorna -1 ou 1 dependendo do numero) :
na colisao :

Código: Selecionar todos

dashDir = sign(other.x - x)
no step :

Código: Selecionar todos

if dash=true {sprite_index=dash_spr; x-=4 * dashDir}

Re: Ajuda player e inimigo

Enviado: Sex Out 21, 2016 6:30 pm
por Dust
Não é preciso criar uma variável, apenas comparar as posições para não ficar criando coisas, ou ocupando o seu projeto:

Código: Selecionar todos

if x<inimigo.x {sprite_index=dash_spr; image_xscale=-1; x-=1} else {sprite_index=dash_spr; image_xscale=1; x+=1}
Pronto, assim nem é preciso criar 2 sprites para o dash como por exemplo dash_direita e dash_esquerda pois a image_xscale ira inverter a sprite.

Re: Ajuda player e inimigo

Enviado: Sáb Out 22, 2016 11:59 am
por DVictor
Muito obrigado, consegui resolver aqui!