В вашем коде вы устанавливаете image_angle
и direction
, но затем меняете только координату y
, поэтому, конечно, вы не увидите никаких изменений координаты x
.
Вы можете использовать встроенные переменные direction
и speed
, и гейммейкер автоматически переместит любой объект, или вы можете применить функции lengthdir_x
и lengthdir_y
к координатам x
и y
.
Пример direction
и speed
:
//create event
playerSpeed = 3;
//step event
image_angle = point_direction(x, y, mouse_x, mouse_y);
direction = image_angle;
speed = 0; //reset speed at start of each step event
//now you wont have to check if key has been released to stop object
if(keyboard_check(ord('W')))
{
//distance between player and target
distance = point_distance(x, y, mouse_x, mouse_y)
if distance < playerSpeed
{
//with this, object will move only to mouse position, not further
speed = distance;
}
else
{
speed = playerSpeed;
}
}
else if(keyboard_check(ord('S')))
{
speed = -playerSpeed;
}
Пример lengthdir_x
и lengthdir_y
:
// create event
playerSpeed = 3;
// step event
image_angle = point_direction(x, y, mouse_x, mouse_y);
if keyboard_check( ord("W") )
{
x += lengthdir_x( playerSpeed, image_angle );
y += lengthdir_y( playerSpeed, image_angle );
}
else if keyboard_check( ord("S") )
{
x += lengthdir_x( playerSpeed, image_angle-180 );
y += lengthdir_y( playerSpeed, image_angle-180 );
}
Обратите внимание, что все функции Game Maker используют угол в градусах, с углом 0 (360) с правой стороны круга, увеличивающимся против часовой стрелки. Любые функции корректно работают со значениями как ниже, так и выше диапазона от 0 до 360, в то время как, например, -90 = 270 (360-90)
и 400 = 40 (400-360)
. Остерегайтесь того, как производитель игры проверяет true
и false
. Любое значение ‹, отличное от 0, будет отображаться как false
при проверке.
person
Community
schedule
19.07.2017