# GM:S 1.4 How to recreate asteroids movement using GML alone?

Discussion in 'Programming' started by gacl, Jun 25, 2016.

Tags:
1. ### gaclGuest

I'm trying to avoid the use of 'speed'.

my whole ship movement script looks as follows:

if keyboard_check(vk_space)
{
obj_ship.x += cos(radtodeg(obj_ship.image_angle)) * 3;
obj_ship.y += sin(radtodeg(obj_ship.image_angle)) * 3;
}
if keyboard_check(vk_left)
{
obj_ship.image_angle += 3;
}
if keyboard_check(vk_right)
{
obj_ship.image_angle -= 3;
}

However, the ship is going all over the place, moving in any direction it wants to, seemingly randomly.

Can anyone tell me where I'm going wrong? I have the tip of my ship facing upwards, if it helps.

2. ### jo-thijsMember

Joined:
Jun 20, 2016
Posts:
2,846
Hi and welcome to the GMC!

You've used radtodeg instead of degtorad, which is causing you trouble.
You'll probably also be interested in learning about the lengthdir_x and lengthdir_y functions.

3. ### flyingsaucerinvasionMember

Joined:
Jun 20, 2016
Posts:
2,250
you don't need degtorad because the trig functions have couterparts that take degrees as an argument
dcos, dsin. dsin should be negated in your calculations.

dcos
-dsin

or use lengthdir functions

4. ### bojack29Member

Joined:
Jun 21, 2016
Posts:
407
You can use dsin and dcos too

move in 45 degrees at length of 10
Code:
```x += dcos(45) * 10;
y += -dsin(45) * 10;
```

5. ### icuurd12b42TMC FounderGMC Elder

Joined:
Apr 22, 2016
Posts:
1,840
sprite must point right

I dont know why you dont want to use speed. are you planning to do delta time movement?

step:
image_angle+=(keyboard_check(vk_left) - keyboard_check(vk_right)) * 3;
friction = speed/20;

using your own system
create

spdx= 0;
spdy = 0;

step
image_angle+=(keyboard_check(vk_left) - keyboard_check(vk_right)) * 3;
var thrust = keyboard_check(vk_up)*.01;
var dx = dcos(image_angle) * thrust;
var dy = dsin(image_angle) * thrust;
spdx+=dx;
spdy+=dy;
spdx*=.99;
spdy*=.99;
x+=spdx;
y+=spdy;

6. ### GenjiBlackwoodMember

Joined:
Apr 1, 2018
Posts:
1
I used this code, but my ship always goes in the opposite direction. Horizontally it works fine, but vertically it goes backwards. Like, when Im faced down, it goes up.

7. ### icuurd12b42TMC FounderGMC Elder

Joined:
Apr 22, 2016
Posts:
1,840
try using -image_angle, if you are using the physics engine and the physics functions