沿一个方向移动一个物体

时间:2014-11-22 20:22:07

标签: game-maker

我必须在Game Maker中为这个项目工作,我想将一个对象移向另一个对象。这是我到目前为止所得到的。有谁知道我做错了什么?敌人正在旋转玩家。

draw_sprite(sprite_index,image_index,x,y);
moveSpeed = 1;
angle = arctan2(enemy_obj.x - player_obj.x, enemy_obj.y - player_obj.y);
enemy_obj.x += cos(angle) * moveSpeed;
enemy_obj.y -= sin(angle) * moveSpeed;

1 个答案:

答案 0 :(得分:3)

使用内置GM功能(此代码必须放在敌对象的end step事件中):

angle = point_direction(x, y, player_obj.x, player_obj.y);
x += lengthdir_x(moveSpeed, angle);
y += lengthdir_y(moveSpeed, angle);

或:

direction = point_direction(x, y, player_obj.x, player_obj.y);
if point_distance(x, y, player_obj.x, player_obj.y) > 10 // min distance
{
    speed = moveSpeed;
}

或者您可以为A*使用动态规划功能,例如mp_potential_stepmp_grid_...

P.S。当你使用这样的代码时

angle = arctan2(enemy_obj.x - player_obj.x, enemy_obj.y - player_obj.y);

你必须明白,如果有enemy_obj的几个实例,那么它们中只有第一个(ID最小)