Форум 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=134944)

gauss 12.01.2010 18:21

Движение персонажа
 
Люди, помогите пожалуйста!
Делаю небольшую игру. В центре рабочего поля находится персонаж. При щелчке мышкой в любую точку поля персонаж оказывается там. Как сделать чтобы было видно, что он именно перемещается туда, причём с постоянной скоростью. :confused:

Hauts 12.01.2010 18:30

http://xitri.com/2008/09/29/simple-e...iew-part2.html

плюс еще обход препятствий.

gauss 12.01.2010 18:40

Наверно, умная вещь.
Но это слишком сложно... для такого пользователя, как я

Hauts 12.01.2010 18:43

Хорошо. Вам нужно просто двигать персонажа в сторону мышки, когда щелкнули? Сейчас подумаю.

gauss 12.01.2010 18:46

Так и есть

Hauts 12.01.2010 18:52

Код AS1/AS2:

var posX;
var posY;
var step = 3
this.onMouseDown = function() {
        posX = this._xmouse;
        posY = this._ymouse;
};
this.onEnterFrame = function () {
        var dx = posX-player._x;
        var dy = posY-player._y;
        var angle = Math.atan2(dy, dx);
        var dist = Math.sqrt(dx*dx+dy*dy);
        if (dist>step) {
                tgtX = player._x+step*Math.cos(angle);
                tgtY = player._y+step*Math.sin(angle);
                var timeDx = tgtX-player._x;
                var timeDy = tgtY-player._y;
                direction = Math.atan2(timeDy, timeDx);
                var dAngle = dAngleDegree(direction*180/Math.PI, player._rotation);
                player._rotation += dAngle*.2;
                player._x = tgtX;
                player._y = tgtY;
        }
};
function dAngleRadian(a1, a2) {
        var da = a1-a2;
        if (da>Math.PI) {
                da = -Math.PI*2+da;
        } else if (da<-Math.PI) {
                da = Math.PI*2+da;
        }
        return da;
}
function dAngleDegree(a1, a2) {
        var da = a1-a2;
        if (da>180) {
                da = -360+da;
        } else if (da<-180) {
                da = 360+da;
        }
        return da;
}
function degree(a) {
        return a/Math.PI*180;
}
function radian(a) {
        return a/180*Math.PI;
}

— это в кадр вставляйте. На сцене должен быть клип с instance name "player".

Или вам нужно еще проще?

gauss 12.01.2010 18:56

Да нет, проще не надо, всё-таки я не такой глупый!
Только хочу узнать 2 вещи:
Какие коды отвечают за вращение и за замедление?

Добавлено через 30 секунд
Про вращение узнал сам

Добавлено через 1 минуту
А заодно и про замедление!
И в кого я такой умный?
Большое спасибо!

Добавлено через 45 часов 32 минуты
Добрый день!
Хочу спросить про ещё одну вещь в этой же теме:
Персонаж двигается в сторону мыши, всё нормально.
Но ещё нужно, чтобы в момент, когда он двигается, проигрывалась анимация движения, т. е. клип с персонажем переходил к другому кадру, например. А когда он закончит движение, анимация должна возвращаться в нач. состояние...
Как это сделать?

boris1029 21.01.2010 19:43

добавь в код условие, при котором будет player.gotoAndPlay(...);

Hauts 21.01.2010 20:32

Смотрите здесь, как организовать персонажа. На третьем кадре презентации все хорошо показано.


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

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