我必须在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;
答案 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_step
或mp_grid_...
。
P.S。当你使用这样的代码时
angle = arctan2(enemy_obj.x - player_obj.x, enemy_obj.y - player_obj.y);
你必须明白,如果有enemy_obj
的几个实例,那么它们中只有第一个(ID最小)