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 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FunkieFoO
offline
Опыт:
7,159Активность: |
в наработках была камера, которая была основана на кликах мыши (смартах/приказах) так вот, вышло весьма добротненько, советую автору двигаться в этом направлении |
16.04.2010, 07:21 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Windrunner
Верь мне!
offline
Опыт:
4,565Активность: |
Была наработка на тракеблях(отлов наведений и нажатий) но тут проблема движимую камеру такого вида сделать нельзя. FunkieFoO, Хм так там придется тыкать чтобы вращать камеру а не зажал и держи. Или нет? |
16.04.2010, 08:25 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Daemonik
offline
Опыт:
5,084Активность: |
Windrunner, Насколько мне известно, варкрафт не отлавливает момент отпускания клавиши мыши. |
16.04.2010, 13:16 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Revion
offline
Опыт:
483Активность: |
FunkieFoO, чуть позже поищу.. Windrunner, А если всю карту мелкими трекаблями замостить?и отслеживать какие активны для куррент камеры куррент игрока? Как думаете сильно педалить вся эта система будет? |
16.04.2010, 13:52 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Сильно это мягко говоря. Никакой комп такого не выдержит на карте больше 64х64. |
16.04.2010, 14:06 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FunkieFoO
offline
Опыт:
7,159Активность: |
тем более трекебли не актуальны |
16.04.2010, 14:29 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Windrunner
Верь мне!
offline
Опыт:
4,565Активность: |
DoctorGester:
Не правда я тестировал Вар не выдерживает 5000-10000 тракеблей |
16.04.2010, 14:53 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
А теперь проверь на готовой карте с другими системами и в мультиплеере. |
16.04.2010, 14:56 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Revion
offline
Опыт:
483Активность: |
FunkieFoO,
Почему это? Очень таки себе расширяет возможности вара. Есть альтернатива? |
17.04.2010, 06:19 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|