Como fazer um objeto rotacionar e redimensionar ao longo da posição do

0

Tagged

Stats

1,851 visits, 2,528 views

Tools

Translations

This tutorial hasn't been translated.

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 6 Nov, 2015. Last updated 25 Feb, 2019

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.

  • 0 Comments

Want to leave a comment? Login or Register an account!