GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


move analogico

4 participantes

Ir para baixo

move analogico Empty move analogico

Mensagem por Vizage Dom 21 Set 2014, 19:31

Olá de novo.
Baixei uma engine de move analógico e estou com dificuldade pra mudar as sprites na movimentação.
https://gmbr.forumeiros.com/t29826-controle-analogico?highlight=move+anal%F3gico
Fiz assim:
Código:
if direction = 270 {sprite_index=spr_270}
else {sprite_index = spr_bloco};
Até aí tudo certo. O problema é pra mudar a sprite para as outras direções. Devo fazer assim?:
Código:
if direction = 270 {sprite_index=spr_270}
else {sprite_index = spr_bloco};
if direction = 225 {sprite_index = spr_225}
else {sprite_index = spr_bloco};
E assim nas 8 direções. O problema é que só troca a primeira sprite, deixando as outras sem utilidade. Como devo fazer?
avatar
Vizage

Data de inscrição : 19/08/2014
Reputação : 0
Número de Mensagens : 18
Prêmios : move analogico Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

move analogico Empty Re: move analogico

Mensagem por WellingtonBecker Dom 21 Set 2014, 20:16

Amigo, tente assim :

Código:

if obj_player.direction = 270 {sprite_index=spr_270}
else {sprite_index = spr_bloco};
if obj_player.direction = 225 {sprite_index = spr_225}
else {sprite_index = spr_bloco};
WellingtonBecker
WellingtonBecker

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 09/05/2013
Reputação : 105
Número de Mensagens : 824
Prêmios : move analogico Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

move analogico Empty Re: move analogico

Mensagem por Vizage Seg 22 Set 2014, 11:30

Não deu. Continua mudando só a primeira sprite e as outras nada. Coloquei no step do player:
Código:
if obj_player.direction = 270 {sprite_index=spr_270}
else {sprite_index = spr_bloco};
if obj_player.direction = 225 {sprite_index = spr_225}
else {sprite_index = spr_bloco};

if obj_player.direction = 135 {sprite_index=spr_135}
else {sprite_index = spr_bloco};
if obj_player.direction = 45 {sprite_index = spr_45}
else {sprite_index = spr_bloco};

if obj_player.direction = 315 {sprite_index=spr_315}
else {sprite_index = spr_bloco};
if obj_player.direction = 90 {sprite_index = spr_90}
else {sprite_index = spr_bloco};

if obj_player.direction = 0 {sprite_index=spr_0}
else {sprite_index = spr_bloco};
if obj_player.direction = 180 {sprite_index = spr_180}
else {sprite_index = spr_bloco};

Alguma outra sugestão?
avatar
Vizage

Data de inscrição : 19/08/2014
Reputação : 0
Número de Mensagens : 18
Prêmios : move analogico Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

move analogico Empty Re: move analogico

Mensagem por DieBoy Seg 22 Set 2014, 12:25

'-', cara usando esses "else's". Teria que a direção fosse 225 e 45 ao mesmo tempo pra funcionar.

Tente assim:

Código:

switch (obj_player.direction){
    case 270: sprite_index = spr_270; break;
    case 225: sprite_index = spr_225; break;
    default:  sprite_index = spr_bloco;
}
DieBoy
DieBoy

Data de inscrição : 22/08/2014
Reputação : 49
Número de Mensagens : 91
Prêmios : move analogico Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

move analogico Empty Re: move analogico

Mensagem por Vizage Seg 22 Set 2014, 19:17

Cara, deu certinho a movimentação, mas agora é o spr_bloco q não vai. Ele sempre fica na animação da ultima direção.
avatar
Vizage

Data de inscrição : 19/08/2014
Reputação : 0
Número de Mensagens : 18
Prêmios : move analogico Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

move analogico Empty Re: move analogico

Mensagem por DieBoy Seg 22 Set 2014, 19:27

Você pode fazer a animação parar, modificando a variável image_speed para 0

Código:

image_speed = 0;

Se deseja fazer isso no switch, faça assim:

Código:

switch (obj_player.direction){
    case 270: sprite_index = spr_270; image_speed = 0.3; break;
    case 225: sprite_index = spr_225; image_speed = 0.3; break;
    default:  sprite_index = spr_bloco; image_speed = 0;
}
DieBoy
DieBoy

Data de inscrição : 22/08/2014
Reputação : 49
Número de Mensagens : 91
Prêmios : move analogico Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

move analogico Empty Re: move analogico

Mensagem por Vizage Ter 23 Set 2014, 16:55

Seria isso aqui?
Código:
 switch (obj_player.direction){
    case 270: sprite_index = spr_270; image_speed = 0.3; break;
    case 225: sprite_index = spr_225; image_speed = 0.3; break;
    case 135: sprite_index = spr_135; image_speed = 0.3; break;
    case 45: sprite_index = spr_45; image_speed = 0.3; break;
    case 315: sprite_index = spr_315; image_speed = 0.3; break;
    case 90: sprite_index = spr_90; image_speed = 0.3; break;
    case 0: sprite_index = spr_0; image_speed = 0.3; break;
    case 180: sprite_index = spr_180; image_speed = 0.3; break;
       
    default:  sprite_index = spr_bloco; image_speed = 0;
}

Não deu. move analogico 413374 Acho que tá encantado... Devorei os tutoriais sobre switch e if e não acho o erro...
avatar
Vizage

Data de inscrição : 19/08/2014
Reputação : 0
Número de Mensagens : 18
Prêmios : move analogico Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

move analogico Empty Re: move analogico

Mensagem por DieBoy Ter 23 Set 2014, 17:10

Oque acontece exatamente com o spr_bloco?
E como assim ele "fica na animação da ultima direção"?
DieBoy
DieBoy

Data de inscrição : 22/08/2014
Reputação : 49
Número de Mensagens : 91
Prêmios : move analogico Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

move analogico Empty Re: move analogico

Mensagem por Vizage Ter 23 Set 2014, 17:18

Assim, se a última direção clicada for direita, ele fica na sprite 0 ao invés de mudar pro spr_bloco. E o problema no spr_bloco é exatamente esse: quando solta o direcional ele mantém a última sprite e não muda pro spr_bloco.
avatar
Vizage

Data de inscrição : 19/08/2014
Reputação : 0
Número de Mensagens : 18
Prêmios : move analogico Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

move analogico Empty Re: move analogico

Mensagem por WellingtonBecker Ter 23 Set 2014, 20:49

Vizage escreveu:Assim, se a última direção clicada for direita, ele fica na sprite 0 ao invés de mudar pro spr_bloco. E o problema no spr_bloco é exatamente esse: quando solta o direcional ele mantém a última sprite e não muda pro spr_bloco.

No STEP do obj_joystick, adicione essa ultima linha de script como esta abaixo:

Código:
obj_player.speed=0
x=xstart;
y=ystart;

obj_player.sprite_index=spr_bloco //adicione essa linha no script do obj_joystick
WellingtonBecker
WellingtonBecker

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 09/05/2013
Reputação : 105
Número de Mensagens : 824
Prêmios : move analogico Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

move analogico Empty Re: move analogico

Mensagem por Rodrigo Santiago Ter 23 Set 2014, 22:26

Erros lógicos. Somente isso.
Vou explicar o erro do if/else e do switch.

Veja :
Código:

if obj_player.direction = 270 {sprite_index=spr_270}
else {sprite_index = spr_bloco};
if obj_player.direction = 225 {sprite_index = spr_225}
else {sprite_index = spr_bloco};

if obj_player.direction = 135 {sprite_index=spr_135}
else {sprite_index = spr_bloco};
if obj_player.direction = 45 {sprite_index = spr_45}
else {sprite_index = spr_bloco};

if obj_player.direction = 315 {sprite_index=spr_315}
else {sprite_index = spr_bloco};
if obj_player.direction = 90 {sprite_index = spr_90}
else {sprite_index = spr_bloco};

if obj_player.direction = 0 {sprite_index=spr_0}
else {sprite_index = spr_bloco};
if obj_player.direction = 180 {sprite_index = spr_180}
else {sprite_index = spr_bloco};
O ultimo 'else' será executado para todas as direções exceto 180. Por isso apena ela pode mudar a sprite. Na verdade todos os 'else' serão executados , mas o que conta é o ultimo.
Corrigindo, o código seria :
Código:

if obj_player.direction = 270 {sprite_index=spr_270}
else if obj_player.direction = 225 {sprite_index = spr_225}
else if obj_player.direction = 135 {sprite_index=spr_135}
else if obj_player.direction = 45 {sprite_index = spr_45}
else if obj_player.direction = 315 {sprite_index=spr_315}
else if obj_player.direction = 90 {sprite_index = spr_90}
else if obj_player.direction = 0 {sprite_index=spr_0}
else if obj_player.direction = 180 {sprite_index = spr_180}
else {sprite_index = spr_bloco};
Porém este script não resolve o problema.
Pense nisso, quando nenhuma direção é selecionada a ultima direção continua
Por isso nunca será possível a execução do else. Isso explica o erro do switch. Default nunca será executado porque ,como eu disse, a ultima direção continua.
O que você tem que fazer é criar uma condição : movendo-não movendo;
tente este script :
Código:

if (speed>0){
switch (obj_player.direction){
   case 270: sprite_index = spr_270; break;
   case 225: sprite_index = spr_225; break;
   case 135: sprite_index = spr_135; break;
   case 45: sprite_index = spr_45; break;
   case 315: sprite_index = spr_315; break;
   case 90: sprite_index = spr_90;  break;
   case 0: sprite_index = spr_0; break;
   case 180: sprite_index = spr_180; break;
}

image_speed = 0.3;
}else {
sprite_index = spr_bloco;
image_speed = 0;
}
Rodrigo Santiago
Rodrigo Santiago

Games Ranking : Nota B

Notas recebidas : C + C + B
Data de inscrição : 28/07/2012
Reputação : 73
Número de Mensagens : 1281
Prêmios : move analogico Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 3 Prata x 1 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

move analogico Empty Re: move analogico

Mensagem por Vizage Qua 24 Set 2014, 10:09

kkkk! Batata! Deu certinho Rodrigo Santiago, valeu pela explicação. Apesar de ler e reler tutos sobre if e else sempre tem alguma coisa que escapa do iniciante. Muito agradecido pela ajuda Rodrigo Santiago,WellingtonBecker, DieBoy. Tranca o tópico aí...
avatar
Vizage

Data de inscrição : 19/08/2014
Reputação : 0
Número de Mensagens : 18
Prêmios : move analogico Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

move analogico Empty Re: move analogico

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos