Página 1 de 1

[Game Maker] Duvida sobre image_scale

Enviado: Ter Fev 20, 2018 4:21 pm
por GhostPower
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  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

Enviado: Qua Fev 21, 2018 9:49 am
por All-x
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!

Re: [Game Maker] Duvida sobre image_scale

Enviado: Qua Fev 21, 2018 11:18 am
por GhostPower
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.

Re: [Game Maker] Duvida sobre image_scale

Enviado: Qua Mar 07, 2018 6:24 pm
por Thiago Silva Thiago
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?

Re: [Game Maker] Duvida sobre image_scale

Enviado: Sex Mar 09, 2018 6:37 pm
por GhostPower
Boa Noite Thiago Silva Thiago,

Vlw pela dica cara, vou tentar usar isso.

Re: [Game Maker] Duvida sobre image_scale

Enviado: Qua Mar 21, 2018 9:50 am
por GhostPower
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.

Re: [Game Maker] Duvida sobre image_scale  Tópico resolvido

Enviado: Qua Abr 18, 2018 8:47 am
por None
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)

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 =)

Re: [Game Maker] Duvida sobre image_scale

Enviado: Ter Abr 24, 2018 1:58 pm
por GhostPower
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.