Sprite virar conforme a posição do mouse

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Sprite virar conforme a posição do mouse

Mensagem por VitorClc em Dom 31 Ago 2014, 16:38

eae pessoal, estou fazendo um jogo com uma jogabilidade um pouco diferente e queria saber como fazer o player mudar de sprite conforme a posição do mouse

EX: Se o mouse estiver acima do jogador ele vira pra cima, se estiver a esquerda dele, ele vira com uma sprite diferente.

Lembrando q eu quero saber como posso fazer isso com varias sprites, não com apenas uma igual aos games top down

VitorClc

Número de Mensagens : 10
Data de inscrição : 21/07/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por matheusco em Dom 31 Ago 2014, 19:36

É só usar a função sprite_index e fazer ela ser igualada a outro sprite (da pasta de sprites) de acordo com as condições.

Por exemplo:

if mouse_y < y
{
sprite_index = spr_olhandopracima
}
if mouse_y > y
{
sprite_index = spr_olhandoprabaixo
}

Quiser ver mais exemplos, dá uma olhada no meu tutorial: http://www.tutoriaisgamemaker.com.br/2014/08/como-mudar-sprite.html

Não sei se você já tá familizariado como funcionam os eventos, as funções e o resto do Game Maker, mas se não estiver, dá uma olhada na página de Tutoriais: Iniciante e na de Funções, vai te ajudar bastante Smile

Qualquer dúvida só perguntar.

matheusco

Número de Mensagens : 395
Idade : 24
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por Rodrigo Santiago em Dom 31 Ago 2014, 20:52

Acho melhor fazer assim :
image_angle=point_direction(x,y,mouse_x,mouse_y);

Assim a sprite vai rotacionar em direção ao mouse.
Coloque isso no evento step, dentro de um bloco de codigo.

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por matheusco em Dom 31 Ago 2014, 22:23

Rodrigo Santiago escreveu:Acho melhor fazer assim :
image_angle=point_direction(x,y,mouse_x,mouse_y);

Assim a sprite vai rotacionar em direção ao mouse.
Coloque isso no evento step, dentro de um bloco de codigo.

Mas ele diz que não quer isso.

matheusco

Número de Mensagens : 395
Idade : 24
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por VitorClc em Seg 01 Set 2014, 12:20

Eu fiz isso matheus , mas mesmo assim a movimentação buga
Eu quero fazer ele virar enquanto eu seguro ctrl

VitorClc

Número de Mensagens : 10
Data de inscrição : 21/07/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por matheusco em Seg 01 Set 2014, 12:25

Então você precisa usar a função keyboard_check(vk_control) junto com a condição da posição do mouse, dá uma olhada na página de Tutoriais: Iniciante que te disse.

Você precisa saber usar operadores, funções interativas e funções executivas (condicionais) pra isso.

matheusco

Número de Mensagens : 395
Idade : 24
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por VitorClc em Seg 01 Set 2014, 12:29

Cara dá uma olhada nesse jogo

PROJECT ZOMBOID

procura algum video e vc vai entender o que eu quero pro ataque

VitorClc

Número de Mensagens : 10
Data de inscrição : 21/07/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por matheusco em Seg 01 Set 2014, 12:34

Eu já expliquei como faz...

if keyboard_check(vk_control) && mouse_y > y
{
sprite_index = algumacoisa
}

Ele só vai mudar o sprite quando você estiver segurando control. Se quiser que seja só quando acontecer o click então tem que usar mouse_check_button(mb_left). São esses os códigos, só não vou fazer a engina pra você. Tenta fazer como eu disse, dá uma lida no link que te mandei, dai se tiver dúvida eu te ajudo.

matheusco

Número de Mensagens : 395
Idade : 24
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por Rodrigo Santiago em Seg 01 Set 2014, 14:01

Desculpa pela resposta indesejada acima. Mas eu me confundi já que você não tem 'assinatura' eu pensei q a ultima frase era a sua assinatura por isso não li.

:p foi mal

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por Mateus O de Andrade em Seg 01 Set 2014, 15:17

Boa tarde VitorClc,
Pelo que pude ver com o jogo que você mostrou de exemplo, acho que o que você quer terá de usar 8 imagens e 8 verificações tipo.

Eu já expliquei como faz...

if keyboard_check(vk_control) && mouse_y > y && mouse_x = 0
{
sprite_index = algumacoisa
}

Não basta checar apenas o mouse_y, tem que checar o x também para saber que direção
ele está voltado

Vou tentar colocar elas aqui mas não tenho como verificar.

mouse_y > y && mouse_x =0 baixo

mouse_y < y && mouse_x =0 cima

mouse_y = 0 && mouse_x > x direita

mouse_y = 0 && mouse_x < x esquerda

mouse_y > y && mouse_x > x diagonal inferior direita

mouse_y > y && mouse_x < x diagonal inferior esquerda

mouse_y < y && mouse_x < x diagonal superior esquerda

mouse_y < y && mouse_x > x diagonal superior direita

Bem acho que é isso, basta verificar cara, se não der certo não tem problema, só desculpe se não ajudei.

Abração e boa sorte com seu projeto.

Mateus O de Andrade

Ranking : Nota D
Número de Mensagens : 399
Idade : 31
Data de inscrição : 25/03/2014
Reputação : 37
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por Rodrigo Santiago em Ter 02 Set 2014, 07:35

Os scripts que eu vi estão sempre com alguns erros lógicos. o seu também Mateus O de Andrade.
Olha aqui esse :
Código:

dir=round(point_direction(x,y,mouse_x,mouse_y)/45)
switch(dir){
 case 0 : sprite_index=spr_angulo0;break;
 case 1 : sprite_index=spr_angulo45;break;
 case 2 : sprite_index=spr_angulo90;break;
 case 3 : sprite_index=spr_angulo135;break;
 case 4 : sprite_index=spr_angulo180;break;
 case 5 : sprite_index=spr_angulo225;break;
 case 6 : sprite_index=spr_angulo270;break;
 case 7 : sprite_index=spr_angulo315;break;
 case 8 : sprite_index=spr_angulo0;break;//Repete angulo 0
}
Talvez ajude

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por matheusco em Ter 02 Set 2014, 09:02

Rodrigo Santiago escreveu:Os scripts que eu vi estão sempre com alguns erros lógicos. o seu também Mateus O de Andrade.
Olha aqui esse :
Código:

dir=round(point_direction(x,y,mouse_x,mouse_y)/45)
switch(dir){
 case 0 : sprite_index=spr_angulo0;break;
 case 1 : sprite_index=spr_angulo45;break;
 case 2 : sprite_index=spr_angulo90;break;
 case 3 : sprite_index=spr_angulo135;break;
 case 4 : sprite_index=spr_angulo180;break;
 case 5 : sprite_index=spr_angulo225;break;
 case 6 : sprite_index=spr_angulo270;break;
 case 7 : sprite_index=spr_angulo315;break;
 case 8 : sprite_index=spr_angulo0;break;//Repete angulo 0
}
Talvez ajude

Curti esse código Very Happy

Não tinha tentado fazer movimento em 8 direções depois que aprendi usar o Switch, mas nem consigo imaginar jeito melhor.

matheusco

Número de Mensagens : 395
Idade : 24
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por Mateus O de Andrade em Ter 02 Set 2014, 09:32

Rodrigo Santiago escreveu:Os scripts que eu vi estão sempre com alguns erros lógicos. o seu também Mateus O de Andrade.

É Rodrigo, imaginei que estivesse mesmo....já que eu fiz de cabeça Razz
Não tive tempo de testar o seu mas já pude perceber que só pelo "point_direction" já deve dar certo.

Valeu mesmo cara, acabei aprendendo uma coisa nova!!

Mateus O de Andrade

Ranking : Nota D
Número de Mensagens : 399
Idade : 31
Data de inscrição : 25/03/2014
Reputação : 37
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por LightSpeedy em Ter 02 Set 2014, 12:12

simples!

A Sprite tem de Estar Virada para a Direita!

Vá no Create do Objeto e ponha:

Código:
direction=point_direction(mouse_x,mouse_y)

Agora Vá no Step e escreva:

Código:


image_angle=direction
direction=point_direction(mouse_x,mouse_y)


LightSpeedy

Ranking : Nota C
Número de Mensagens : 354
Data de inscrição : 24/04/2013
Notas recebidas : C
Reputação : 40
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Sprite virar conforme a posição do mouse

Mensagem por Conteúdo patrocinado Hoje à(s) 16:20


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum