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.

codigo para sprite

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Z3US4000
Membro
Membro
Reações: 1
Mensagens: 23

codigo para sprite

Mensagem por Z3US4000 » Sex Mai 05, 2023 8:15 pm

Ola estou começando a aprender codigos e queria saber se alguem tem um codigo para eu colocar para o personagem mudar a sprite do player para quando eu pular mudar de sprite dele pulando e dele caindo se alguem tiver um codigo pra isso obg,caso queiram criar o codigo apartir do meu ele estara abaixo:

tecla_dir= keyboard_check(ord("D"));
tecla_esq= keyboard_check(ord("A"));
tecla_pulo= keyboard_check_pressed(vk_space);

vspd= vspd + grav;

hspd= (tecla_dir - tecla_esq) * spd;

if(place_meeting(x + hspd,y,obj_wall)){
while(!place_meeting(x + sign(hspd),y,obj_wall)){
x= x + sign(hspd);
}
hspd= 0;
}

x= x + hspd;

if(place_meeting(x,y + vspd,obj_wall)){
while(!place_meeting(x,y + sign(vspd),obj_wall)){
y= y + sign(vspd);
}
vspd= 0;
}

y= y + vspd;

chao= place_meeting(x, y + 1,obj_wall);

if(tecla_pulo) {
vspd = vspd - altura_pulo;
}

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

Re: codigo para sprite

Mensagem por KanekiZLF » Ter Mai 09, 2023 1:55 pm

Vamos la então, este é um metodo que eu utilizo e gosto muito, vamos utilizar uma variável inteira, que vai receber um numero de qualquer valor, esse numero iremos utilizar ele dentro do nosso Switch para alterar a sprite.

No seu Evento Criar (Event Creat), vamos definir nossa variável:

Código: Selecionar todos

direc = 0;
Após isso vamos criar nosso script que vai trata de altera as sprites. Observe bem, iremos usar dois scripts, um sera responsável por alterar a sprite, e outro pra definir qual sprite estamos usando atualmente.

Agora ja esta funcionando, lembre-se de colocar suas sprites dentro do código.

Vamos agora para Evento Etapa (Event Step), vamos definir quando queremos alterar o valor do nosso direc, altera esse valor é a mesma coisa que alterar a sprite usando o sprite_index. Vai ficar assim

Código: Selecionar todos

if hspd == 0 {
	if direc = 2 {
		direc = 0; //<-- Sprite Parado Direita
	}

	if direc = 3 {
		direc = 0; //<-- Sprite Parado Esquerda
	}
}

if hspd != 0 {
	if tecla_dir {
		direc = 2; //<-- Sprite Andando Direita
	}

	if tecla_esq {
		direc = 3; //<-- Sprite Andando Esquerda
	}
}
Com isso você ja consegue altera a sprite com muita facilidade. Você pode usar diversas combinações pra altera de uma sprite pra outra, por exemplo:

Código: Selecionar todos

if tecla_pulo {
	if direc = 0 || direc = 2 { //<-- Verifica se estou com a sprite da direita definida
		direc = 4; //<-- Define a sprite de pulo da direita
	}
	
	if direc = 1|| direc = 3 { // Faz a mesma coisa porem pra esquerda
		direc = 5; //<-- Define a sprite de pulo da esquerda
	}
}
Assim nós temos um código todo definido de sprites. A Sprite inicial, ela é definida ja no nosso criar, usamos direc = 0, pra especificar a sprite parado(Idle), seja da direita ou da esquerda. Você pode duplica a sprite espelha ela, mas eu prefiso apenas muda o xscale, ficaria assim:

Código: Selecionar todos

case 0:
	scrChangeSprite(suaSpirte);
	image_xscale = -1;
break;
Lembre-se de sempre volta ao direc inicial, por exemplo, se vc pulou, seu direc vai ser igual a 4 ou 5, dessa forma, você precisa fazer com que ele volta para direc inicial 0, ou 1, dependendo de qual lado voce esta olhando, pra isso é só fazer:

Código: Selecionar todos

if hspd == 0 {
	if direc = 2 || direc = 4 {
		direc = 0; //<-- Sprite Parado Direita
	}

	if direc = 3 || direc = 5 {
		direc = 0; //<-- Sprite Parado Esquerda
	}
}
Assim, quando tocar o chão, seu hspd vai ser 0, e vai ir pra sprite de parado(idle). Pronto !

Código: Selecionar todos

// Script assets have changed for v2.3.0 see
// https://help.yoyogames.com/hc/en-us/articles/360005277377 for more information

function scrChangeSprite(_sprite) {
	//@arg Sprite
	if (sprite_index != _sprite) {
		sprite_index = _sprite;
		image_index = 0;
	}
}


function scrDirec() {
	switch direc {
		case 0:
			scrChangeSprite(suaSpirte);
		break;
		
		case 1: 
			scrChangeSprite(suaSpirte);
		break;
		
		case 2: 
			scrChangeSprite(suaSpirte);
		break;
		
		case 3:
			scrChangeSprite(suaSpirte);
		break;
		
		case 4: 
			scrChangeSprite(suaSpirte);
		break;
		
		case 5: 
			scrChangeSprite(suaSpirte);
		break;
	}
}
Ah, eu testei só parte do código, caso de algum erro, comenta aqui que eu resolvo ! Abraço e fique em paz !
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 6 visitantes