XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Revion

offline
Опыт: 483
Активность:
Реализация возможности вращения камеры вокруг точки
Как в WoW-е к примеру. Т.е. чтобы РПГшную камеру можно было вращать вокруг персонажа.
Интуитивно понятным решением будет сделать так, чтобы при наведении к границе экрана слева/справа, поворот камеры вокруг персонажа начал меняться. Однако по стандарту подведение к границе экрана - движение самой камеры. Я решил что стоит его как то переопределить.
Для начала я пробовал взять самый простой вариант - без движения персонажа, и без него самого - просто вращение камеры вокруг некой точки, при наведении мыши к границе экрана.
Моя мысль шла в сторону - постоянно отслеживать положение камеры x и y, если значение меняется, возвращать его обратно и совершать поворот на небольшой градус. Проблема в том, что функция SetCameraPosition, которой я пользовался обрубает прокрутку. Т.е. происходит следующее: я подвожу мышь к границе -> происходит небольшой рывок в сторону, камера тут же возвращается на место, чуть поворачивается и НИКУДА больше не двигается (хотя по идее должна была бы продолжать рывками метаться влево-вправо, но поворачиваться всё больше и больше). Приходится долбить в бок мышью для совершения следующего рывка.
Это не очень приятно. Мягко говоря. Да и ещё не приятно то, что SetCameraPosition устанавливает не саму позицию камеры, а то место куда она указывает(!), т.е. после вызова SetCameraPosition(0, 0), GetCameraTargetPositionX/Y() вернёт 0, 0; а GetCameraEyePositionX/Y() вернёт какой нибудь 0, 922.312.
Пробовал ещё использовать вариант SetCameraRotateMode, да только он после того как заканчивает поворот лочит контроллер камеры и сдвинуть с места до вызова другой камерной функции её не получается. А сам вызов этой самой другой функции убивает весь поворот сделаный SetCameraRotateMode. А жаль.
Приходил на ум вариант SetCameraTargetController, только он полностью лочит движение камеры в бок и отловить то что мышь у края пытается сдвинуть экран не получится. ..Разве что используя трекаблы, чего я ещё не пробовал...
У кого есть какие идеи как и рыбку съесть и ... вы знаете пословицу)
Так, чтобы прокрутка была интуитивная (с помощью подвода мыши к краю) и удобная (подвёл и держи, а не долбать мышью в край экрана). Ну и хотелось бы чтобы была возможность сделать без рывков. Может есть какая наработка или карта в которой есть такая прокрута.. Я таких не помню..
Пребываю в мини отчаянии: неужели в варе нельзя сделать нормальную РПГшную камеру. Хелп!
Старый 16.04.2010, 06:59
FunkieFoO

offline
Опыт: 7,159
Активность:
в наработках была камера, которая была основана на кликах мыши (смартах/приказах) так вот, вышло весьма добротненько, советую автору двигаться в этом направлении
Старый 16.04.2010, 07:21
Windrunner
Верь мне!
offline
Опыт: 4,565
Активность:
Была наработка на тракеблях(отлов наведений и нажатий) но тут проблема движимую камеру такого вида сделать нельзя.
FunkieFoO, Хм так там придется тыкать чтобы вращать камеру а не зажал и держи.
Или нет?
Старый 16.04.2010, 08:25
Daemonik

offline
Опыт: 5,084
Активность:
Windrunner, Насколько мне известно, варкрафт не отлавливает момент отпускания клавиши мыши.
Старый 16.04.2010, 13:16
Revion

offline
Опыт: 483
Активность:
FunkieFoO, чуть позже поищу..
Windrunner,
Была наработка на тракеблях(отлов наведений и нажатий) но тут проблема движимую камеру такого вида сделать нельзя.
А если всю карту мелкими трекаблями замостить?и отслеживать какие активны для куррент камеры куррент игрока? Как думаете сильно педалить вся эта система будет?
Старый 16.04.2010, 13:52
Doc

offline
Опыт: 63,163
Активность:
Сильно это мягко говоря. Никакой комп такого не выдержит на карте больше 64х64.
Старый 16.04.2010, 14:06
FunkieFoO

offline
Опыт: 7,159
Активность:
тем более трекебли не актуальны
Старый 16.04.2010, 14:29
Windrunner
Верь мне!
offline
Опыт: 4,565
Активность:
DoctorGester:
Сильно это мягко говоря. Никакой комп такого не выдержит на карте больше 64х64.
Не правда я тестировал
Вар не выдерживает 5000-10000 тракеблей
Старый 16.04.2010, 14:53
Doc

offline
Опыт: 63,163
Активность:
А теперь проверь на готовой карте с другими системами и в мультиплеере.
Старый 16.04.2010, 14:56
Revion

offline
Опыт: 483
Активность:
FunkieFoO,
тем более трекебли не актуальны
Почему это? Очень таки себе расширяет возможности вара. Есть альтернатива?
Старый 17.04.2010, 06:19
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 13:13.