![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2010
Сообщений: 430
|
Здравствуйте.
Имеется плоскость в 3д, на ней расположены объекты, для удобства управления нужно сделать миникарту (маленькая копия карты как в играх, на которой прямоугольником выделена область большой карты на плоскости, отображаемая сейчас на экране). Миникарту сделал на простом спрайте (НЕ 3д). Вопрос такой: как изменять прямоугольник на миникарте, чтобы он отражал ту часть плоскости, которая видна. Сделал пока так: // задание маски по матрице: // прямоугольник на миникарте должен показывать нужную область, // для этого его нужно трансформировать. // подается матрица плоскости public function drawMaskMatrix(m:Matrix3D):void{ m.invert(); // матрица инвертируется _hole.transform.matrix3D = m; // присваивание матрица прямоугольнику-указателю на миникарте } Каковы ваши мысли на сей счет: может есть примеры реализации или есть идеи в какую сторону думать? Еще сложности добавляет то, что на большая 3-д карта может наклоняться по оси Х, т.е. прямоугольник-указатель на мини-карте иногда должен иметь форму не прямоугольника, а трапеции.
__________________
Лучше спросить и выставить себя дураком на пять минут, чем не спросить и остаться дураком на всю жизнь. |
|
|||||
|
Получается вид не сверху? Ну тогда трудно представить какого размера должен быть этот прямоугольник. Может проще точками обозначать? Если нужен именно прямоугольник, я бы сделал так - выяснил какая точка находится посередине экрана и от нее в высоту и ширину строил. А насчет трапеции - вроде в некоторых играх я такое видел - при наклоне карты прямоугольник превращался в трапецию.
|
|
|||||
|
Lorem ipsum
|
Нужно найти точки пересечения лучей, проходящих через углы вьюпорта, с плоскостью. Так мы получим координаты углов видимой зоны при любом ракурсе.
__________________
Поймай яблоко 2! |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|