Просмотр полной версии : плавная наведение пушки
zhdanoff
19.12.2013, 10:36
вот тут (http://xitri.com/2009/02/27/vospominaniya-o-crimsonland-2-navedenie-na-cel.html) есть пример, но по-моему он на AS2.0, пробовал перенести в AS3 не получается, вот мой код:
var stvol:Stvol=new Stvol(); //добавляем ружье
var angle:Number=0;
stvol.x = 275;
stvol.y = 500;
addChild (stvol);
addEventListener(Event.ENTER_FRAME, stmous);
function stmous(e:Event):void{
angle = int(Math.atan2(stage.mouseY - 500, stage.mouseX - 275) * 180 / Math.PI);
stvol.rotation = angle;
}
Добавлено через 3 минуты
PS: в том примере готовый вариант внизу показан
Задайте конкретный вопрос, иначе не понятно чем вообще помогать.
zhdanoff
19.12.2013, 13:07
перейдите по ссылке, там в конце страницы пример как мне надо, плавное движение объекта, за курсором, который привязан к координатам, типа ствол двигает за курсором мышки
По ссылке, тот код, что отвечает за медленный поворот сторону мыши вот -
rotToMouseSpeed = 3;//скорость поворота
function onEnterFrame() {
mDx = _xmouse - body._x;
mDy = _ymouse - body._y;
mAngle = Math.atan2(mDy, mDx);
//получаем угол между мышкой и башней в градусах
mAngleD = mAngle / Math.PI * 180;
//сколько градусов нехватает для полного поворота на мышь
dAngleD = body._rotation - mAngleD;
//без этой проверки башня будет неправильно крутиться
//при переходе границы -180 и +180 градусов
if (dAngleD > 180) {
dAngleD = -360 + dAngleD;
} else if (dAngleD < -180) {
dAngleD = 360 + dAngleD;
}
//поворачиваем башню с нашей скоростью
if(Math.abs(dAngleD) < rotToMouseSpeed) {
body._rotation -= dAngleD;
} else if(dAngleD > 0) {
body._rotation -= rotToMouseSpeed;
} else {
body._rotation += rotToMouseSpeed;
}
}
А вашей реализации для as3, нет и намёка о проверках поворота и т.д.
zhdanoff
19.12.2013, 14:04
да уже получилось, спасибо
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.