Войти
IrrlichtФорум

Создаем игру =)

#0
12:29, 13 июня 2010

Предлагаю обсудить проблемы и решения по созданию игры на IrrLicht


#1
12:35, 13 июня 2010

Доброе время суток. Помогите плиз. Я делаю игру РПГ... Сделал человечка, уровень, анимацию. Все здорово... начвал делать атаку и оказалась что нуна как бы смешивать анимацию атаки и бега... irr::scene::ISceneNode *node1=node->getXJointNode("Spine"); Без результатов(... можно ли как заставить ноги бегать а руки атаковать? спс

#2
12:41, 13 июня 2010

И еще одна проблема, коллизии. Объявил глобальную переменную scene::ITriangleSelector* selector = 0;
в классе Entity вот:

  scene::ISceneNodeAnimator* anim =
    irrScene->createCollisionResponseAnimator(selector, node, core::vector3df(10,1,10),
    core::vector3df(0,-3,0),
    core::vector3df(0,0,0));
  node->addAnimator(anim);
  anim->drop();

и в классе Object:
selector = irrScene->createOctTreeTriangleSelector(mesh->getMesh(0),node, 32);
node->setTriangleSelector(selector);
selector->drop();

Все работает... Но нуна чтобы Entity между собой тоже коллизили... пробывал код из класса Object коллизия ваще исчезает(
Почаму-то токо на одном обьекте столкновения проверяются.

#3
12:44, 13 июня 2010

вот кстати моя игрулька
Безымянный | Создаем игру =)

#4
17:48, 13 июня 2010

На сколько мне известно Иррлихт не поддерживает блендинг анимацию, то есть смешение.
А насчет коллизий надо для каждого делать свой аниматор.

createCollisionResponseAnimator(selector,  //хранит полигоны с какими должен сталкивать,
                                                           node,  //какой нод должен сталкиваться, допустим герой
                             core::vector3df(10,1,10), //размер элипсойда вокруг нода для столкновений
                               core::vector3df(0,-3,0), //гравитаци, по законам физики должно быть -9.8
                               core::vector3df(0,0,0)); //это я так понял положение элипсойда относительно нода

То есть для всего что с чем должно сталкиваться ты делаешь свой селектор. Чтобы допустим NPC сталкивались с героем надо и для героя и для NPC делать свой селектор, только для них уже из BoundingBox. Все селекторы добавляешь в метатрианглселектор. Далее создаешь для каждого нода свой аниматор столкновений. Только вместо первого параметра createCollisionResponseAnimator будет уже не селектор одного объекта, а метатрианглселектор, хранящий информацию о всех селекторах в него добавленных. Второй параметр будет тот нод который должен сталкиваться.
Это единственный способ который мне известен :)

#5
7:12, 14 июня 2010

Спасибо все запахало!!! Метаселектор рулит.

#6
7:15, 14 июня 2010

А как поступить с анимацией? создавать отдельные анимации атака, атака + бег, вытажить оружие, вытащить оружие на бегу и т.д. нереально ... а если так не делать игра будет не интересной... типа подходиш останавливаешся ударяеш птом снова идеш, экшена нету( .... я думал мб разделить тело с ногами...

#7
7:16, 14 июня 2010

можно ли заставить двигатся рот во  время диалогов с помощью этого irr::scene::ISceneNode *node1=node->getXJointNode("Spine");?

#8
16:12, 14 июня 2010

Насчет одновременной атаки и бега у меня одна только мысль. Разделить меш. То есть ноги отделить от всего остального.  Во время движения ты управляешь ногами, а все остальное движется за ними. Так можно независимо управлять анимацией обоих частей. В некоторых РПГ тоже отделяют части тела для удобства. Например в Готике головы отдельно от туловища всегда в ресурсах.

#9
13:50, 15 июня 2010

здравая мысль, в Alien Shoter тоже модель разбита на ноги и торс

#10
15:40, 15 июня 2010

Хм... но тода еще одна проблема... будут Швы! щаз пробывал сделать... Ноги активно перемещаются... а торс атаковал... получились Швы... =( Несовместимо...

#11
16:05, 17 июня 2010

Так швы то можно внутрь спрятать или в то место куда не заглядывает камера. Это зависит от того места где ты его разделишь.

#12
23:19, 16 ноя. 2010

Насчет швов - сделать так

Туловище -  |-------------|
                    |                |   
                    |                |         
                    |------------- |
                    |  |  |  |  |    |                         
                    |  |  |  |  |    |                         
                        |  |  |  |                             
Ноги  -            |  |  |  |                               
                        |  |  |  |                               
              -----------  ----------                                             
                                                               

Ноги втыкаешь под рубашку или кофту персонажа чуть глубже, как под колпак, чтобы рубашка швы прикрывала :)

Рисую плохо но суть думаю понятна ;)
                                                               
                                                               

#13
8:15, 24 дек. 2010

ша работаю с NPC классами... проблема. как определить на сколько нужно повернутся чтобы найти меня(игрока)... (аналог процедуры на блитзе DeltaYaw() ).?

\
  \
    \
      а - - - - б

Как то так)) точка "а" должна  определить угол чтобы повернутся на "б"... допустим тута "+120" или "-240" значение =)   

#14
10:42, 24 дек. 2010

вроде так

f32 getRotateAngle(vector3df base, vector3df target)
{
  vector3df direction = target - base;
  return (   -atan2(direction.Z, direction.X) * irr::core::RADTODEG     );
}

IrrlichtФорум

Тема в архиве.