Воскресенье, 17 Ноября 2024, 06:41

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Вопрос по РПГ (3D вид, но 2D)
ШарповеЦДата: Понедельник, 10 Января 2011, 15:17 | Сообщение # 1
частый гость
Сейчас нет на сайте
Доброго времени суток. Командой делаем РПГ с 3D моделями и конвертируем их анимацию в спрайты, так вот получилась загвоздка с поворотами спрайта(движение) хотели сделать чтобы при нажатии на кнопку мыши он шёл и проигрывалась анимация (со всех сторон) видом сверху это можно легко реализовать а вот изометрия (то есть мы смотрим на персонажа как 3D модель уж очень непонятно. Прошу вашей помощи разумеется. smile

EshfordДата: Понедельник, 10 Января 2011, 19:22 | Сообщение # 2
Богиня Гамака ♥
Сейчас нет на сайте
Можно спросить? ETERNAL GAMES или ETEMAL GAMES???
LunarPixelДата: Вторник, 11 Января 2011, 08:08 | Сообщение # 3
старожил
Сейчас нет на сайте
Тут выход видится только один: нужно делать анимацию персонажа сразу под разными углами поворота, а потом в зависимости от направления движения проигрывать нужную анимацию. Всю анимацию можно засунуть в один спрайт (т.е. все картинки, для поворота на все углы), а потом просто проигрывать цепочки кадров от N до M.
Например вы сделали две анимации, как персонаж идет вверх (90 градусов) и как идет вниз (270 градусов). Рускать каждая анимация состоит допустим из 5 кадров. Все получившиеся 10 кадров помещаем в один спрайт. И когда у нас направление (direction) = 90 градусов, мы проигрываем первые 5 кадров, а когда 270, то проигрываем следующие 5.
Другого варианта повернуть спрайт в изометрии я не вижу. Все же в играх изометрия как правило делается в 3D пространстве.
Ну а способом который я описал для каждого градуса такую операцию конечно замучаешься делать, поэтому выход вижу только в том, чтобы сделать движение только в 8 направлений (0, 45, 90, 135, 180 и т.д.) или же прикрутить все это к 3D.


VickaДата: Вторник, 11 Января 2011, 13:47 | Сообщение # 4
Another ART
Сейчас нет на сайте
Quote
Ну а способом который я описал для каждого градуса такую операцию конечно замучаешься делать
если руками то да. я давно сделал себе заготовку сцены в максе установил на ней 16 каме. достаточно поместить в центр анимированую фигуру и нажать одну кнопку) кадры со всех камер акуратно сделают полный цикл анимаци) а сшить их вместе -как бва байта переслать)


LunarPixelДата: Вторник, 11 Января 2011, 14:22 | Сообщение # 5
старожил
Сейчас нет на сайте
Так дело не в том чтобы сделать саму анимацию... Дело в коде... в том примере что я написал придется проверять условие для каждого градуса и в соответствии с этим менять направление движения. Можно конечно подумать и сделать проверку циклом, но все же такие игры делаются в 3D пространстве.

VickaДата: Вторник, 11 Января 2011, 18:57 | Сообщение # 6
Another ART
Сейчас нет на сайте
не понимаю в чем проблема) вычисляем угол относительно мышки от объекта привязываем к нему синквецию. в флеше это элементаррно делается) я думаю в остальных движках тоже) только я тоже не пойму смысл данного мероприятия)


LunarPixelДата: Вторник, 11 Января 2011, 19:24 | Сообщение # 7
старожил
Сейчас нет на сайте
Просто я написал сначала пример через одну проверку, без всяких циклов и тому подобного, т.е.

Code
если угол = 1 градус, тогда показываем кадры от 0 до 5
если угол = 2 градуса, тогда показываем кадры от 5 до 10
если угол = 3 градуса, тогда показываем кадры от 10 до 15

Вот для этого кода, данный способ плох, т.к. придется писать 360 строк.
Понятно что данный код можно оптимизировать и упростить, просто я написал саму идею.

Можно сделать что то вроде этого:
В событии нажатия кнопки мыши пишем

Code
i=direction(x,y,mouse_x,mouse_y); // записываем в переменную угол
g=5*i; // определяем конечный кадр в зависимости от угла

Далее делаем так:

Code
image_index=g-5; // устанавливаем первый кадр из анимации
if image_index=g {image_index=g-5;} // если кадр равен последнему кадру из анимации, то возвращаем первый кадр

Вроде ничего не напутал. Пошел дальше работать. fear

Да и мне ещё интересно как отразится на спрайте то, что в нем будет 360 кадров. Лучше думаю будет разбить на 8 спрайтов, в каждом по 45 кадров.




Сообщение отредактировал LunarPixel - Вторник, 11 Января 2011, 19:29
GECKДата: Вторник, 11 Января 2011, 19:30 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
Quote (LunarPixel)
но все же такие игры делаются в 3D пространстве.
Эй, а как же старые игры? Там все именно так и делалось. Диабло, варкрафт, нокс, эпоха империй..список продолжите)


Всё гениальное просто. И хреново работает.
LunarPixelДата: Вторник, 11 Января 2011, 19:50 | Сообщение # 9
старожил
Сейчас нет на сайте
GECK, могу сказать про Диабло (не знаю точно про остальные, но думаю тоже самое), так вот Диабло работает на основе Direct3D, там насколько я знаю использовалось 3D пространство.

VickaДата: Вторник, 11 Января 2011, 19:59 | Сообщение # 10
Another ART
Сейчас нет на сайте
LunarPixel, диабло были именно спрайты только на сколько я помню там было всего 8 позиций

GECKДата: Вторник, 11 Января 2011, 20:03 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
LunarPixel, не совсем. Просто для вывода двумерной графики с незапамятных времен используется аппаратное 3д.
Вся графика в диабло(что в первом, что во втором) - это простыни отрендеренных с трехмерных моделей спрайтов.

Добавлено (11.01.2011, 20:03)
---------------------------------------------
А вот в Red Alert 2(про первый не знаю) совмещалась спрайтовая и воксельная графика. Но это уже оффтоп)


Всё гениальное просто. И хреново работает.
LunarPixelДата: Вторник, 11 Января 2011, 20:12 | Сообщение # 12
старожил
Сейчас нет на сайте
Neia, да, там спрайты были для персонажей, но технология немного другая. Я про пространство говорю, пространство там все же было в 3D. И скорее всего спрайты натягивались на 3D кубы, думаю понятно чем это облегчало работу. Но принцип для поворота все равно тот же что и описан в теме.
А вот про количество позиций, кажется да, всего 8... Что нас опять же возвращает к моему первому посту... Даже Blizard сделали 8 направлений, а не 360... Хотя может им просто было лень заморачиваться... biggrin

Добавлено (11.01.2011, 20:12)
---------------------------------------------
GECK, я говорю исключительно про пространство а не про объекты. Объекты то все были спрайтами.


GECKДата: Вторник, 11 Января 2011, 20:18 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
Quote (LunarPixel)
Хотя может им просто было лень заморачиваться...
Просто на спрайте даже пусть 128х128 поворот на 1 градус практически незаметен)

Добавлено (11.01.2011, 20:18)
---------------------------------------------
LunarPixel, так оно, наверное и было. В 2д так изогнуть ландшафт очень сложно.


Всё гениальное просто. И хреново работает.
LunarPixelДата: Вторник, 11 Января 2011, 20:27 | Сообщение # 14
старожил
Сейчас нет на сайте
Quote (GECK)
Просто на спрайте даже пусть 128х128 поворот на 1 градус практически незаметен)

Ну мы далеко не про один градус говорим... 360 и 8... как по мне, то большая разница.. biggrin (хотя должен сказать, что когда играл в диабло про 8 направлений и не задумывался)

Если и в других приведенных тобой в пример играх (да даже если и не так) было далеко не 360 направлений, то ответ по теме думаю ясен. Как я сразу написал, лучше взять 8 направлений и не париться. bag

А реализуется все одним из приведенных мной выше кодов (думаю я там ничего не напутал, но в любом случае идея понятна).

Всё, я ушел. Если у кого то есть мысли получше, с удовольствием их позже прочитаю.




Сообщение отредактировал LunarPixel - Вторник, 11 Января 2011, 20:28
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг