在您的代码中,您设置image_angle
and 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 );
}
请注意,所有游戏制作器功能都使用以度为单位的角度,角度 0(360) 在圆的右侧,逆时针增加。任何函数都可以在 0 到 360 范围以下和以上的值下正常工作,例如-90 = 270 (360-90)
和400 = 40 (400-360)
. 当心游戏制作者如何检查true
和false
. 任何小于 0 的值都将作为false
检查结果。