Triborg-333
@Triborg-333

Как сделать плавное движение танка?

Здравствуйте, программисты !) как сделать плавное движение танка в игре ?)

spoiler
sU5gB54.png


window.addEventListener(`keydown`, (event) => {
const keyCode = event.keyCode || event.which;
switch(keyCode) {
case 40: {
thank_settings[i].y+= 35;
} break;
case 38: {
thank_settings[i].y-= 35;
} break;
case 37: {
thank_settings[i].x-= 35;
} break;
case 39: {
thank_settings[i].x+= 35;
} break;
}

});
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
Andrew_Pinkerton
@Andrew_Pinkerton
jsfiddle.net/loktar/dMYvG

spoiler
var canvas = document.getElementById("canvas"),
    ctx = canvas.getContext("2d");

canvas.width = canvas.height = 300;

var x = 150,
    y = 150,
    velY = 0,
    velX = 0,
    speed = 2,
    friction = 0.98,
    keys = [];

function update() {
    requestAnimationFrame(update);
    
    if (keys[38]) {
        if (velY > -speed) {
            velY--;
        }
    }
    
    if (keys[40]) {
        if (velY < speed) {
            velY++;
        }
    }
    if (keys[39]) {
        if (velX < speed) {
            velX++;
        }
    }
    if (keys[37]) {
        if (velX > -speed) {
            velX--;
        }
    }

    velY *= friction;
    y += velY;
    velX *= friction;
    x += velX;

    if (x >= 295) {
        x = 295;
    } else if (x <= 5) {
        x = 5;
    }

    if (y > 295) {
        y = 295;
    } else if (y <= 5) {
        y = 5;
    }

    ctx.clearRect(0, 0, 300, 300);
    ctx.beginPath();
    ctx.arc(x, y, 5, 0, Math.PI * 2);
    ctx.fill();
}

update();

document.body.addEventListener("keydown", function (e) {
    keys[e.keyCode] = true;
});
document.body.addEventListener("keyup", function (e) {
    keys[e.keyCode] = false;
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Сайтсофт Екатеринбург
от 50 000 руб.
от 50 000 руб.
Sveak Барнаул
от 50 000 руб.
21 янв. 2020, в 13:30
6000 руб./за проект
21 янв. 2020, в 13:22
3000 руб./за проект
21 янв. 2020, в 13:05
700 руб./за проект