Página 1 de 1

Como faço para criar um escudo estilo Castlevania Symphony of the Night?

Enviado: Qua Jan 20, 2021 11:37 pm
por Alucard
Olá, estou tentando fazer com que o personagem quando aperte alguma tecla use o escudo igual no Castlevania SOTN, mas não tenho ideia de como fazer isso. O escudo seria uma sprite separada do jogador, ela tem mais de um frame na hora em que aparece, e segue o personagem quando se move.

Re: Como faço para criar um escudo estilo Castlevania Symphony of the Night?

Enviado: Qui Jan 21, 2021 10:11 am
por All-x
Você pode fazer o seguinte, no seu player no evento create coloque:

Código: Selecionar todos

// Não tem escudo
meuEscudo = noone;
No step (Usei a tecla espaço de exemplo):

Código: Selecionar todos

// Se não existe escudo e está segurando a tecla
if keyboard_check(vk_space) and !instance_exists(meuEscudo)
{
    // Cria o escudo
    meuEscudo = instance_create_depth(x, y, -1, obj_escudo);
}
// Existe escudo e não está segurando a tecla
else if keyboard_check(vk_space) == false
{
    // Destrói o escudo
    instance_destroy(meuEscudo);
}
No end step:

Código: Selecionar todos

// Se tem um escudo
if instance_exists(meuEscudo)
{
    // posiciona ele na frente do player
    meuEscudo.x = x + (32 * image_xscale);
    meuEscudo.image_xscale = image_xscale;
}
No código acima usa-se o image_xscale pra saber se está virado para esquerda ou direita, multiplicado pela distância que quero que fique (Lembrando que a sprite é centralizada). Se tu usa sprites diferentes pra cada lado, só criar uma condição pra isso, molezinha.

Pra animação do escudo, basta colocar no evento animation end dele image_speed = 0, desde que a animação seja como na gif, um escudo pequeno viando o escudo normal no último frame.

Re: Como faço para criar um escudo estilo Castlevania Symphony of the Night?

Enviado: Sáb Jan 23, 2021 11:43 pm
por Alucard
Valeu pela resposta, mas está dando um problema no instance_destroy(meuEscudo); , talvez seja por que estou usando o GMS 1.4(sei lá, sou novo no Game Maker).

Re: Como faço para criar um escudo estilo Castlevania Symphony of the Night?

Enviado: Sáb Jan 23, 2021 11:46 pm
por All-x
Alucard escreveu:Valeu pela resposta, mas está dando um problema no instance_destroy(meuEscudo); , talvez seja por que estou usando o GMS 1.4(sei lá, sou novo no Game Maker).
Sim, esse modo só é suportado no GMS2. Só trocar por:

Código: Selecionar todos

with (meuEscudo) instance_destroy();

Re: Como faço para criar um escudo estilo Castlevania Symphony of the Night?

Enviado: Dom Jan 24, 2021 10:47 am
por Alucard
Tá funcionando agora, mas tá dando problema, o GMS 1.4 não tem a função instance_create_depth, então eu adaptei assim:

instance_create(x, y, obj_Escudo) depth = -1;

legal, daí no animation end eu coloquei:

image_speed = 0; depth = -3;

só que por algum motivo desconhecido o personagem quando vai usar o escudo ele repete o frame do escudo vindo duas vezes, além da animação tá invertida(tipo, o escudo fica no frame do escudo vindo, não no escudo normal), e a animação tá rápida demais. Eu apreciaria se tu conseguisse arrumar isso.

Re: Como faço para criar um escudo estilo Castlevania Symphony of the Night?  Tópico resolvido

Enviado: Dom Jan 24, 2021 12:23 pm
por All-x
Eu apreciaria se tu conseguisse arrumar isso.
Tu tá com a faca e o queijo na mão, mas vamos lá kkkkkk
Alucard escreveu:

Código: Selecionar todos

instance_create(x, y, obj_Escudo) depth = -1;
Você está mudando o depth do player e não do escudo. Só remova o depth = -1 e continuemos.

Se a animação tá invertida, basta trocar a ordem da sua sprite (Ou você setou image_speed com valor negativo em algum outro lugar).

Se está repetindo duas vezes, você também tem que fixar o último frame, logo o código no Animation end fica assim:

Código: Selecionar todos

image_speed = 0; // Para animação
image_index = image_number - 1; // Fica no último frame
No create do obj_Escudo defina a velocidade da animação e o depth:

Código: Selecionar todos

image_speed = 0.2; // Só ajustar
depth = -3; 
Deve funcionar :)

Re: Como faço para criar um escudo estilo Castlevania Symphony of the Night?

Enviado: Dom Jan 24, 2021 2:14 pm
por Alucard
Magnificent, agora tá funcionando direitinho, valeu mesmo por ter respondido uma pergunta tão besta

Re: Como faço para criar um escudo estilo Castlevania Symphony of the Night?

Enviado: Dom Jan 24, 2021 2:20 pm
por All-x
Alucard escreveu:Magnificent, agora tá funcionando direitinho, valeu mesmo por ter respondido uma pergunta tão besta
"Não existe pergunta BESTA, existe o BESTA que não pergunta"

Fica ai a reflexão, melhor perguntar do que ficar eternamente na ignorância  :hahaha:

EDIT: Movi o tópico pra sessão correta.