Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 27.01.2012, 10:23   #1
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,537
Написано 517 полезных сообщений
(для 1,422 пользователей)
Подмигивание Как проиграть анимацию определенного чайлда?

Q: Как проиграть анимацию определенного чайлда?
А: Если попробовать сделать так:
entity = LoadAnimMesh( "mesh.b3d" )
child  = FindChild( entity, "child" )
Animate child
То ничего не получится - блиц скажет, что объект не анимирован - даже если он анимирован! Но что же делать? А вот что: нужно скопировать ключевые кадры корня сцены( scene root ) во все его чайлды! Для этого есть следующие функции:
Function iSetAnimKey( mesh, float key )

    SetAnimKey( mesh, key )

    For i = 1 To bbCountChildren( mesh )
        iSetAnimKey( GetChild( mesh, i ), key )
    Next

End Function

Function animateAllChilds( mesh )

    Local length% = AnimLength( mesh )

    For i = 1 To length - 1
        SetAnimTime( mesh, i, 0 )
        iSetAnimKey( mesh, i )
    Next

    For j = 1 To CountChildren( mesh )
        ent = GetChild( mesh, j )

        AddAnimSeq( ent, length )
    Next

End Function
Вызвав animateAllChilds для модельки Вы сможете анимировать только необходимую Вам часть! Например так:
entity = LoadAnimMesh( "mesh.b3d" )
animateAllChilds( entity )
child  = FindChild( entity, "child" )
Animate child
Теперь появилась возможность создавать интерактивные карты для Вашей игры! Не нужны никакие "расстановщики дверей, окон, машин..." т.е редакторы теперь все можно сделать в максе!!

ЗЫ. За точность блицевского кода не ручаюсь, т.к последние полтора года пишу на C++ с B3D SDK.

В аттаче есть пример.

Управление WSAD, пробел - прыжок. Левая кнопка мыши - запустить лифт/платформу( нужно навестись на него в левом верхнем углу загорится надпись). Пример написан на C++ с B3D SDK. Буду очень признателен если кто-нибудь переведет его на блиц.
Вложения
Тип файла: rar AnimTest.rar (477.2 Кб, 134 просмотров)
__________________
The Mine on GitHub
Core 2 Quad @ 2.66 ГГц, NVIDIA GTX 960 4 Гб, 6 Гб ОЗУ


Последний раз редактировалось mr.DIMAS, 27.01.2012 в 13:36.
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо mr.DIMAS за это полезное сообщение:
Alex__Noc (17.07.2012), Arton (18.02.2014), IgorOK (02.03.2014), LLI.T.A.L.K.E.R. (27.01.2012), tirarex (01.03.2014)
Старый 27.02.2014, 19:19   #2
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,365
Написано 1,877 полезных сообщений
(для 4,541 пользователей)
Ответ: Как проиграть анимацию определенного чайлда?

Всё верно, но надо добавить стоп анимации, иначе при инициализации всё будет отмотано на последний кадр.

Function iSetAnimKey( mesh, key)

    SetAnimKey( mesh, Float (key) )

    For i = 1 To CountChildren( mesh )
        iSetAnimKey( GetChild( mesh, i ), Float (key)  )
    Next

End Function

Function animateAllChilds( mesh )

    Local length% = AnimLength( mesh )

    For i = 1 To length - 1
        SetAnimTime( mesh, i, 0 )
        iSetAnimKey( mesh, i )
    Next

    For j = 1 To CountChildren( mesh )
        ent = GetChild( mesh, j )

        AddAnimSeq( ent, length )

		Animate ent,0,1,0,0

    Next

End Function
(Offline)
 
Ответить с цитированием
Старый 02.03.2014, 08:01   #3
IgorOK
Мастер
 
Аватар для IgorOK
 
Регистрация: 26.10.2009
Сообщений: 1,160
Написано 589 полезных сообщений
(для 2,136 пользователей)
Ответ: Как проиграть анимацию определенного чайлда?

А с костями это работает?
(Offline)
 
Ответить с цитированием
Старый 05.03.2014, 20:03   #4
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,365
Написано 1,877 полезных сообщений
(для 4,541 пользователей)
Ответ: Как проиграть анимацию определенного чайлда?

Сообщение от IgorOK Посмотреть сообщение
А с костями это работает?
Блин, а до костей я не добрался. Подозреваю что да.

Проверил, всё работает.

P. S. Сначала не получилось, думал надо анимировать кости, но видимо это у меня глюк был
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 20:52.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com