![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Dec 2010
Сообщений: 129
|
Доброе...
Подскажите пожалуйста, как можно реализовать область, которую персонаж видит и не видит? Поясню на примере. Есть лабиринт, стрелками клавиатуры происходит управление персорнажем. Хочу сделать, так чтобы, когда игрок появился он не видел весь лабиринт, он был бы черным, и только делая шаг за шагом, он бы его открывал. Так вроде понятней) У меня была идея разместить много черных квадратиков и когда бы объект с ними соприкасался, они бы исчезали, открывая область. Но может это не правильный вариант? И тогда придеться накладывать много кусочков, для более плавного открытия области. Или может масками как то? Подскажите пожалуйста. Спасибо.
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
|
Ну можно еще в спрайте туман отрисовать, а потом по мере прохождения его стирать, ну и ещё какой-нить фильтр накинуть типо черного глоу для реализма тьмы. Но это как мне кажется идея не самая лучшая.
|
|
|||||
|
Регистрация: Dec 2010
Сообщений: 129
|
Мне нужно, чтобы после прохождения участка область осталась видимой...
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
|
Ну значит, сохранять карту видимости в отдельный массив, и добавлять в него область вокруг персонажа.
Это если вы хотите получить более-менее оптимизированный результат(как можно меньше лагов). Если не важно, то можете хоть прямоугольниками чёрными закрывать.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 129
|
Тое сть в массив зоняю и отслеживаю столкноввения и стираю. верно понял?
Добавлено через 14 минут Возник вопрос. а как правильно размешать, пусть например. черные квадраты на сцене? Есть у меня объект blackBox. создаю массив количесвом равным отношений сторон всей области и размерами моего черного объекта? Типа первый помешаю в координаты 0,0, второй в координпту 0+ширина черного объекта? И так же по игрику? Чтот запутался)
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
|
Циклом расставляете.
var blackBoxes:Vector.<MovieClip> = new Vector.<MovieClip>(); for(var oy:int = 0; oy < MAP_HEIGHT; oy ++) { for(var ox:int = 0; ox < MAP_WIDTH; ox ++) { var blackBox:BlackBox = new BlackBox(); blackBox.x = ox * blackBox.width; blackBox.y = oy * blackBox.height; addChild(blackBox); blackBoxes.push(blackBox); } } P.S. Извиняюсь за форматирование, просто в браузере не хочет отступать кнопкой TAB.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 129
|
Спасибо, сейчас попробую...
Добавлено через 6 минут Получилось, так сказать сетка для тумана готова) Спасибо. А чтобы его открывать. туман войны. нужно искать столкновения с вектором? Добавлено через 14 минут Что-то потерялся я) mx,my координаты мыши. Но тут даже трейс невыводит... тыкаю везде. где можно) а тогда с чем мне искать столкновение?) Выдает координату самого последнего созданного кусочка...
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
|
Ну, можно проверять вхождение в радиус вокруг персонажа каждый кусочек ежекадрово.
var distance:Number = Math.sqrt((blackBoxes[i].x - player.x)*(blackBoxes[i].x - player.x) + (blackBoxes[i].y - player.y)*(blackBoxes[i].y - player.y)); if(distance <= ...) removeChild(blackBoxes[i]); Цитата:
Чтобы пройтись по всем кускам, используется такая конструкция
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 129
|
Спасибо, элемент принаведении мыши удаляется, но выходит ошибка в окне вывода:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. at flash.display::DisplayObjectContainer/removeChild() at shadowwar_fla::MainTimeline/speedPers()[shadowwar_fla.MainTimeline::frame1:35] Добавлено через 1 минуту Вот мой код. чую. что где то накосячил. а где, не пойму... var mx,my:int; var blackBoxes:Vector.<MovieClip> = new Vector.<MovieClip>(); for(var oy:int = 0; oy < 14; oy ++) { for(var ox:int = 0; ox < 20; ox ++) { var blackBox:black = new black(); blackBox.x = ox * blackBox.width; blackBox.y = oy * blackBox.height; addChild(blackBox); blackBoxes.push(blackBox); } } addEventListener(Event.ENTER_FRAME, speedPers); function speedPers(event:Event):void{ for(var i :int = 0; i < blackBoxes.length; i ++) { mx=mouseX; my=mouseY; var distance:Number = Math.sqrt((blackBoxes[i].x - mx)*(blackBoxes[i].x - mx) + (blackBoxes[i].y - my)*(blackBoxes[i].y - my)); if(distance <= 10) removeChild(blackBoxes[i]); } }
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:47. |
|
|
« Предыдущая тема | Следующая тема » |
|
|