![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2011
Сообщений: 117
|
Да простят меня админы, создаю еще одну тему.
Задача следующая, есть спрайт, который постоянно движется и вращается. У нас есть таймер, к нему привязана функция которая через определенные промежутки времени вызывает вращение спрайта а затем перемещение. Все. Проблема в том, что спрайт отлично вращается если мы не задаем никакую скорость по x и y осям. Или если нет вращения, то отлично передвигается. Но если спрайту нужно передвинуться и повернуться во время движения, тут он начинает неадекватно двигаться. На форуме добрые люди помогли разобраться с вращением, оно выглядит так : public function rotateAroundCenter(object:DisplayObject, angle:Number):void { var center : Point = new Point(X,Y) ; angle += object.rotation; var a0:Number = - object.rotation * Math.PI / 180; var s0:Number = Math.sin(a0); var c0:Number = Math.cos(a0); var dX0:Number = object.x - center.x; var dY0:Number = object.y - center.y; object.rotation = 0; object.x = Math.round(center.x + dX0 * c0 - dY0 * s0); object.y = Math.round(center.y + dX0 * s0 + dY0 * c0); // new rotation var r:Number = angle * Math.PI / 180; var s:Number = Math.sin(r); var c:Number = Math.cos(r); var dX:Number = object.x - center.x; var dY:Number = object.y - center.y; object.rotation += angle; object.x = center.x + dX * c - dY * s; object.y = center.y + dX * s + dY * c; trace("object.x,object.y=",object.x,object.y) ; } Движение получается кривым. тут скорость по X и Y 1 и угловая скорость равна 1, а во втором случае просто вращаем тело, все работает. Гуглил, не очень помогло,буду еще гуглить, может кто-то сталкивался с похожей проблемой. Заранее спасибо! Последний раз редактировалось Bazel; 12.08.2015 в 15:05. |
![]() |
Часовой пояс GMT +4, время: 01:09. |
|
|
« Предыдущая тема | Следующая тема » |
|
|