2016-12-20 7 views
1

내 게임을 위해 만든 내 적의 인공 지능은 간단합니다. 그들은 단지 (더 정확하게, 그들은 플레이어의 방향을보고 전진)Game Maker에서 겹치는 적 : Studio, 어떻게 수정합니까?

Step Event: 

    if (instance_exists(obj_player)){ 
     direction = point_direction(x,y,obj_player.x,obj_player.y); 
    } 

    speed = spd; 

그러나 그들은 서로 중첩 계속하고 플레이어의 상단에 갈 플레이어를 따릅니다. 나는 연구를 시도했지만 모든 포럼은 place_free()와 xprevious & yprevious를 사용하는 것이었지만 어떻게 사용하는지 전혀 모른다. 이 문제를 어떻게 해결할 수 있습니까?

감사합니다 :)

답변

0

당신은 gamemaker 문서에 대해 읽을 수 있습니다 : https://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/collisions/place_free.html 기본적으로

, 당신이하고 싶은 그 충돌을 일으키는 것을 의미 경우 인스턴스를 이동하는 번거 로움을 피할 수 있습니다. x_previous 및 y_previous는 이전 위치로 돌아가 이동을 취소하는 데 사용됩니다.

는하지만이 이동하기 전에 장소를 확인하기 위해 더 나은 것 같아요, 그래서 당신 스크립트의 마지막에 추가합니다 :

if (place_free(x+hspeed, y+vspeed)) speed = spd; 
else speed = 0; 

그 방법은 ennemy는 대신 다른 예를 위 스테핑의 중지됩니다.

약간의 업그레이드는 다음과 같습니다. 충돌이 감지되면 대신 (x 또는 y) 단일 축을 따라 이동하고 수행 할 수 있는지 확인하십시오.