Просмотр полной версии : машина не едет!!
Почему не едет моя машинка??! Что не так в этом коде? Поместил его в тот-же кадр, где и она сама находится.... машину зовут mc ...
Flash 2004
var xSpeed = 0;
var ySpeed = 0;
var speedUp = 0.5;
var accelerate = 1;
var decay=0.9;
var maxspeed=25;
mc._rotation=0;
mc.onEnterFrame=function () {
if (key.isDown (Key.SPACE)) accelerate+=1;
else accelerate*=1-decay;
if (accelerate<1) accelerate=1;
if(Key.isDown (Key.LEFT)) xSpeed-=speedUp*accelerate;
else if (Key.isDown (Key.RIGHT)) xSpeed+=speedUp*accelerate;
else xSpeed*=decay;
if(Key.isDown(Key.UP)) ySpeed+=speedUp*accelerate;
else if(Key.isDown (Key.DOWN)) ySpeed+=speedUp*accelerate;
else ySpeed*=decay;
var speed=Math.sqrt(xSpeed*xSpeed+ySpeed*ySpeed);
if (speed>=maxSpeed) {
trace(Math.sqrt(xSpeed*xSpeed+ySpeed*ySpeed));
xSpeed*=maxSpeed/speed;
ySpeed*=maxSpeed/speed;
}
mc._x+=xSpeed;
mc._y+=ySpeed;
mc._rotation = Math.atan2 (ySpeed, xSpeed) / (Math.PI/180)
if(mc._x>Stage.width) mc._x=0;
if (mc._x<0) mc._x=550;
if(mc._y>Stage.height) mc._y=.0;
if (mc._y<0) mc._y=400;
}
shaltay, оформите код в своем посте тегами .
if (speed>maxSpeed) {
trace(Math.sqrt(xSpeed*xSpeed+ySpeed*ySpeed));
xSpeed *= maxSpeed/speed;
ySpeed *= maxSpeed/speed;
}
Было деление на 0, после 1 застоя. Так едет, правда криво :)
Molecula
23.05.2007, 22:04
После поправок CorC-а едет.
+ мувик надо в центр ставить.
//////////////////////////////////
/////создаём машинку =)///////////
//////////////////////////////////
this.createEmptyMovieClip("mc", 1);//здесь мы создаенм муви-клип оболочку, это не так обязательно просто изврат =) вы можете использовать свой обьект нарисованный в мувике дав ему на сцене имя //"mc"
with (this.mc) {//здесь мы рисуем то что будет в нашей оболочке муви-клипе с именем "mc"
lineStyle(2, 0x000000, 100);
beginFill(0x6633CC);
moveTo(-25, -25);
lineTo(-25, -25);
lineTo(25, -25);
lineTo(25, 25);
lineTo(-25, 25);
endFill();
}
///////////////////////////////////
///////задаем координаты на поле///
///////////////////////////////////
this.mc._x = 275;//здесь задаем первоначальные координаты расположения на по оси икс
this.mc._y = 200;//здесь по игрику
this.mc._rotation = -90;//этой командой мы задаем поворот нашей манинки если мы этого несделаем то она может ездить боком =) если машинка нарисована не програмно это необязательно развернуть можно вручную
////////////////////////////////////
////////задаём управление///////////
////////////////////////////////////
this.mc.onEnterFrame = function() {//этим мы создаем блок в котором будем писать команды которые будет выполнять наша машинка
if (Key.isDown(Key.RIGHT)) {//этой командой мы крутим машинку вправо
this._rotation += 3;//_rotation значит вращать
}
if (Key.isDown(Key.LEFT)) {//этой командай задаем поворот влево
this._rotation -= 3;
}
if (Key.isDown(Key.UP)) {//задаем движение вперед
this._y += 4*Math.sin(this._rotation*(Math.PI/180));//вычисляем синус
this._x += 4*Math.cos(this._rotation*(Math.PI/180));//вычисляем косинус угла поворота машинки переводя его в радианы,так же обратите внимание число 4 отвечает за величену радиуса поворота тоесть тем выше число тем больше радиус
}
if (Key.isDown(Key.DOWN)) {//задаем движение назад при этом скорость уменьшаем в 2 раза
this._y -= (4*Math.sin(this._rotation*(Math.PI/180)))/2;
this._x -= (4*Math.cos(this._rotation*(Math.PI/180)))/2;
}
};
или
grad = 0;
speed = 0;
//=====================
this.onEnterFrame = function() {
if ((up == "1") and (speed<50)) {
if (speed>=0) {
speed += 5/(1+speed);
}
if (speed<0) {
speed += 1;
}
}
if ((up == "2") and (speed>0)) {
if (speed>=0.25) {
speed -= 0.25;
}
if (speed<0.25) {
speed = 0;
}
}
if ((down == "1") and (speed>-20)) {
if (speed>0) {
speed -= 1.5;
}
if (speed<=0) {
speed -= 0.5;
}
}
if ((down == "2") and (speed<0)) {
if (speed<=-0.25) {
speed += 0.25;
}
if (speed>-0.25) {
speed = 0;
}
}
if ((left == "1") and (speed>0)) {
grad -= speed/2;
}
if ((right == "1") and (speed>0)) {
grad += speed/2;
}
if ((left == "1") and (speed<0)) {
grad -= speed/2;
}
if ((right == "1") and (speed<0)) {
grad += speed/2;
}
x = Math.cos((grad+90)*3.14/180)*speed;
y = Math.sin((grad+90)*3.14/180)*speed;
setProperty("/ta4ka", _x, getProperty("/ta4ka", _x)-x);
setProperty("/ta4ka", _y, getProperty("/ta4ka", _y)-y);
setProperty("/ta4ka", _rotation, grad);
if (speed>0) {
t_grad = 208+speed*6;
setProperty("/ta4ka/ta4ka_dop", _height, 132-speed*39.6/50);
setProperty("/ta4ka/ta4ka_dop", _width, 78-speed*23.4/50);
}
if (speed<0) {
t_grad = 208-speed*6;
setProperty("/ta4ka/ta4ka_dop", _height, 132+speed*39.6/50);
setProperty("/ta4ka/ta4ka_dop", _width, 78+speed*23.4/50);
}
// =============== left =======================
if (Key.isDown(Key.LEFT)) {
left = "1";
}
if (not (Key.isDown(Key.LEFT))) {
left = "2";
}
// ================== right ============================
if (Key.isDown(Key.RIGHT)) {
right = "1";
}
if (not (Key.isDown(Key.RIGHT))) {
right = "2";
}
// ===================== up =====================
if (Key.isDown(Key.UP)) {
up = "1";
}
if (not (Key.isDown(Key.UP))) {
up = "2";
}
// ====================== down =====================
if (Key.isDown(Key.DOWN)) {
down = "1";
}
if (not (Key.isDown(Key.DOWN))) {
down = "2";
}
};
все равно не едет....
Неправда, посмотрите внимательно что я поменял.
D12, второй код сжечь!!!....а в первый мона еще и дрифт добавить;)
motor4ik
24.05.2007, 17:00
D12 чето она назад поворачивает неправильно, маршрутка так не издит брат )))
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.