Информация

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

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

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

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


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

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

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

14 мая 2013 в 08:32:50

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

13 мая 2013 в 21:50:54

Ладно, твое дело.

13 мая 2013 в 21:43:00

Денис, мне не нужен был опыт, я просто хотел решить проблему.

13 мая 2013 в 21:41:17

Он нашел решение проблемы, и это главное! Если бы я просил помогите решить проблему с вращением, только с других сайтов не выкладывать!!! Иначе не приму такую помощь... Тогда бы твой пост был бы уместен

Ну по моему лучше делится собственным опытом.

13 мая 2013 в 21:39:02

Я прочитал Проблемы с извращением.

P.S. Надеюсь краш не напишет снова что он так и думал что я так напишу

13 мая 2013 в 21:36:10

Он нашел решение проблемы, и это главное! Если бы я просил помогите решить проблему с вращением, только с других сайтов не выкладывать!!! Иначе не приму такую помощь... Тогда бы твой пост был бы уместен

13 мая 2013 в 21:28:05

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

PolarisF , ты просто вбил в поиск и выложил чье-то решение?

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-2021 AleXNoD
Портал русских флеш игр и flash мультов