Olá, bem vindos com este tutorial quero mostrar a vocês como criar
um objeto que automaticamente se muda o ângulo para rotacionar
este objeto e mudar seu comprimento para que este se aproxime da
posição onde o cursor do mouse está.
Vamos lá então, seguindo os seguintes passos:
1. Crie um objeto do tipo sprite de nome "o", pode se escolher qualquer
nome, no meu caso escolhí apenas o nome de letra"o", apliquei a cor verde,
você pode aplicar qualquer cor a este objeto.
2. Adicione um objeto do tipo Mouse no projeto.
3. Pronto agora vamos começar a programar. Na guie EventSheet crie quatro variáveis globais
do tipo number, uma de nome "a", outra de nome "b", outra de nome "c" e outra de
nome "ang", que são os lados de um triângulo e o o ângulo interno respectivamente.
Observe que o lado "c" corresponde a variação do mouse no eixo X, o lado "b"
corresponde a variação do mouse no eixo Y e "a" a hipotenusa pois se trata de um triângulo
retângulo, "ang" corresponde ao ângulo interno do triângulo entre os lados"b" e "c".
4.Na guia EventSheet crie um evento de nome System -> Every tick e associe a ele as seguintes
ações: set os seguintes valores para as variáveis:
a = sqrt((o.x-Mouse.x)^2+(o.y-Mouse.y)^2)
b = sqrt((o.y-Mouse.y)^2)
c = sqrt((o.x-Mouse.x)^2)
e para o comprimento da sprite o seta para o seguintes comandos:
o.set size = (sqrt(b^2+c^2)-10, 5)
o tamanho de "o" é do tipo (o.width, o.heigth), neste caso com 5 de altura.
5. Adicionamos mais estes seguintes comandos, ainda na Event Sheet:
System -> Compare Two Values: mouse.y >= o.y
System -> Compare Two Values: mouse.x >= o.x
Que estes eventos disparam a seguinte ação:
Seta o valor de "ang" para: ang = (asin(b/(a)))
Agora mais uns comandos:
System -> Compare Two Values: mouse.y <= o.y
System -> Compare Two Values: mouse.x >= o.x
Que estes eventos disparam a seguinte ação:
Seta o valor de "ang" para: ang = 360-(asin(b/(a)))
Outros Comandos:
System -> Compare Two Values: mouse.y <= o.y
System -> Compare Two Values: mouse.x <= o.x
Que estes eventos disparam a seguinte ação:
Seta o valor de "ang" para: ang = -180+(asin(b/(a)))
E por último estes comandos:
System -> Compare Two Values: mouse.y >= o.y
System -> Compare Two Values: mouse.x <= o.x
Que estes eventos disparam a seguinte ação:
Seta o valor de "ang" para: ang = -180-(asin(b/(a)))
Bom, é isso que quero mostrar, o resultado deverá ficar parecido com a imagem abaixo:
O código deverá ficar semelhante a imagem abaixo:
Obrigado a todos.