【问题标题】:Making an object move up and down (Javascript)使对象上下移动(Javascript)
【发布时间】:2016-05-27 22:29:42
【问题描述】:

我正在制作一个横向卷轴游戏,其中一个主要精灵在屏幕上移动,并且必须通过跳跃来躲避障碍。我已经制作了固定障碍物,但我需要帮助制作移动障碍物来回移动。我该怎么做? 现在我有这个 if else 语句,它向上移动一个对象,当它到达某个点时,它的坐标重新回到它的原始位置。

if (movesquare1 > 20) {
movesquare1 -= 2; 
movesquare2 -= 2;
}
else {
movesquare1 = 145;
movesquare2 = 195;
}

movesquare1 是函数中的一个变量,用于制作障碍物(正方形)。 movesquare2 是一个变量,因此当主精灵接触到移动的障碍物时,碰撞系统会记录位置的变化。

 (positionX > (439 - backgroundPositionX) && positionX < (492 - backgroundPositionX) && positionY > movesquare1 && positionY < movesquare2)

The full game and code

【问题讨论】:

  • 欢迎来到 SO。请阅读How to Ask。你会发现很难获得帮助,因为你的问题(特别是代码位)太大了。您能否编写一段最少(即更小)的代码,向我们展示您想要什么以及您的问题是什么?

标签: javascript


【解决方案1】:

您可以使用 math.sin 函数。将您的值放在 0..1 之间,然后对其进行缩放。

【讨论】:

  • 谢谢!我会试试看。
【解决方案2】:

1) 这不是一个与 JavaScript 相关的问题,因为您可以在所有可用于创建游戏的语言中遇到此问题。

2) 我的回答 - 作为介绍:http://www.gamedev.net/page/resources/_/technical/math-and-physics/practical-use-of-vector-math-in-games-r2968。通过从原始像素/坐标计算转向矢量数学抽象,您将获得一个非常灵活、经过验证且方便的工具,用于处理 2D/3D 中的移动对象

3) 阅读一些关于 gamedev 的书籍(例如“游戏开发者的人工智能”)

【讨论】:

  • 谢谢!我刚刚开始编程,所以我会看看我是否能理解并实现教程中的内容。
【解决方案3】:

您可能希望在游戏循环中引入时间变量,并根据当前帧和前一帧之间的时间差更新可移动对象的位置。

然后您可以根据时间确定可移动方块的位置。

为了快速实验,试试这个:

var t = new Date().getTime();
movesquare1 = Math.sin(t / 200) * 50 + 100;

我建议您通读许多不错的 HTML5 游戏教程之一,这些教程解释了诸如抽象(使您的游戏对象继承通用功能)、碰撞检测(以固定帧速率运行碰撞检测等概念,无论帧速率如何)您的渲染器,以避免在两帧之间移动“通过”移动对象的路径)等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2021-06-15
    • 2014-03-11
    • 2018-04-07
    • 1970-01-01
    相关资源
    最近更新 更多