Quote (AGDMFG)
move_towards_point (player.x, y , 1)
А как ему не трястись, ведь условия то выполнены. Враг находится на своей у-координате, и х-координата совпадает с координатой игрока.
Как то вот так:
if player.y=y //можно задать и диапазон, если координаты не всегда совпадают
move_towards_point(player.x, y , 1)
else
{
if !place_meeting(x,y,stairs)
move_towards_point(instance_nearest(x,y,stairs).x, y , 1) // если ближайшая лестница находится над врагом а не сбоку, то лучше проверять еще и положение ее у-координаты относительно врага
else y+=1 // тут нужно еще добавить проверку на спуск/подъем по лестнице
}
Не совсем уверен что нигде не ошибся, но принцип думаю понятен?Добавлено (02.07.2011, 00:30)
---------------------------------------------
Вот еще какая штука пришла в голову, вот только не смог решить каким образом выбирать в какую сторону идет поиск лестницы. Ну и конечно если на линии по х-координате нет лестницы по обе стороны - это гарантированный висяк. Хотя можно ограничить поиск координатами комнаты: 0>x_stairs>room_width
var x_stairs=x
while !position_meeting(x_stairs,y,stairs) x_stairs+=1
stairs_instance_nearest=instance_position(x_stairs,y,stairs)
move_towards_point(stairs_instance_nearest.x, y , 1)
Добавлено (02.07.2011, 02:03)
---------------------------------------------
Допер как сделать выбор направления.
Вместо одной переменной считаем две. Например stairs_left и stairs_right.
Получаем следующую последовательность:
var stairs_left=x; stairs_right=x;
while !position_meeting(stairs_left,y,stairs)||stairs_left>0 stairs_left-=1 ;
while !position_meeting(stairs_right,y,stairs)||stairs_right<room width stairs_right+=1 ;
if x-stairs_left>stairs_right-x&&stairs_left>0
{stairs_instance_nearest=instance_position(stairs_left,y,stairs)
move_towards_point(stairs_instance_nearest.x, y , 1)};
if x-stairs_left<stairs_right-x&&stairs_right<room_width x-=1
{stairs_instance_nearest=instance_position(stairs_right,y,stairs)
move_towards_point(stairs_instance_nearest.x, y , 1)};
Я уже не уверен что сам понял что написал, время то позднее. Ну вдруг поможет кому нибудь, будет здорово