Загрузка страницы...

Информация

Обсуждало 3 человека

Проблемы с вращением

Логика и программирование
26 января 2012 в 21:04:29

Хочу сделать замедленный поворот объекта на заданный угол
var dr:Number = _rotation - rotation; if(dr/10 < 1){ rotation = _rotation; }else { rotation += dr / 10; }


_rotation - это заданный угол. Если задать угол поворота 90, то все нормально. Если указываю больше 180, то объект начинает вращаться как юла. Пробовал разные варианты, но не помогает.

Обсуждение (вниз)

Не хватает только вашего мнения. Зарегистрируйтесь, чтобы написать!

27 января 2012 в 22:49:47

Пожалуйста

27 января 2012 в 21:03:33

Спасибо, эта статья помогла!!!

26 января 2012 в 23:22:53

Там нужно просто делать проверку. Вот конкретное решение http://xitri.com/2009/02/27/vospominaniya-o-crimsonland-2-navedenie-na-cel.html#more-136

26 января 2012 в 23:20:23

если присвоить скорость 10, то объект будет всегда вращаться по часовой. Но это не всегда правильно. Если допустим у объекта rotation = -270, а мне нужно повернуть на угол 180, то он будет вращаться по часовой. Хотя правильней против, так быстрее.

26 января 2012 в 23:14:55

Почему ты не используешь rotation += 10; например, а присваиваешь новый угол? rotation = _rotation; ?

26 января 2012 в 22:50:30

Да, знаю что в градусах они от -180 до 180. ПоларисФ, ну а я что по твоему делаю?

26 января 2012 в 22:41:24

Ты тут какую-то тупость ваще делаешь, тебе нужно просто определить нужный угол и поворачивать на него мувик с нужной скоростью, а не извращаться с новым положение угла.

26 января 2012 в 22:40:46

Glega, во флэше углы от -180 до 180, учитывай это... :)

26 января 2012 в 22:06:38

PolarisF, _rotation - не скорость вращения, а угол на который нужно повернуть. Т.е. если я укажу его 90, то у объекта rotation должна быть 90

26 января 2012 в 22:04:35

var rt:Number = 0; if (rotation < 0) { rt = 360 + rotation; } else { rt = rotation; } //rt = (rt / 180) * Math.PI; var angle:Number = (rotation / 180) * Math.PI; var dr:Number = _rotation - rt; if(dr/10 < 1){ rotation = _rotation; }else { rotation += dr / 10; }


Вроде такой вариант работает, но при задании _rotation = 360, объект начинает вращаться.

26 января 2012 в 22:04:03

Почему бы не сделать скорость вращения не 180 а 10?

26 января 2012 в 21:55:29

Тебе будет счастье, если ты найдешь в Интернете функции таймера для AS3. По-моему, есть тип переменных Timer. Просто я не очень в AS3. Ко мне, с вопросами по PHP, CSS и HTML. Можешь еще посмотреть функции цикла. Идея в том, чтобы сделать таймер, который будет каждые 50 миллисекунд поварачивать объект на 0,5-2 градуса, пока не дойдет до нужного угла. Ну я говорю примерные значения.

26 января 2012 в 21:43:50

то, что он поворачивается ненормально

26 января 2012 в 21:11:02

И в чем проблема то?
Fundux.ru v.3.0 © 2006-2012 AleXNoD
Портал русских флеш игр и flash мультов
Яндекс.Метрика