Sufius | Дата: Среда, 25 Сентября 2013, 00:29 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Доброй ночи! Второй день бьюсь над вопросом определения доступности места для движения персонажа. Передвижение на 1 клетку тратит 1 очко действия (не гексы, обычная квадратная сетка). У героя может быть разное кол-во ОД. Движение происходит через mp_grid, сейчас я просто просчитывая путь смотрю сколько ОД потратиться и двигаю, пока ОД не заканчиваются. Но требуется вокруг героя создать видимую область, куда он может передвинуться. Натолкните на мысль, плиз, если не сложно...
|
|
| |
Krosos | Дата: Среда, 25 Сентября 2013, 01:08 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Вот мой код , некогда мне его фильтровать....
global.SP[global.Sunit.O]+1- это ОД global.Sunit - это тот , кто сейчас ходит
Вот так создаются ячейки , для ОД не больше 10. for (yy=global.Sunit.y-640 ;yy<global.Sunit.y+640 ;yy+=64){ for (xx=global.Sunit.x-640 ;xx<global.Sunit.x+640; xx+=64){ instance_create(xx,yy,combat_tile)}}
Тут раскидываются препятствия для пути: with KleymoOfAlied {mp_grid_add_instances(global.Moving_mpgrid,id,1)} with KleymoOfEnemy {mp_grid_add_instances(global.Moving_mpgrid,id,1)} mp_grid_clear_rectangle(global.Moving_mpgrid,id.x-20,id.y-20,id.x+20,id.y+20) with obstacle {mp_grid_add_instances(global.Moving_mpgrid,id,1)} with SuperObstacle {mp_grid_add_instances(global.Moving_mpgrid,id,1)} with combat_tile { А тут удаляем все недостижимые ячейки if mp_grid_path(global.Moving_mpgrid,path_combat_check,x,y,global.Sunit.x,global.Sunit.y,0) and path_get_number(path_combat_check)<=global.SP[global.Sunit.O]+1{visible=1} else{instance_destroy()}}
Мой проект
Сообщение отредактировал Krosos - Среда, 25 Сентября 2013, 01:09 |
|
| |
Sufius | Дата: Среда, 25 Сентября 2013, 18:24 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Спасибо за идею, модернизировал под свои нужды...
|
|
| |