Have any function can count angle(direction)?

WeiyuWeiyu Member Posts: 216
edited April 2019 in Working with GS (Mac)

Hello everyone.
I have a math problem.
Have any function can count red actor's angle(direction)?
Thank you.

For example:
The center object's position.x = 50 and position.y = 50.
The red object's position.x = 25 and position.y = 20
As for center object, have any function can count red actor's angle(direction)?

Comments

  • AlkaPPAlkaPP Member, PRO Posts: 194

    You need an exact angle number or just the direction like left, right, up, down?

    If only 4 directions then it’s easy by checking the actor’s velocity. If x > 0 then it’s right, and smaller is left. If y > 0 the it’s up and smaller is down.

    If you need the exact angel number then I’ll need to leave it for a higher skill developer :smile:

    My Gamesalad Games On App Store:

    Greedy Chubby: https://itunes.apple.com/us/app/greedy-chubby/id834371213?ls=1

  • bob loblawbob loblaw Member, PRO Posts: 793

    @Weiyu said:
    Hello everyone.
    I have a math problem.
    Have any function can count red actor's angle(direction)?
    Thank you.

    For example:
    The center object's position.x = 50 and position.y = 50.
    The red object's position.x = 25 and position.y = 20
    As for center object, have any function can count red actor's angle(direction)?

    use asin/acos/atan, using the x and y displacement between each point as the lengths of a pythagoras/right angle triangle. you would also need a real attribute to allocate the value to when it is calculated.

    sin (angle) = length of opposite side to angle/length of hypotenuse
    cos (angle) = length of adjacent side to angle/length of hypotenuse
    tan (angle) = length of opposite side to angle/length of adjacent side to angle

    the a function mentioned above calculates the angle that is the object of whatever of sin/cos/tan you are using.

    to get the length of adjacent or opposite sides, you use the y position of one, minus the y position of the other (or x position depending if the side you are using runs along the x or y axis). if using the hypotenuse, you would need to use the magnitude function between the two points. easiest way though i find is atan (so your variable function in your scene, call it (maybe) angle would be

    change attribute angle to atan ((y.positionOfActor1-y.positionOfActor2)/(x.positionOfActor1-x.positionOfActor2))

    i think that's what you're asking so i hope that makes sense.

  • bob loblawbob loblaw Member, PRO Posts: 793

    practical demo file attached for reference

  • AlkaPPAlkaPP Member, PRO Posts: 194

    @bob loblaw this is what I meant "a higher skill developer". How the hell in the earth you figured out that complicated equation? :smile:

    My Gamesalad Games On App Store:

    Greedy Chubby: https://itunes.apple.com/us/app/greedy-chubby/id834371213?ls=1

  • bob loblawbob loblaw Member, PRO Posts: 793

    @AlkaPP said:
    @bob loblaw this is what I meant "a higher skill developer". How the hell in the earth you figured out that complicated equation? :smile:

    hahaa cheers. it's from high school (year 10) maths a long time ago. my teacher had a thing to remember it, and i can't believe it's stuck with me for this long.

    some old hags can always hide their old age

    sin=o/h cos=a/h tan=o/a

    hope it can help a few other people as well. very useful function for rotating projectiles to the right angle along their flight path, as well as an AI function if you have an enemy shooting at a position a player was in at the time of shooting. i'm currently finalising a game inspired by crush the castle/angry birds that uses it in some parts.

    props to you mrs. h, by the off chance you ever stumble upon and read this.

  • Two.ETwo.E Member Posts: 599

    Does the vector to angle function not do what you want?

    Best,
    Two.E

  • bob loblawbob loblaw Member, PRO Posts: 793

    have never used it. will have to give it a go.

  • Two.ETwo.E Member Posts: 599

    VectorToAngle(center.X - actor.x.pos, center. Y - actor.y.pos)

    And if you want the opposite direction, ie the angle facing the middle, then add +180 at the end of the expression.

    I assume the function does the maths @bob loblaw described....but I don't know for sure.

    Best,
    Two.E

  • bob loblawbob loblaw Member, PRO Posts: 793

    @Two.E said:
    VectorToAngle(center.X - actor.x.pos, center. Y - actor.y.pos)

    And if you want the opposite direction, ie the angle facing the middle, then add +180 at the end of the expression.

    I assume the function does the maths @bob loblaw described....but I don't know for sure.

    Best,
    Two.E

    i think you’re right. looking at that it looks like it’s pretty much the same thing, but with its own easy to understand name.

  • RThurmanRThurman Member, Sous Chef, PRO Posts: 2,880

    I believe "VectorToAngle()" is GameSalad's version of "atan2". The great thing about it is that "VectorToAngle()" gives the result in degrees instead of radians.

  • RThurmanRThurman Member, Sous Chef, PRO Posts: 2,880

    Maybe this 'blast from the past' might be useful:
    https://forums.gamesalad.com/discussion/comment/417361/#Comment_417361

Sign In or Register to comment.