2

我必须在 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;
4

1 回答 1

4

使用内置 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;
}

或者,您可以使用运动规划功能,mp_potential_step例如mp_grid_...A *

PS当你使用这样的代码时

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

您必须了解,如果有几个 then 实例,enemy_obj则只会采用其中的第一个(具有最小的 id)

于 2014-11-23T01:36:33.557 回答