![]() |
Реалистичная анимация кручения объектов вид сбоку
Вложений: 1
Всемпривет!
Занимаюсь сейчас схемкой одного механизма. Создал такую вот анимацю (приложил к сообщению). Все программное, так как количество поршней можно менять, угол главного барабана тоже (стрелочками лево-право). В данной анимации есть недостаток - поршни крутятся с одинаковой скоростью, "ударяяськ" о границы, меняют направление на противоположное. У меня это реализовано пока что очень просто: Код AS3:
Далее, анимация работает так, что каждый кадр прибавляем к игрику каждого поршня скорость, умноженную на направление поршня (1 либо -1). Когда поршень подходит в endPoint либо startPoint, его direction меняется на противоположный. Сейчас хочу сделать так, чтобы скорость поршня замедлялась по мере приближения и убыстрялась по мере отдаления от крайних точек. Тогда это будет выглядеть гораздо более реалистично. Но не могу понять, как это лучше сделать.. Можно, конечно, нагромождением ifов, но хочется как-то более красиво. Может быть, у кого-то есть такие варианты? |
нужно двигать поршни по синусу.
|
undefined ага, а синус чего делать?
Добавлено через 5 минут то есть, насколько я понимаю, нужно делать sin(t)? Получается, что время тут единственный изменяемый параметр.. |
да, от времени,да, единственный
|
Строго говоря, даже не времени, а угла поворота вала с поршнями.
Вертикальное положение относительно вала произвольного поршня forcer, расположенного на валу в угловой позиции phase, при произвольном положении вала alpha вычисляется по формуле: Код:
y = Math.sin(alpha + phase) * radiusТаким образом ты получаешь формулу, в которой с течением времени меняется alpha вала, давая новое положение каждого поршня. И кстати, подставив в эту же формулу cos вместо sin, ты получаешь возможность всегда знать, где должен находиться поршень в дисплейлисте —выше вала, или ниже. Ты это по знаку поймешь. |
Самый торч был бы ещё чуть-чуть увеличивать их при приближении, тогда совсем было бы реалистично.
|
что-то здесь не так.
пробую поставить на сцену два поршня пока что. Код AS3:
Код:
_phase 0 = 0Окей, пробую alpha = 180 Код:
_phase 0 = 0 |
синус принимает радианы, а не градусы
|
А почему ты считаешь синус от угла в градусах? Он же в радианах
|
Всем огромное спасибо!
Конечно, банальный вопрос получился, но почему-то я не мог до него сам допереть. Что если хочешь реалистично - делай как в реальности. =) + кроме того, сильно сократился код. Потому то у меня и свербило где-то, что я чувствовал - не дело писанину разводить, должен быть простой способ. Еще раз спасибо. В итоге что я проделал: сначала задаю параметры Код AS3:
Код AS3:
Код AS3:
|
| Часовой пояс GMT +4, время: 20:30. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.