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. |
[Game Maker] Duvida sobre image_scale Tópico resolvido
- GhostPower
- Membro
- Reações: 0
- Mensagens: 97
[Game Maker] Duvida sobre image_scale
Boa Tarde,
Sou o Ghost e estou como uma outra duvida no game maker.
Bom tenho que fazer uma linha crescer no dois sentidos(para cima e para baixo), mas em momentos diferentes. Assim que eu pressionar o X a linha aumenta(utilizando o image_yscale += x) para cima, depois aperto de novo e a linha diminui para baixo(image_yscale -= x). Estou mudando o ponto de origin da imagem para pega a outra parte (inferior ou superior) da imagem com esta função sprite_set_offset(). Mas quando faço isso a imagem só cresce para um lado. Quero que a imagem permanece-a no mesmo, tanto para cima quanto para baixo.
Alguém sabe como faz isso?
Obrigado pela ajuda.
Sou o Ghost e estou como uma outra duvida no game maker.
Bom tenho que fazer uma linha crescer no dois sentidos(para cima e para baixo), mas em momentos diferentes. Assim que eu pressionar o X a linha aumenta(utilizando o image_yscale += x) para cima, depois aperto de novo e a linha diminui para baixo(image_yscale -= x). Estou mudando o ponto de origin da imagem para pega a outra parte (inferior ou superior) da imagem com esta função sprite_set_offset(). Mas quando faço isso a imagem só cresce para um lado. Quero que a imagem permanece-a no mesmo, tanto para cima quanto para baixo.
Alguém sabe como faz isso?
Obrigado pela ajuda.
Re: [Game Maker] Duvida sobre image_scale
Ajudaria bastante se você postasse a imagem e o efeito que deseja obter.
Pelo que entendi você quer que a imagem estique tanto para baixo quanto pra cima em proporções diferentes e ao mesmo tempo (O que é impossível desta maneira, já que a escala é a mesma para toda a imagem e não só a partir de um ponto de origem). O mais correto seria usar draw_sprite_ext e desenhar uma pra cada lado.
Posso ter entendido errado, por isso se puder postar a imagem ficaria mais fácil ajudar.
FLWS!
Pelo que entendi você quer que a imagem estique tanto para baixo quanto pra cima em proporções diferentes e ao mesmo tempo (O que é impossível desta maneira, já que a escala é a mesma para toda a imagem e não só a partir de um ponto de origem). O mais correto seria usar draw_sprite_ext e desenhar uma pra cada lado.
Posso ter entendido errado, por isso se puder postar a imagem ficaria mais fácil ajudar.
FLWS!
- GhostPower
- Membro
- Reações: 0
- Mensagens: 97
Re: [Game Maker] Duvida sobre image_scale
Blz Alex FC,
Vou tentar usar imagem para melhor entendimento.
Imagem estática.
https://uploaddeimagens.com.br/imagens/p1-png--73
Apertando a tecla X pela primeira vez:
https://uploaddeimagens.com.br/imagens/p2-png--66
Apertando a tecla X pela segunda vez:
https://uploaddeimagens.com.br/imagens/p3-png--24
E o que eu quero que aconteça:
https://uploaddeimagens.com.br/imagens/p4-png--25
Note em azul o que eu queria fazer.
Obrigado pela sua ajuda Alex FC.
Vou tentar usar imagem para melhor entendimento.
Imagem estática.
https://uploaddeimagens.com.br/imagens/p1-png--73
Apertando a tecla X pela primeira vez:
https://uploaddeimagens.com.br/imagens/p2-png--66
Apertando a tecla X pela segunda vez:
https://uploaddeimagens.com.br/imagens/p3-png--24
E o que eu quero que aconteça:
https://uploaddeimagens.com.br/imagens/p4-png--25
Note em azul o que eu queria fazer.
Obrigado pela sua ajuda Alex FC.
- Thiago Silva Thiago
- Membro
- Reações: 0
- Mensagens: 25
Re: [Game Maker] Duvida sobre image_scale
Só uma coisa, image scale NÃO é image size.
Então, você pode fazer, para alterações em pixel o seguinte:
pix = 1 / sprite_width; // esse é o tamanho em píxel da sua imagem para scale
ou
pix = 1 / sprite_height; // esse é o tamanho em píxel da sua imagem para scale para y
Assim, você poderá reduzir com efeito em píxel a imagem xscale e yscale com a variavel pix, ex:
image_xscale += pix; auenta o sprite ou image_xscale -= pix; para diminuir, ok?
Se você alterar a image xcale sem fazer o calculo, o game maker não vai auterar a size do sprite. Size é uma coisa, scale é outra; Um scale equivale ao tamanho original, ok?
Então, você pode fazer, para alterações em pixel o seguinte:
pix = 1 / sprite_width; // esse é o tamanho em píxel da sua imagem para scale
ou
pix = 1 / sprite_height; // esse é o tamanho em píxel da sua imagem para scale para y
Assim, você poderá reduzir com efeito em píxel a imagem xscale e yscale com a variavel pix, ex:
image_xscale += pix; auenta o sprite ou image_xscale -= pix; para diminuir, ok?
Se você alterar a image xcale sem fazer o calculo, o game maker não vai auterar a size do sprite. Size é uma coisa, scale é outra; Um scale equivale ao tamanho original, ok?
20 anos, estudante de linguagens de programação.
Uso Godot Engine.
Uso Godot Engine.
- GhostPower
- Membro
- Reações: 0
- Mensagens: 97
- GhostPower
- Membro
- Reações: 0
- Mensagens: 97
Re: [Game Maker] Duvida sobre image_scale
Bom dia Thiago Silva Thiago,
Cara, tentei usar a sua ideia mais não consegui não cara.
Tem como vc mostrar uma parte do código?
Obrigado pela ajuda.
Cara, tentei usar a sua ideia mais não consegui não cara.
Tem como vc mostrar uma parte do código?
Obrigado pela ajuda.
Re: [Game Maker] Duvida sobre image_scale Tópico resolvido
Olá, eu não tenho certeza se entendi o que você quer, mas talvez usar o draw_sprite_pos possa te ajudar, nele você pode escolher as 4 pontas de sua imagem (iniciando pela superior esquerda), assim você pode fazer com que ela aumente para cima em uma velocidade especifica e para baixo em outra velocidade.
Vou dar a sintaxe dela e depois um exemplo do que eu ACHO que você quer
sintaxe
draw_sprite_pos(sprite, subimage,x1, y1, x2, y2, x3, y3, x4, y4, alpha) o 1 representa o canto superior esquerdo da imagem, o 2 o canto superior direito, o 3 (este sempre confunde) é o canto inferior direito (sentido horário!) e o 4 o canto inferior esquerdo Aqui a documentação do game maker explicando melhor
Eu acho que você quer que ele aumente para cima e para baixo sem um depender do outro, correto?
Vou dar o modelo de código aqui. (tudo isso no draw event)
vou colocar o código em uma linha para ficar mais "limpo"
Você vai notar que eu criei o xbase e o xtopo e nunca os usei, é porque eu só estou dando o exemplo vertical, se você quiser que ela mude horizontalmente você vai precisar inserir estas variáveis nos valores de x, lembrando que se é para ir para a esquerda o valor é negativo e a direita o valor é positivo.
Fiz isso, mas esse comando por si só não faz nada, o que eu faço agora é uma condicional para determinar o que vai aumentar.
Pode usar o incremento aqui porque eu usei subtração no draw_sprite_pos
Com este código quando você apertar o x sua sprite vai aumentar para cima e só para cima e quando você apertar o y ela vai aumentar só para baixo, fiz agora de cabeça então talvez tenha algum erro, qualquer coisa é só reclamar que eu tento corrigir.
Espero ter ajudado =)
Vou dar a sintaxe dela e depois um exemplo do que eu ACHO que você quer
sintaxe
draw_sprite_pos(sprite, subimage,x1, y1, x2, y2, x3, y3, x4, y4, alpha) o 1 representa o canto superior esquerdo da imagem, o 2 o canto superior direito, o 3 (este sempre confunde) é o canto inferior direito (sentido horário!) e o 4 o canto inferior esquerdo Aqui a documentação do game maker explicando melhor
Eu acho que você quer que ele aumente para cima e para baixo sem um depender do outro, correto?
Vou dar o modelo de código aqui. (tudo isso no draw event)
Código: Selecionar todos
var xx = x - sprite_xoffset; //aqui estou trazendo meu x para o canto esquerdo da sprite, independente da origem definida
var yy = y - sprite_yoffset; //mesma coisa, só que e aqui estou levando para o topo
var ytopo = 0; //vai controlar o topo de minha imagem
var xtopo = 0; //Vai controlar o lado esquerdo
var ybase = 0; //vai controlar a base da minha imagem
var xbase = 0; //Vai controlar o lado direito
draw_sprite_pos(sprite_index, image_index, xx, yy-ytopo,
// 1
xx+sprite_width, [size=100]yy-ytopo, [/size]
[size=100]/[/size][size=100]/ 2 aqui cuidei da parte superior da imagem, você pode e eu aconselho a dar estas quebras no código, fica mais fácil de entender[/size]
[size=100][/size]
[size=100]xx+sprite_width, (yy+sprite_height)+ybase [/size]
[size=100]// 3 aqui eu estou dando o sprite height também porque tenho que levar a minha sprite até onde seria a base dela[/size]
[size=100][/size]
[size=100]xx, (yy+sprite_height)+ybase [/size]
[size=100]// 4 mesma coisa[/size]
[size=100]1); //alpha[/size]
vou colocar o código em uma linha para ficar mais "limpo"
Código: Selecionar todos
draw_sprite_pos(sprite_index, image_index, xx, yy-ytopo, xx+sprite_width, yy-ytopo, xx+sprite_width, (yy+sprite_height)+ybase, xx, (yy+sprite_height)+ybase, 1);
Você vai notar que eu criei o xbase e o xtopo e nunca os usei, é porque eu só estou dando o exemplo vertical, se você quiser que ela mude horizontalmente você vai precisar inserir estas variáveis nos valores de x, lembrando que se é para ir para a esquerda o valor é negativo e a direita o valor é positivo.
Fiz isso, mas esse comando por si só não faz nada, o que eu faço agora é uma condicional para determinar o que vai aumentar.
Código: Selecionar todos
if (keyboard_check(ord("X"))) ytopo++;
if (keyboard_check(ord("Y"))) ybase++;
Pode usar o incremento aqui porque eu usei subtração no draw_sprite_pos
Com este código quando você apertar o x sua sprite vai aumentar para cima e só para cima e quando você apertar o y ela vai aumentar só para baixo, fiz agora de cabeça então talvez tenha algum erro, qualquer coisa é só reclamar que eu tento corrigir.
Espero ter ajudado =)
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
- GhostPower
- Membro
- Reações: 0
- Mensagens: 97
Re: [Game Maker] Duvida sobre image_scale
Blz None,
Vou dar uma olha nesta função draw_sprite_pos() e no seu código.
Obrigado pela ajuda.
Edit:
Obrigado pela sua ajuda cara, funcionou certinho como eu queria.
Se o responsável pelo forum quiser pode encerrar este tópico como resolvido.
Agradeço a todos pela ajuda.
Vou dar uma olha nesta função draw_sprite_pos() e no seu código.
Obrigado pela ajuda.
Edit:
Obrigado pela sua ajuda cara, funcionou certinho como eu queria.
Se o responsável pelo forum quiser pode encerrar este tópico como resolvido.
Agradeço a todos pela ajuda.
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante