PDA

Просмотр полной версии : Движение персонажа


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

Hauts
12.01.2010, 18:30
http://xitri.com/2008/09/29/simple-engine-flash-game-top-view-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
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
Смотрите здесь (http://xitri.com/2009/12/31/uafpug2009-platform-engine-source.html), как организовать персонажа. На третьем кадре презентации все хорошо показано.