![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Добрый день! Сразу скажу, что с тригонометрией у меня беда но нужно реализовать движение объекта по схеме приведенной ниже. Объект двигается по Х и окружности одновременно. Помогите, пожалуйста, очень нужно
![]()
__________________
Не стыдно спросить, стыдно не знать ! |
|
|||||
|
Самый простой вариант нарисовать курв и сделать анимацию вдоль этого курва
http://swf-flash.blogspot.com/2012/0...animation.html
__________________
Гоночка |
|
|||||
|
А если это враг, который должен лететь по такой траектории?
__________________
Не стыдно спросить, стыдно не знать ! |
|
|||||
|
Цитата:
На самом деле ваша схема движения - обычная циклоида. Уравнения для X и Y находятся тут То есть package { import flash.display.Sprite; import flash.events.Event; import flash.utils.getTimer; /** * ... * @author KumoKairo */ public class Trajectory extends Sprite { private var _elementDummy:Sprite; private var _previousTime:Number; private var _velocity:Number; private var _radius:Number; private var _cycles:uint; public function Trajectory() { _elementDummy = new Sprite(); _elementDummy.graphics.beginFill(0xFF0000); _elementDummy.graphics.drawCircle(0, 0, 15); addChild(_elementDummy); _previousTime = getTimer(); _velocity = 0.02; _radius = 15; _cycles = 0; addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function onEnterFrame(e:Event):void { var passedTime:Number = getTimer() - _previousTime - _cycles * 3000; _elementDummy.x = _radius * _velocity * passedTime - _radius * Math.sin(_velocity * passedTime); _elementDummy.y = _radius - _radius * Math.cos(_velocity * passedTime); if (_elementDummy.x > 800) { _cycles++; } } } } |
|
|||||
|
Тут принцип простой: "Не хочешь возится с тригонометрией - вкладывай спрайт один в другой и двигай их"
Т.е. берёте спрайт "точка", ложите в спрайт "колесо", колесо сложите в спрайт "вращающееся колесо" И крутите колесо во вращающемся колесе, двигаете вращающееся колесо. Я очень чётко знаю тригонометрию, но всё равно, если есть возможность, использую этот способ, дабы не запутаться и легко поправить что нужно. Не, если нужно не движение на экране, а именно функция, которая возвращает координаты, то конечно придется напрячь мозг, не создавать же вспомогательные спрайты на ровном месте. |
|
|||||
|
Цитата:
__________________
return this... |
|
|||||
|
AlexCooper,
![]()
__________________
Дети не должны знать о своих родителях |
|
|||||
|
Tails я обеими руками за гибкость. Я лучше сломаю мозг при расчетах и смогу управлять движением, нежели нарисую рукой кривую для движения объекта
p.s. Если конечно это не баннер)
__________________
return this... |
|
|||||
|
KumoKairo , спасибо большое!
![]()
__________________
Не стыдно спросить, стыдно не знать ! |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|