Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   управление мувиком (http://www.flasher.ru/forum/showthread.php?t=132761)

Wadimir 19.11.2009 18:19

управление мувиком
 
Добрый день!

У меня не получается сделать такое управление мувиком:
Есть кнопки вперёд и поворот. Нажимаем на кнопку вперёд, мувик двигается вперёд, нажимаем на кнопку поворот-мувик поворачивается на определённый градус. Нажимаем опять вперёд и мувик двигается но уже в ту сторону в которую повернулся.

Вот мой код в котором при повороте он продолжает двигаться не взирая на поворот

Код AS1/AS2:

speed=5;
vperod.onPress = function  () {
        bk._y-=speed;
}
 
povorot.onPress = function  () {
                bk._rotation -=speed;
}


mooncar 19.11.2009 18:32

Указанный код работает верно - при движении "вперед" у вас по-прежнему продолжает наращиваться координата Y. Поворот же никак не учитывается.

Wadimir 19.11.2009 19:17

А как сделать чтоб поворот учитывался?

jony_e 20.11.2009 19:43

тут уже нужно по формуле высчитывать. потому что мувику придется после поворота двигаться уже по диагонали. почитайте про синус(косинус) в прямоугольном треугольнике между гипотенузой и катетом :) этот угол-это начальная координата по Х и по Y. длинна прилегающего катета это длина по Х, а длина противоположного катета-это днина по Y. Тоесть если вам известен угол и длинна катета(тоесть длинна по Х) то можно вычеслить длинну другого катета и таким образом значение по Y. :)
Есть треугольник ABC угол ACB-прямой(90градусов), нам известен угол между BAC и длинна AC нужно найти длинну катета BC(это и будет координата по Y)

вот небольшая демонстрация, если мы поворачиваем объект на 45 градусов, то катеты соответственно равны и их значения =5
Код AS1/AS2:

var oy:Number=5;
var ox:Number=0;
 
vperod.onPress = function  () {
        bk._y-=oy;
        bk._x-=ox;
}
 
povorot.onPress = function  () {
                bk._rotation =45;
                ox=5;
}


Wadimir 21.11.2009 01:08

А если повторно нажать на поворот. Как тогда быть?

fessor 21.11.2009 16:48

предлагаю реализовать все без тригонометрии ))
два мувика один вложеный в другой;
первый поворачиваем, другой двигаем
при повороте ставим едущий мувик в исходное положение (запоминаем смещение), а поворачивающийся смещаем в обратную сторону, и начинаем двигать снова

Wadimir 21.11.2009 16:58

а если нужно чтоб поворачивался от 5 до 360 до 72 мувика надо?

mooncar 21.11.2009 17:58

Цитата:

Сообщение от fessor (Сообщение 867324)
предлагаю реализовать все без тригонометрии ))
два мувика один вложеный в другой;
первый поворачиваем, другой двигаем
при повороте ставим едущий мувик в исходное положение (запоминаем смещение), а поворачивающийся смещаем в обратную сторону, и начинаем двигать снова

А как компенсировать смещение одного вложенного мувика относительно точки регистрации другого? Попробуйте реализовать то, о чем вы говорите, и поймете, о чем я.

veles2008 22.11.2009 12:21

Код AS1/AS2:

speed=0;
onEnterFrame=function() { 
vperod.onPress = function  () {
speed =5;
}
povorot.onPress = function  () {
bk._rotation -=5;
}
bk._x+=speed*(Math.sin(0.0175*bk._rotation));
bk._y+=speed*(Math.cos(0.0175*bk._rotation)); 
speed*=0;
}


Wadimir 23.11.2009 12:10

Огромное спасибо!


Часовой пояс GMT +4, время: 18:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.