Главная Вы вошли как Гость | Группа Гости
Меню сайта
Категории раздела
Minimap [1]
Добавление и тонкая настройка миникарты
Menu tuturials [1]
Создание и настройка меню: шрифт,заготовки меню и всё, что с этим связано.
Characters [5]
Создание и настройка своего персонажа.
Interaction [1]
Interaction with objects Взаимодействие с объектами: двери, контейнеры, лестницы и прочие объекты, добавляющие в игру разнообразия и реализма.
Procedural terrain [3]
Создание и настройка процедурного террайна.
Vehicles [1]
Добавление и настройка автомобиля в движок
Physics [2]
Туториалы по физическому модулю GameCore.
Video-tutorials [2]
Всевозможные видео-туториалы по работе в GameCore
Intro tutorials [7]
Стандартная документация из движка. Полный перевод на русский язык.
Наш опрос
Ваш стаж в GameCore
Всего ответов: 125
Друзья сайта
Создание игр, Конструкторы игр, Игровые движки
Главная » Статьи » GameCore 3D » Characters

Скриптовка движений

Пролог: Создание персонажа в GameCore, без определённых знаний, невозможна. Если бы не онлайн-руководство на английском языке из официального сайта GameCore, то этот урок никогда не был бы написан. Сейчас я хочу поделиться с вами опытом, чтобы не было потеряно много часов и труда даром.

Для начала загрузите модель Sci-Fi солдата:
Скачать(~1.4 mb)
Это прямая ссылка на скачивание, можете скопировать и качать каким-нибудь менеджером закачки.

Все файлы, в папке нам необходимы. Но забегу наперёд и скажу: на сегодняшнем уроке мы заскриптуем только 3 движения: Idle, Walk и Run. Потому сделайте бекап (копию для восстановления), он нам понадобиться потом. Это обязательно!

Когда бекап есть, создайте пустой мир. В него добавьте Player.opr из скаченной папки.
Замечание: Папка должна быть обязательно в папке Media проекта!

Теперь время сказать, что такое opr-файл. Это файл, несущий всю информацию о объекте: путь к модели, текстуры, материалы, коллизии, настройки контроллёра, и разные другие настройки такие как аттач поинт и тд.

Анимация и движения:

Теперь надо немного подредактировать наш opr-файл. Возьмите и удалите оттуда всё, кроме этих строк:

Code
OPRP  

LoadObject soldier.FBX

Что же делает каждая строка?
Первая указывает на тип объекта (OPRP - объект, SPRP - спрайт, FX - спец-эффект, SMP - аудио-трек и тд.)
Третья (пробел ни на что не влияет, но повышает читаемость скрипта, при этом старайтесь не злоупотреблять пробелами) указывает какой объект и откуда грузить. Если в каталоге с opr-файлом есть другие каталоги и модель в одном из них, то будет:

Code
OPRP  

LoadObject my_catalog\soldier.FBX

С загрузкой модели разобрались. Но как-же добавить анимацию? Надо дописать в наш opr-файл нечто такое:

Code
OPRP  

LoadObject soldier.FBX
LoadAnimation MyMotion MyAnimation.FBX

LoadAnimation - указывает что надо грузить именно анимацию;
MyMotion - название движения;
MyAnimation.FBX - файл анимации.

Самыми стандартными движениями являются Idle, Walk и Run. Они составляющие базы персонажа. Тоесть они позволят нам постоять, походить и побегать.
Чтобы добавить их персонажу, допишите в ваш скрипт три строчки:

Code
LoadAnimation Idle idle.FBX
LoadAnimation Walk walk.FBX
LoadAnimation Run run.FBX

В итоге скрипт имеет такой вид:
Code
OPRP  

LoadObject soldier.FBX
LoadAnimation Idle idle.FBX
LoadAnimation Walk walk.FBX
LoadAnimation Run run.FBX

Вы наверное заметили, что персонаж чрезмерно большой и не подходит под масштабы мира. Это можно исправить строчкой:
Code
ObjectScale 0.29 0.29 0.29

Строчка масштабирует объект(и всё что выше него) ровно в 29% от реального размера.
Совет: Дописывайте эту строчку после всех объектов, которые нужна загрузить, в том числе и анимация!

И в итоге у нас вот такой скрипт:

Code
OPRP  

LoadObject soldier.FBX
LoadAnimation Idle idle.FBX
LoadAnimation Walk walk.FBX
LoadAnimation Run run.FBX
ObjectScale 0.29 0.29 0.29

Одной анимации мало. Теперь нужно заскриптовать движения. Со стандартными (Idle, Walk, Run проблем быть не должно)
Пример скриптования Idle:
Code
AddMotion IdleMotion
MotionAnim Idle
MotionSelectVar Velocity
MotionSelectMax 0.0
// MotionFadeInTime 0

Пример Walk:
Code
AddMotion WalkMotion
MotionAnim Walk
MotionScalarVar Velocity
MotionScalarRef 1.3
MotionSelectVar Velocity
MotionSelectMin 0.0
MotionSelectMax 3.0
// MotionFadeInTime 0.5

И наконец Run:
Code
AddMotion RunMotion
MotionAnim Run
MotionScalarVar Velocity
MotionScalarRef 3.0
MotionSelectVar Velocity
MotionSelectMin 3.0
// MotionFadeInTime 0.5

Всё дописываем в скрипт. Итог:
Code
OPRP  

LoadObject soldier.FBX
LoadAnimation Idle idle.FBX
LoadAnimation Walk walk.FBX
LoadAnimation Run run.FBX
ObjectScale 0.29 0.29 0.29

AddMotion IdleMotion
MotionAnim Idle
MotionSelectVar Velocity
MotionSelectMax 0.0
// MotionFadeInTime 0

AddMotion WalkMotion
MotionAnim Walk
MotionScalarVar Velocity
MotionScalarRef 1.3
MotionSelectVar Velocity
MotionSelectMin 0.0
MotionSelectMax 3.0
// MotionFadeInTime 0.5

AddMotion RunMotion
MotionAnim Run
MotionScalarVar Velocity
MotionScalarRef 3.0
MotionSelectVar Velocity
MotionSelectMin 3.0
// MotionFadeInTime 0.5

Как помним, это база персонажа. Все эти движения можно отнести к одному - Move.
Значит пишем:
Code
AddMotion Move
MotionChild IdleMotion
MotionChild WalkMotion
MotionChild RunMotion

Это поможет сделать плавные переходы между анимациями.
Как выглядит в скрипте думаю ясно, но если охота скопипастить:
Code
OPRP  

LoadObject soldier.FBX
LoadAnimation Idle idle.FBX
LoadAnimation Walk walk.FBX
LoadAnimation Run run.FBX
ObjectScale 0.29 0.29 0.29

AddMotion IdleMotion
MotionAnim Idle
MotionSelectVar Velocity
MotionSelectMax 0.0
// MotionFadeInTime 0

AddMotion WalkMotion
MotionAnim Walk
MotionScalarVar Velocity
MotionScalarRef 1.3
MotionSelectVar Velocity
MotionSelectMin 0.0
MotionSelectMax 3.0
// MotionFadeInTime 0.5

AddMotion RunMotion
MotionAnim Run
MotionScalarVar Velocity
MotionScalarRef 3.0
MotionSelectVar Velocity
MotionSelectMin 3.0
// MotionFadeInTime 0.5

AddMotion Move
MotionChild IdleMotion
MotionChild WalkMotion
MotionChild RunMotion

Коллизии (или коллайдеры):
Чтобы персонаж имел вес, надо добавить коллизию. Если кто не знает (в чём сомневаюсь), то делается это через Physics.
Название коллизии должно быть только Base, коллизия должна весить столько, сколько примерно должен весить персонаж, коллизия должна размещаться на тазу персонажа, и наконец: тип коллизии - сфера. Вывожу список:
Название: Base;
Вес: Должен быть обязательно (иначе будет ошибка!);
Размещение: Таз персонажа;
Тип коллизии: Сфера.
На этом с коллизиями покончено!
Хе-хе: И не нажимайте "Test Physic" biggrin В игре такие кренделя персонаж делать не будет smile

Контроллёр Network_Character.gsl
На описание этого скрипта у меня просто нет сил smile
Настройки камеры видим в посте выше, как присвоить скрипт я думаю, знаете.
После добавления скрипта, уже наконец нажимайте заветную кнопочку "Start Game" и гордитесь проделанной работой!

Категория: Characters | Добавил: ALBAKOR (28.02.2010)
Просмотров: 2808 | Комментарии: 6 | Рейтинг: 5.0/1
Всего комментариев: 6
0
6 Deftreolverly  
Hello!
Nullam vitae sem purus vitae scelerisque odio. Nullam id arcu nisl mi tempor ut molestie.

0
5 Милаха х))  
можно убрать ограничение в 60костей?

1
2 geralex  
http://gamecore3d.gcup.ru/publ/characters/Soldier.rar
Ссылка не работает, можете перезалить, плиз=)

1
4 ALBAKOR  
У меня этого файла нет после сноса винды и форматирования винта... Надо будет поспрашивать у тех, кто успел скачать...

1
1 QuadMan  
хм... странно, у меня солдат висит в воздухе(метр от земли) и не реагирует на клаву wacko

1
3 ALBAKOR  
Нужна базовая коллизия, иначе так и будет висеть.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
Последние статьи
Последние темы
Copyright GameCore3D.GcUp.ru ©2019-2010