![]() |
Вращение камеры
Создал недавно простенький 3d движок. Теперь хочу разработать с его использованием простенькую 3d игру: Ходишь человечком по лабиринту, стреляешь во врагов молниями, ищешь выход. Но есть проблема: персонаж и камера должны вращаться мышью(как в нормальных играх), но когда мышь достигнет края экрана, то и вращение перестанет происходить! Что делать???
|
ппц, мне это снится или этот пост написал человек, который создал простенький 3d движок?
|
А что такого особенного? Вращение должно происходить в каждую из сторон сколько угодно, а если просто скрыть указатель мыши и отслеживать MOUSE_MOVE, то когда мышь достигнет конца экрана, вращение закончится! Вот в этом и проблема!
|
Что делать - придумать способ управления, учитывающий возможность выхода указателя мыши за пределы окна. Больше ничего не сделать.
|
Цитата:
|
мышку перемещать средствами флэша нельзя. Делают либо клавиатурными стрелками кручение, либо мышкой так, чтобы при повороте от начала экрана до конца, камера сделала как минимум пововорот на 360 градусов или даже больше. Еще вариант - крутить зажимая мышь: зажал и тащишь - поворачивается, как уперся в предел экрана - отжимаешь и перемещаешь мышь, снова зажимаешь и поворачиваешься, и т.д
|
Цитата:
1) Ось z направлена вертикально вверх, x - вглубь экрана, y - справо налево. Да, не очень по стандартному. 2) Отображение графики идёт как в AS 3.0, то есть создаём контейнер, в него можем добавить другой контейнер, в него парочку треугольников, а во время present() все добавленные в иерархию фигуры отображаются с учётом преобразований родительских контейнеров. 3) Писал без матриц, руководствуясь собственным воображением. Что бы повернуть объект вокруг оси z, устанавливаем контейнеру нужное значение horizontalRotation, для дополнительного поворота - verticalRotation. 4) Добавил объект четырёхугольник. Но к сожалению, из-за низкой скорости работы ActionScript 3.0 с массивами, мне не удалось организовать z-буфер: при наличии на сцене 6 треугольников(полукуб(1 треугольник на сторону)) сцена жутко тормозила, поэтому я использовал алгоритм художника. Мне кстати понравился способ с зажиманием мыши. И встречный вопрос перемещать мышь Flash Playerом нельзя, а Adobe AIRом? Можно ли как-нибудь отловить нажатие клавиш джойстика(вида, как у PS), хотя бы в AIRе. |
а можно демку посмотреть?
|
Маловероятно, это все таки небезопасно давать программе мышку перемещать. Если речь идет об exe оболочке для винды, то предлагаю посмотреть в сторону C#. Им без проблем можно отобразить флэш контент, и мышку он умеет перемещать + с ним можно связать флэшку через ExternalInterface. Т.е можно из самой флэхи вызывать Сишарповские функции, по-моему вариант неплохой. Тогда и зажимать мышь не нужно будет
|
Вложений: 1
Цитата:
Выложил два примера: разноцветный куб, и одноцветный куб(за счёт примитивного освещения он более-менее объёмный). Первые три ползунка - оси x,y,z, 4-ый и 5-ый - horizontalRotation и verticalRotation. |
Я в курсе, что такое Adobe AIR. Только вот до сих пор не встречал подобных функций по перемещению мышки. В самом классе Mouse вообще нет ни методов, ни свойств, отвечающих за позицию. Ни для SWF, ни для AIR. А в DisplayObject mouseX/Y как были readonly, так и остались. Так что буду рад услышать, если вы отыщите подобный функционал для Adobe AIR ;)
|
Как вариант можно сделать, чтобы персонаж вращался при подведении мыши к краю экрана. А по поводу AIRа спрошу в соответсвующем разделе.
|
ну если вы разрабатываете на flash, то мышка так и так будет иметь возможность покинуть зону flashPlayer. За покидание экрана мышки отвечает MOSE_LEAVE, соответственно нужно обработать это событие и все. Так же можно использовать только клавиши и не использовать мышь.
К стати, не думал, что применение 3d трансформации во fp10+изменение положения MovieClip, теперь называется собственным 3d движком =) |
AlexDesigner, что вы к человеку пристали? Он может быть величайшим Java программистом и написать движок круче крайэнджина на флеше, но не знать тонкостей покидания мышки сцены - потому что не из этой области программист.
GentleFLASH, мышка всегда покинет область флешки. Даже если зажимать её она когда нибудь упрется в экран, и поверьте, это жутко неудобно конечному пользователю. Да и вообще, я считаю что шутер на флешере - гиблая затея. |
Psycho Tiger
Да, видимо так и есть =) К стати есть еще вариант предлагать юзеру переводить flash в полноэкранный режим, чтобы мышка не покидала flash))) |
Я в общем изначально собирался писать игру для полноэкранного режима.
Похоже действительно не очень удачная идея. Попробую воссоздать дендишные танчики. К стати, все 3d трансформации прощитываются моим кодом, средства рисования 3d графики ActionScript 3.0 не используются. |
Цитата:
Цитата:
|
Дело было давно, но раньше была такая оболочка, называлась, по-моему, swfXXL. Она позволяла рендерить при помощи directdraw в полноэкранном режиме флешку и обладала каким-то API для перемещения курсора мыши.
В качестве рабочего примера можно попробовать поискать старую игру Krinkels'а - Madness Redeemer (вот уж юбоюсь, что ошибок наделал в названии) в этой оболочке скомпилированную. |
к стати, я тут подумал - а зачем вам вообще эта заморочка с выходом мышки из-за пределов flashPlayer? Ну подумаешь юзер отвлекся от игры и переключил песню в winamp? Дык и сделайте ему паузу в игре, а от случайных вылетов можно подстраховаться - сделав поля по краям, ограничив внутри активную зону?
|
Тогда камеру на 1020 не повертишь.
|
Цитата:
Смотрю сообщения в этой теме достаточно старые. У меня щас таже проблема, до сих пор нет для неё решения? |
| Часовой пояс GMT +4, время: 14:20. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.