首页 > 解决方案 > HTML 画布上的对象移动,小行星

问题描述

这更像是一个运动物理问题。但是我有一个小错误,我无法在我正在制作的小行星游戏中弄清楚。对于我的船,我有一个推力功能,当你按下向上箭头时会激活它:

let rotationAngle = 0;

function thrust() {
  velocity[0] += Math.cos(rotationAngle);
  velocity[1] += Math.sin(rotationAngle);
}

据说这应该使船向前移动。在我的游戏循环中调用的更新函数是:

function update() {
  spec.center.x += velocity[0] * .1;
  spec.center.y += velocity[1] * .1; //.1 is the acceleration
  if (spec.center.x > MyGame.graphics.canvas.width) spec.center.x = 0; //wrapping
  if (spec.center.x < 0) spec.center.x = MyGame.graphics.canvas.width;
  if (spec.center.y > MyGame.graphics.canvas.height) spec.center.y = 0;
  if (spec.center.y < 0) spec.center.y = MyGame.graphics.canvas.height;
}

它使得当推力按钮被释放时船将保持漂浮。这一切似乎工作正常,除了它不是向上移动,而是向右移动,即,如果我按下推力按钮使其向前移动,它会向侧面移动。

我在这里错过了一些简单的东西吗?如果我需要提供有关渲染的更多详细信息,我会很乐意这样做。

谢谢。

标签: javascripthtml5-canvas

解决方案


推荐阅读