2

このプロジェクトではゲーム メーカーで作業する必要があり、オブジェクトを別のオブジェクトの方向に移動したいと考えています。これは私がこれまでに得たものです。私が間違っていることを誰かが知っていますか?敵がプレイヤーの周りをぐるぐる回っています。

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 に答える