How to make an object rotate and resize along the mouse position.

1

Attached Files

The following files have been attached to this tutorial:

.capx

rotate-resize.capx

Download now 172.13 KB

Stats

3,094 visits, 4,449 views

Tools

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 19 Feb, 2019

Hello, welcome to this tutorial I want to show you how to create

an object that automatically changes the angle to rotate

this object and change its length so that it closely matches the

position where the mouse cursor is.

Come on then the following steps:

1. Create a sprite brand name object "o", you can choose any

name, in my case just chose the name letter "o", applied the color green,

you can apply any color to this object.

2. Add a Mouse type object in the project.

3. Okay now let's start coding. The guide EventSheet create four global variables

the type number, a name "a", another name "b", another name "c" and another

name "ang", which are the sides of a triangle and the the included angle respectively.

Note that the side "c" corresponds to the variation of the mouse in the X axis, the side "b"

corresponds to variation in the mouse Y-axis and "a" because it is the hypotenuse of a triangle

rectangle, "ang" corresponds to the internal angle of the triangle between the sides "b" and "c".

4.Na EventSheet guide create a System name of event -> Every tick and assign it the following

actions: set the following values ​​for the variables:

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)

and the length of the arrow sprite for the following commands:

o.set size = (sqrt (b ^ 2 + c ^ 2) -10 5)

size "o" is the type (o.width, o.heigth), in this case 5 high.

5. more added these following commands, even in the Event Sheet:

System -> Compare Two Values: mouse.y> = o.y

System -> Compare Two Values: mouse.x> = o.x

These events trigger the following action:

Sets the value of "ang" for: ang = (asin (b / (a)))

Now a few more commands:

System -> Compare Two Values: mouse.y <= o.y

System -> Compare Two Values: mouse.x> = o.x

These events trigger the following action:

Sets the value of "ang" for: ang = 360- (asin (b / (a)))

Other commands:

System -> Compare Two Values: mouse.y <= o.y

System -> Compare Two Values: mouse.x <= o.x

These events trigger the following action:

Sets the value of "ang" for: ang = -180+ (asin (b / (a)))

Finally these commands:

System -> Compare Two Values: mouse.y> = o.y

System -> Compare Two Values: mouse.x <= o.x

These events trigger the following action:

Sets the value of "ang" for: ang = -180- (asin (b / (a)))

Well, that's what I wanted to show, the result should look like the image below.

The code should look like the following below:

Thank you all.

.CAPX

rotate-resize.capx

Download now 172.13 KB
  • 0 Comments

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