segunda-feira, 27 de setembro de 2021

Como criar MOVIMENTAÇÃO de Personagens no GameMaker Studio 2 (para jogos de RPG e campo aberto).

ATENÇÃO: Os códigos aqui são apenas para jogos de RPG/campo aberto. Caso queira aprender movimentação para jogos de plataforma e que exigem gravidade, clique aqui.

Vamos aprender, na linguagem GML (do GameMaker Studio 2) como movimentar um Personagem para CIMA, BAIXO, ESQUERDA e DIREITA, apertando os controles do teclado. Além disso, quando ele se movimentar para cima, ele muda a sprite, quando anda para baixo, também muda a sprite e também quando fica parado, muda a sprite.

1º Passo: tenha as Sprites...

Sprites são basicamente os desenhos dos Objetos que você usará no seu jogo. Objetos são basicamente eventos que vão acontecer no seu jogo. Inicialmente, vamos construir um Objeto que será controlado pelo jogador. Para isso, precisamos dos desenhos nas quatro direções...


Acima foram quatro sprites que separei...

Essas sprites serão o desenho do personagem do nosso modelo de jogo aqui. No total, serão quatro sprites (uma ele indo pra cima, outro para baixo, e para esquerda e direita). Caso ele não se mexa, ficará olhando para o player (usando a sprite ele indo para baixo).

Para criar uma Sprite, você precisa ir em Sprites > Create > Sprite, conforme o print abaixo.



Ao fazer isso, você terá DUAS OPÇÕES:

1) Importar a Sprite de algum lugar do seu PC.
2) Desenhar a sua própria Sprite.

Neste exemplo, usarei o desenho do gatinho mostrado acima. Portanto, criarei quatro sprites diferentes. Usando o mesmo método.

Cuidado com a transparência...

Ao usar imagens importadas, elas podem vir com um fundo. Para isso, precisamos retirar o fundo da imagem para que ela fique transparente.



Para retirar o fundo de uma imagem no GameMaker, precisamos usar a Magic wand tool, ou apertar W, para usar a ferramenta de retirar fundos.

Imagem sem fundo fica assim...

Quando retirar o fundo, e colocar as sprites parado e para as direções, deve ficar desse jeito:



IMPORTANTE: É sempre importante separar por categorias tudo que você faz no GameMaker. Como podem ver, as sprites tem spr antes do seu nome, que significa Sprite. Isso não é regra, mas será muito mais fácil na hora de criar seus projetos no GameMaker.

2º Passo - Criar o Objeto do Jogador

Você já tem as sprites que vai usar no objeto, agora terá que criar um Objeto para colocar essas sprites. Neste caso, vamos criar um Objeto para a criação do personagem que o jogador usará no seu game. Neste exemplo, usaremos as sprites desse gatinho bonitinho.

Para criar um Objeto, você precisa ir em Objetcs > Create > Objetc.


Lembra que falamos sobre Catalogar as coisas no Game Maker?!

Se usamos spr_ para nomear as sprites, vamos usar obj_ para nomear os objetos. Sendo assim, nosso objeto player (que será controlado pelo jogador) será obj_player.

Cada Objeto tem uma lista de EVENTOS que você usa para programar ele no jogo. No entanto, não vamos explicar toda a lista de Eventos aqui neste post, apenas os EVENTOS que você vai precisar para a criação desse jogo: Create e Step.

Create é um evento que indica o que acontece quando um objeto é criado na tela. Geralmente são usadas variáveis para definir algumas coisas do Objeto, como um valor de vida, velocidade, etc.

Step é um evento que é checado o tempo todo no GameMaker. Ao criar seu objeto Player, utilize esses dois eventos (Create e Step). 

Eu defini uma Sprite inicial também.



Feito isso, vamos para o terceiro e último passo.

3º Passo: Criação da Movimentação Via Código

Vamos definir então, no CREATE, uma variável. As "variáveis" são condições que guardam valores. No Create do objeto do player vamos criar uma variável chamada velocidade, e definir que esse valor será de 4.

velocidade = 4;

Agora, no Step do Objeto do Player, vamos escrever algumas variáveis, assim como criamos as sprites para cada lado que o boneco vai. Sobre variáveis, existem três tipos:

Variáveis Comuns: a que guardam valores importantes, como a vida e velocidade.
Variáveis Temporárias: que são usadas em momentos específicos, por assim dizer.
Variáveis Globais: que usam no jogo todo.

A variável velocidade é uma variável comum, pois guarda uma informação importante, que é a velocidade do jogador na tela. No entanto, como a movimentação é algo bem dinâmico, vamos usar variáveis temporárias para a movimentação do player. Para usar uma variável temporária, você precisa escrever um var antes das variáveis.

var esquerda, direita, baixo, cima, parado

esquerda = keyboard_check(vk_left);
direita = keyboard_check(vk_right);
cima = keyboard_check(vk_up)
baixo = keyboard_check(vk_down)
parado = keyboard_check(vk_nokey)

keyboard_check é um código que é usado checar se uma tecla é apertada. Neste caso, a variável é ativada quando uma tecla é apertada. Ou seja, se ele ir para cima, a variável cima é ativada. Caso você queira usar uma tecla comum do teclado, precisa escrever (ord("LETRA DO TECLADO EM MAIÚSCULA"). 

Por exemplo, digamos que eu queira as teclas A, S, D, W ao invés de UP, DOWN, LEFT, RIGHT?


var esquerda, direita, baixo, cima, parado
esquerda = keyboard_check(ord("A"));
direita = keyboard_check(ord("D"));
cima = keyboard_check(ord("W"))
baixo = keyboard_check(ord("S"))
parado = keyboard_check(vk_nokey)


Obs: repare que deixei uma variável chamada parado. Essa variável indica quando nenhuma tecla direcional é apertada. Qualquer tecla especial do teclado (que não seja números e letras) precisa ter um vk_nomedatecla. Vk quer dizer virtual keyboard.

MOVIMENTAÇÃO:

Agora coloque dessa forma:

x+= (direita - esquerda) * velocidade;
y+= (baixo - cima) * velocidade;

Repare que é usado o valor de velocidade, a mesma variável que é usada no Create. Seja como for, se você quiser que ele se movimente mais rápido, aumente o valor na variável velocidade. Se quiser que ele se movimente mais lentamente, diminua seu valor.

Mudando as Sprites quando se troca a tecla

No Game Maker uma das coisas que você mai usa é a questão do If (E se...). Ao usar o comando de If, sempre tente colocar em { }. No nosso exemplo, vamos usar o código sprite_index, que troca a sprite de um objeto.

Sendo assim, toda vez que uma variável temporária será acessada, a sprite vai mudar. Veja como eu fiz:

        
if (esquerda)
{
sprite_index = spr_player_esquerda;
}
if (direita)
{
sprite_index = spr_player_direita;
}
if (baixo)
{
sprite_index = spr_player_abaixo
}
if (cima)
{
sprite_index = spr_player_acima
}
if (parado)
{
sprite_index = spr_player_parado
}
Veja no GameMaker:



Por fim, para ver se tudo deu certo, você precisa ir em Room, que são as telas do seu jogo, e arrastar o objeto do player para dentro dela. 



Para testar o jogo, você só precisa apertar F5.

Quaisquer dúvidas, deixe nos comentários abaixo.

CONTINUAÇÃO: ao terminar esse tutorial, aprenda também a fazer Colisão (Paredes) no seu projeto do GameMaker, tutorial novo. Isto é, se pretende fazer um jogo de RPG/campo aberto. Se vai criar jogos que exigem gravidade, clique aqui então para aprender outros códigos de movimentação.

Nenhum comentário:

Postar um comentário

Sobre Nós

Rei dos Games


Rei dos Games é um site destinado a falar tudo sobre videogames (jogos antigos), RPGs de mesa e board games. Além disso, trazemos tutoriais, dicas, cheats de quem realmente experimentou essas mídias, trazendo também boas recomendações.


Rei dos Games é o único blog dedicado a três tipos de jogos diferentes (eletrônicos, de tabuleiro e RPGs). Se você quer conhecer bons jogos para brincar, este é o lugar certo.


Postamos recentemente

recentposts

Aleatório

randomposts