在您的代码中,您设置了image_angle 和direction,但随后只更改了y 坐标,因此您当然不会看到x 坐标有任何更改。
您可以使用内置的direction 和speed 变量,游戏制作者会自动移动任何对象,或者您可以在x 和y 坐标上应用lengthdir_x 和lengthdir_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 );
}
请注意,所有游戏制作函数都使用角度(度数),圆的右侧角度为 0(360),逆时针方向增加。
任何函数都可以在 0 到 360 范围以下和以上的值下正常工作,例如 -90 = 270 (360-90) 和 400 = 40 (400-360)。
注意游戏制作者如何检查true 和false。任何小于 0 的值都将在检查时生成false。