Тема: Vivo
Показать сообщение отдельно
Старый 18.03.2012, 05:16   #245
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Vivo

В тайловой карте вычислять индексы по координатам нет надобности; вот если наоборот то можно.
Всем объектам карты задай индексы cellX, cellX. Игроку конечно тоже.
При перемещении игрока изменяй индексы, пошел вверх - сделал cellY = cellY-1 и т.д.

Сейчас ты проходишь по всему массиву, как делал в for each, но можно только ближние к игроку клетки брать

Local startX% = player\cellX-viewCountX
If(startX < 0) startX = 0
Local endX% = player\cellX+viewCountX
If(endX >= fieldDimX) endX = fieldDimX-1
Local startY% = player\cellY-viewCountY
If(startY < 0) startY = 0
Local endY% = player\cellY+viewCountY
If(endY >= fieldDimY) endY = fieldDimY-1
Local xx%, yy%
For xx=startX to endX
For yy=startY to endY
; здесь только ближние к игроку
Next
Next
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (18.03.2012)