Пролог: Создание персонажа в 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" В игре такие кренделя персонаж делать не будет Контроллёр Network_Character.gsl На описание этого скрипта у меня просто нет сил Настройки камеры видим в посте выше, как присвоить скрипт я думаю, знаете. После добавления скрипта, уже наконец нажимайте заветную кнопочку "Start Game" и гордитесь проделанной работой!
|