Я создал игру-змейку в Phaser, но есть небольшая проблема:CSS

Разбираемся в CSS
Ответить
Anonymous
 Я создал игру-змейку в Phaser, но есть небольшая проблема:

Сообщение Anonymous »

Когда змея движется, создается впечатление, что она «прыгает», а не движется плавно. Как это исправить?
Ниже приведены некоторые функции, которые я реализовал для своей игры Phaser Snake: обновление, перемещение, установкаBodyPartTexture и рост

Код: Выделить всё

update(time) {
if (time >= this.moveTime && this.gameStarted) {
this.keyLock = false;
if (this.moveEvents.length > 0) {
this.direction = this.moveEvents.shift();
}
this.move();
this.moveTime = time + this.speed;
return true;
}
return false;
}

move() {
let oldHeadPosition = { x: this.snakeHead.x, y: this.snakeHead.y };
this.directions.unshift(this.direction.clone());
this.snakeHead.x += this.direction.x * this.bodyPartLength;
this.snakeHead.y += this.direction.y * this.bodyPartLength;

if (this.snakeHead.x > this.scene.game.config.width || this.snakeHead.x < 0 || this.snakeHead.y > this.scene.game.config.height || this.snakeHead.y < 0) {
return;
}

for (let i = 1; i < this.body.length; i++) {
let oldBodyPosition = { x: this.body[i].x, y: this.body[i].y };
let oldBodyDirection = this.directions[i];
this.body[i].x = oldHeadPosition.x;
this.body[i].y = oldHeadPosition.y;
oldHeadPosition = oldBodyPosition;
this.setBodyPartTexture(i, oldBodyDirection);
}
this.setTailTexture();
if (this.positions.length > this.body.length * this.bodyPartLength) {
this.positions.pop();
this.directions.pop();
}
this.moveTime = this.scene.time.now + this.speed;
}

setBodyPartTexture(i, oldBodyDirection) {
if (!oldBodyDirection.equals(this.directions[i - 1])) {
let prevDirection = `${this.directions[i - 1].x},${this.directions[i - 1].y}`;
let currDirection = `${oldBodyDirection.x},${oldBodyDirection.y}`;
let textureMap = {
"1,0,0,-1": "bodyUpRight",
"0,1,-1,0": "bodyUpRight",
"-1,0,0,1": "bodyRightUp",
"0,-1,1,0": "bodyRightUp",
"0,1,1,0": "bodyRightDown",
"-1,0,0,-1": "bodyRightDown",
"0,-1,-1,0": "bodyDownRight",
"1,0,0,1": "bodyDownRight",
};
let directionKey = `${prevDirection},${currDirection}`;
this.body[i].setTexture(textureMap[directionKey]);
} else {
if (oldBodyDirection.y != 0) {
this.body[i].setTexture("bodyVertical");
} else {
this.body[i].setTexture("bodyHorizontal");
}
}
}

grow() {
let newPart = this.scene.physics.add.sprite(-1 * this.bodyPartLength, -1 * this.bodyPartLength, "tailRight");
this.scene.physics.add.collider(this.snakeHead, newPart, this.endGame, null, this.scene.snake);

this.bodyParts.push(newPart);
this.body.push(newPart);

this.eat.play();
score++;
scoreNumber.innerHTML = score;
if (score > highScore) {
highScore = score;
document.querySelector("#high-score p").innerHTML = highScore;
document.getElementById("highScoreNumber").innerHTML = highScore;
}
}

Это функции, которые я использую. Однако у меня возникла проблема: когда змея движется, кажется, что она «прыгает», а не движется плавно. Может ли кто-нибудь помочь мне решить эту проблему?
Как вы можете видеть из этого видео, я столкнулся с этой проблемой.
https://www.awesomescreenshot.com/video/ 33408786?key=90beb12f2ca0ed729a0133a2b7ad36a6
Я постарался сделать движение змеи более плавным, чтобы она двигалась плавно, а не «прыгала».
Я сделала это. пробовал использовать deltaTime, скорость и метод Tween, но не нашел решения.

Подробнее здесь: https://stackoverflow.com/questions/791 ... inor-issue
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «CSS»