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.

Como movimentar pelo wasd (comecei agora no game maker)

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

Como movimentar pelo wasd (comecei agora no game maker)

Mensagem por linkgl0600 » Sex Ago 30, 2024 11:02 pm

Olá, tenho tentado a mexer no game maker, mais toda vez que tento replicar o código que faz o player se mover pelo wasd NUNCA FUNCIONA, isso provavelmente ocorre pela meu incrível nível de burrice, alguém pode me dizer algum código que funciona?

Avatar do usuário
KanekiZLF
Membro
Membro
Reações: 4
Mensagens: 38
Localização: Para

Re: Como movimentar pelo wasd (comecei agora no game maker)

Mensagem por KanekiZLF » Qua Set 11, 2024 11:43 pm

Boa noite, tudo bem ? espero que sim !!

Primeiro defina o tipo de jogo se é TOP DOWN(Jogos tipo zelda antigo) ou se é 2D(Super Mario), após definir isso vamos criar dois objetos o objPlayer e o objWall(Parede), agora vamos ao código!!

No seu evento criar do objPlayer deixe assim:

Código: Selecionar todos

/// @description Inserir descrição aqui
// Você pode escrever seu código neste 
speedH = 0; //Velocidade em que se move na HORIZONTAL
speedV = 0; //Velocidade em que se move na VERTICAL
mySpeed = 1; //Nossa velocidade de movimentação
myGravity = 0.2; //Velocidade em que cai (peso, digamos assim)

// Movimentação
right = 0; // Direita
left = 0; // Esquerda
up = 0; // Cima
down = 0; // Baixo


// Colisão
objColisWall = objWall; // Aqui coloque seu objeto colisão, esse objeto sera seu chão


Feito isso, vamos criar dois scripts:


No primeiro script de CTRL+A e cole nosso script:

Código: Selecionar todos

// Script desenvolvido por Luiz F. R. Pimentel
// https://github.com/KanekiZLF
function scrCollision() {

//Colisao X
	if place_meeting(x + speedH, y, objColisWall)  {
	while !place_meeting(x + sign(speedH), y, objColisWall)  {
		x += sign(speedH);
	}
		speedH = 0;
	}
	x += speedH;

//Colisao Y
	if place_meeting(x, y + speedV, objColisWall) {
		while !place_meeting(x, y + sign(speedV), objColisWall) {
			y += sign(speedV); 
	}
		speedV = 0;
	}
	y += speedV;

//myGravity
	if !place_meeting(x, y + 1, objColisWall) {
		speedV += myGravity;
	} // Esta parte é pra caso seu jogo seja 2D se for top down você pode comentar esta parte !!
}
Este script verifica continuamente se você esta colidindo com algum objeto e se estiver ele diz que sua velocidade é igual a 0, ou seja, você não pode cair nem subir, caso não esteja colidindo, ai sua velocidade pode ser alterada, se quiser entender melhor, recomendo fortemente que leia sobre cada função !!


Vamos para nosso segundo script:

Código: Selecionar todos

// Os recursos de script mudaram para a v2.3.0; veja
// https://help.yoyogames.com/hc/en-us/articles/360005277377 para obter mais informações
function scrMove() {
// Movimentação
	if !left {
		right = keyboard_check(ord("D"));
	}
		
	if !right {
		left = keyboard_check(ord("A"));
	}
		
	/*if !up {
		down = keyboard_check(ord("S"));
	}
		
	if !down {
		up = keyboard_check(ord("W"));
	}*/ // Desconte aqui se for jogo TOP DOWN
		
	up = keyboard_check_pressed(ord("W"));
		
	if (up) {
		speedV -= 5;
	}	
	
	speedH = (right - left) * mySpeed;
	//speedV = (down - up) * mySpeed; // Descomente aqui se for jogo TOP DOWN
}
Agora vamos parti para nosso evento etapa(Event Step) no objPlayer, coloque isso:

Código: Selecionar todos

/// @description Inserir descrição aqui
// Você pode escrever seu código neste editor
scrCollision();
scrMove();
Depois disso, ja esta funcionando, vamos apenas criar uma room e colocar o objWall no chão vai ficar assim:



Aqui esta um exemplo que fiz Exemplo Pratico!

Eu realmente espero ter lhe ajudado, boa noite e boa sorte ai !!
Ninguém vai bater tão forte como a vida, mas a questão não é o quão forte você consegue bater. É o quão forte você consegue apanhar e continuar seguindo em frente.

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitante