sirmax 5,499 Posted October 10, 2012 Чтобы не спорить о том, какая анимация урона лучше - с разгоном, со вспышкой, с фейдингом и т.д, я сделаю небольшой парсер, и каждый сможет настроить как ему угодно. Вот что меняется в конфиге (одинаковые параметры исключил): Сейчас: "alpha": 100, "damageText": { "alpha": 100, "color": null, "shadow": { "alpha": 100, "color": "0x000000", "angle": 45, "distance": 0, "size": 6, "strength": 200 }, "speed": 2, "maxRange": 40, будет: "damageText": { "animation": "set(alpha(1)); set(shadow({blurX:5, blurY:5, distance:0, alpha:0.8, strength:3})); insert(fadeIn(0.3),0); insert(tint(0.7, 0xFFFFFF), 0); insert(move(2, 40, 'up'), 0); append(fadeOut(0.5), -0.5); } То есть тень, цвет, прозрачность, расстояние и время уходят в скрипт. Скрипт является враппером над библиотекой greensock, можно посмотреть какие там есть плагины. Все плагины добавлены, их можно использовать через to()/from(). Пока что доступны такие функции (позже будет более подробное описание): Для Timeline: insert(tween, timeOrLabel) append(tween, timeOrLabel) set - то же самое, что insert(tween, 0); Для TweenLite: from(duration, vars) - обертка для TweenLite.from() to(duration, vars) - обертка для TweenLite.to() Эти методы универсальные, с помощью их можно использовать любые плагины из greensock. Для упрощения сделаны еще несколько врапперов для самых частых операций: alpha() - установить прозрачность (макросы допускаются) shadow() - тень fadeIn() - проявление tint() - засвечивание move() - перемещение fadeOut() - затухание пример выше означает: set(alpha(100)) - убрать прозрачность set(shadow(...)) - установить тень (параметры сократил для читаемости) set(fadeIn(0.3),0) - с 0 секунды за 0.3 секунды плавно проявить изображение insert(tint(0.7, 0xFFFFFF), 0) - с 0 секунды за 0.7 сек изменить цвет от белого до базового (в данном случае - системного) insert(move(2, 40, 'up'), 0) - 0 секунды в течении 2х секунд перемещать равномерно вверх на 40 пикселей append(fadeOut(0.5), -0.5) - за 0.5 сек до конца в течении 0.5 сек сделать затухание до полной прозрачности Вот как это выглядит на диаграмме: * Legend: * # : operation in progress * + : operation complete and result is visible * 0s 0.5s 1s 1.5s delay Xs * fadeIn ###++ +++++ +++++ +++++ ~ ~ ~ ----- * tint ##### ## * move up ##### ##### ##### ##### ~ ~ ~ +++++ * fadeOut ----- ----- ----- ----- ~ ~ ~ ##### Формат еще будет меняться, но основной смысл описан. Комментарии крайне приветствуются. 4 Quote Share this post Link to post Short link Share on other sites
7serafim7 49 #16615 Posted October 10, 2012 (edited) Ох..жеж плюшек сколько повляеться!!! Пичаль...у меня переезд в другой город и новая работа..боюсь не скоро всё поюзаю... З.Ы.Ещё к маркерам анимацию и настройку приделать и можно будет забить на работу... Edited October 10, 2012 by 7serafim7 Quote Share this post Link to post Short link Share on other sites
mrDontes 4 #16618 Posted October 10, 2012 (edited) Не совсем понял, можно ли будет привязывать/делать анимацию для разных типов/источников урона? Допустим, вспышкой, как сейчас в альфе8, выделять только свой урон, а остальные пущай так стреляют. Сейчас до осмыслил инфу, и как я понял, все таки нельзя. Так как эти настройки справедливы исключительно для отлетающего урона в 6ти вариациях(свой, чужой, нормал, с альтом и мертв). А источники(в т.ч. свой) урона выделяются только цветом. Edited October 10, 2012 by mrDontes Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #16620 Posted October 10, 2012 Не совсем понял, можно ли будет привязывать/делать анимацию для разных типов/источников урона? Допустим, вспышкой, как сейчас в альфе8, выделять только свой урон, а остальные пущай так стреляют. Сейчас до осмыслил инфу, и как я понял, все таки нельзя. Так как эти настройки справедливы исключительно для отлетающего урона в 6ти вариациях(свой, чужой, нормал, с альтом и мертв). А источники(в т.ч. свой) урона выделяются только цветом. посмотрим, главное парсер написать, а как его уже использовать - видно будет. Скорей всего по источникам урона можно будет настраивать, а по типам - нет. Типы можно будет выделять цветом, рисовать картинки, и т.д. Просто если делать и тип, и источник, слишком уж сложный конфиг получается. Quote Share this post Link to post Short link Share on other sites
VicKing 650 #16623 Posted October 11, 2012 (edited) Чёт не хотит анимация меняться... :( ставил так "animation": "insert(alpha(100)); insert(color(null)); insert(shadow('alpha':100, 'color':'0xF50800', 'angle':0, 'strength':300, 'distance':0, 'size':6)); insert(fadeIn(0.5),0); insert(tint(1, '0xFFFFFF'), 0); insert(move(5, 60, 'up'), 0); append(fadeOut(2), -2) ", и так "animation": "insert(alpha(100)); insert(color(null)); insert(shadow('alpha':100, 'color':'0x000000', 'angle':45, 'strength':200, 'distance':1, 'size':1)); insert(fadeIn(0.3),0); insert(tint(0.7, '0xFFFFFF'), 0); insert(move(3, 60, 'up'), 0); insert(move(15, 200, 'up'), 3); append(fadeOut(5), -5) ", - ни разницы, ни эффекта никакого не увидел, может что не так написал?а, и в "damageText" еще поставил: "damageText": { "animation": "insert(alpha(100)); insert(color(null)); insert(shadow('alpha':100, 'color':'0x000000', 'angle':45, 'strength':200, 'distance':1, 'size':1)); insert(fadeIn(0.3),0); insert(tint(0.7, '0xFFFFFF'), 0); insert(move(3, 60, 'up'), 0); insert(move(15, 200, 'up'), 3); append(fadeOut(5), -5) ", "visible": true, "x": 0, "y": -65, "damageMessage": "<span class='dmg_dead'>{{vehicle}}\nуничтожен!</span>", "blowupMessage": "<span class='dmg_dead'>{{vehicle}}\nвзрыв БК!</span>" }, т.е. убрал нафиг секцию "font", дописав в css .dmg_dead{ font-family: $FieldFont; font-size: 17; text-align: center; font-weight: bold; } так можно было? Edited October 11, 2012 by VicKing Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #16628 Posted October 11, 2012 (edited) Чёт не хотит анимация меняться... :( ставил так "animation": "insert(alpha(100)); insert(color(null)); insert(shadow('alpha':100, 'color':'0xF50800', 'angle':0, 'strength':300, 'distance':0, 'size':6)); insert(fadeIn(0.5),0); insert(tint(1, '0xFFFFFF'), 0); insert(move(5, 60, 'up'), 0); append(fadeOut(2), -2) ", и так "animation": "insert(alpha(100)); insert(color(null)); insert(shadow('alpha':100, 'color':'0x000000', 'angle':45, 'strength':200, 'distance':1, 'size':1)); insert(fadeIn(0.3),0); insert(tint(0.7, '0xFFFFFF'), 0); insert(move(3, 60, 'up'), 0); insert(move(15, 200, 'up'), 3); append(fadeOut(5), -5) ", - ни разницы, ни эффекта никакого не увидел, может что не так написал? так я ее еще не сделал )) синтаксис вроде правильный. я потом при парсинге буду ошибки в лог и на экран писать, чтобы видно было в случае чего а, и в "damageText" еще поставил: "damageText": { "animation": "insert(alpha(100)); insert(color(null)); insert(shadow('alpha':100, 'color':'0x000000', 'angle':45, 'strength':200, 'distance':1, 'size':1)); insert(fadeIn(0.3),0); insert(tint(0.7, '0xFFFFFF'), 0); insert(move(3, 60, 'up'), 0); insert(move(15, 200, 'up'), 3); append(fadeOut(5), -5) ", "visible": true, "x": 0, "y": -65, "damageMessage": "<span class='dmg_dead'>{{vehicle}}\nуничтожен!</span>", "blowupMessage": "<span class='dmg_dead'>{{vehicle}}\nвзрыв БК!</span>" }, т.е. убрал нафиг секцию "font", дописав в css .dmg_dead{ font-family: $FieldFont; font-size: 17; text-align: center; font-weight: bold; } так можно было? Ага, так и нужно. Реально в damageText остается только visible, x, y, animation, damageMessage и blowupMessage. Остальное опционально. Хочешь проще и без наворотов - используй как было. Хочешь что-то особенное - используй скрипт, html и css Edited October 11, 2012 by sirmax Quote Share this post Link to post Short link Share on other sites
VicKing 650 #16645 Posted October 11, 2012 (edited) Ну, тогда с анимацией ничего сложного, если набор эффектов не изменится, хотя и с таким можно наворотить... :) Кста, это только анимация, т.е. манипуляции с готовым объектом, а сам объект (его содержимое) я могу изменить? Edited October 11, 2012 by VicKing Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #16652 Posted October 11, 2012 пока сделаю простой парсер со статическими функциями, а там посмотрим. Если ввести логику и переменные, будет вообще универсальная штука, но к этому я сейчас морально не готов. :) Quote Share this post Link to post Short link Share on other sites
VicKing 650 #16656 Posted October 11, 2012 Это был только вопрос, но дальше и не нужно - бо зажрёмся и сгорим на своих хотелках, должна быть разумная граница. :) Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #16660 Posted October 11, 2012 Вот надо доделать это и пока остановиться, посмотреть что получилось. обновил первое сообщение Quote Share this post Link to post Short link Share on other sites
Crus 11 #16704 Posted October 11, 2012 Касательно наслоения, перенес несколько цитат из закрытой темы "Отлетающий урон в маркере" для воссоздания контекста: Складывание не особо хороший вариант по очевидным причинам - теряется информация о источнике/числе попаданий/фокусе. Но ведь наслоение (у меня с настройками "speed": 2, "maxRange": 50) встречается с завидной регулярностью, и тоже приводит к потере информации. Причем если урон прилетает практически одновременно, то потери еще выше, чем в случае с суммированием. Но почему не ввести задержку, чтобы текущий урон вылетал только после того, как перестанет перекрывать предыдущий? Можно обсудить заново, я не настаиваю. Просто раньше мы довольно долго это обсуждали и не нашли варианта лучше. Может сейчас придумаем, давайте обсуждать. Давайте анимацию вынесем в отдельную тему О! Нужно сделать эту задержку похитрее- отсчет времени не от попадания, а от начала предыдущей анимации См. выше, собственно это изначально и предложил. Quote Share this post Link to post Short link Share on other sites
Конь-Огонь 258 #17873 Posted October 24, 2012 Это перенесено на XVM 4.0.0? Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #17883 Posted October 24, 2012 да Quote Share this post Link to post Short link Share on other sites