java - 如何通过坐标使物体从一点移动到另一点?

标签 java 2d

我目前有一个 2d 游戏,我正在尝试按照特定坐标移动 .png 图像。如果我将该对象放置在 (0,0) 处,然后尝试移动到 (500,500),我可以执行以下操作:

public void move() {
    if (x < 500) {
        x += velocityX;
    }
    if (y < 500) {
        y += velocityY;
    }
}

这可行,但只是因为它是一条完美的对角线。使用该系统,我只能水平、垂直或对角移动对象,而不能在两者之间移动。如果我尝试这样的事情:

public void move() {
    if (x < 500) {
        x += velocityX;
    }
    if (y < 400) {
        y += velocityY;
    }
}

对象只会以完美的对角线移动,直到 y 轴达到 400 度为止,它会水平移动最后一点,直到 x 轴上达到 500 度。我该如何做才能将对象移动到任何坐标,同时沿着直线路径移动?

最佳答案

要在窗口中完美地对角移动,您必须确保 velocityX 和velocityY` 的比率应如下所示,

 velocityX         width
-----------  =  -----------
 velocityY         height

在您的情况下,如果宽度为500,高度为400,如果velocityX为5,则

 velocityY should be 4

关于java - 如何通过坐标使物体从一点移动到另一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923597/

相关文章:

java - 如何使用Java通过MM4发送彩信?

java - Java 中的寻的导弹行为

java - 我们可以一起使用prepareRenderer组件和自定义单元格渲染器吗?

Java注释处理-如何处理已经处理过的代码?

ios - SpriteKit - 对象内部的播放器

android - 将 RayCasting 用于 2D 游戏

c++ - (SFML)按下键时播放器构造函数未更新为正确的动画

algorithm - 定位边界2D实体

java - java中的UDP、数据报和声音

java - 在这方面,Future 和 Completable future 有什么区别?