当前位置: 首页 > 知识库问答 >
问题:

场景2D中的Lib gdx和自定义演员

芮明知
2023-03-14

我是libgdx的新手,很享受它为我提供的学习。

我目前正在创建一些自定义演员(扩展演员类),并在屏幕上移动他们。

我的问题是,当使用setX()、setY()移动参与者时,如何使用作为act方法参数提供的传入浮点增量来正确缩放它?

实例

@Override
public void act(float delta) {

    if (wasTouched) {

        setY(getY() - .5f);
    }
}

我怎样才能正确地用增量来缩放运动?在libgdx Actor类中是否有用于此的内置函数?

共有1个答案

方航
2023-03-14

没有内置的功能。我不知道你的更新方法是什么样子的,所以我不知道被触摸是否会在手指按住的每一帧都是真的。

但是如果你想在手指按住物体的同时以一定的速度移动物体,那么首先你需要有一个理想的速度。它可以是恒定的,比如

private static final float SPEED_WHEN_TOUCHED = 5.0f; //in viewport units per second

或者它可能是随时间变化的某个变量,但无论哪种方式,它都应该以每秒的视口(世界)单位为单位。

然后,当你想以这个速度移动某个物体时,你将这个速度乘以delta时间(以秒为单位),得到你想要的运动量。

@Override
public void act(float delta) {
    if (wasTouched) {
        y += SPEED_WHEN_TOUCHED * delta;
        positionChanged();
    }
}
 类似资料:
  • 所以,我正在开发一个flappy bird克隆。我设计了一个按钮,可以让鸟弹跳。我还想为这个按钮画一些东西(在这一点上完全不相关)。但不是每次按下按钮时。我已经试过了: 但这就是我现在想要的。我特别想在第一次按下按钮时画一些东西。我希望你能理解我的问题。谢谢你的帮助。

  • 我对游戏编程相当陌生,刚刚开始考虑用libgdx构建我的第一个2d游戏。我已经搭建了一个舞台,演员们被吸引到屏幕上,通过动作、寻路等等。但是,当我创建几个阶段时,对于“Stage”类的用法,我有点困惑。最好的解决方案是只为所有扩展Stage的每个级别创建类,还是不需要,最好的解决方案是为每个级别创建类,并在其中包含一个Stage对象?希望这个问题不要太混乱,提前谢谢!

  • 我通过扩展现有控件创建了一个新控件,我希望在JavaFX场景中使用这个新控件。我希望能够使用Scene Builder编辑我的场景,但在将新控件添加到FXML文件后,我在打开Scene Builder时遇到。 例如,下面是我创建的一个类,它扩展了: 将此控件添加到FXML文件后... 为什么Scene Builder找不到我的新控件?我需要做什么才能让它找到并能够使用我的新控件? 如果需要,下面是

  • 当演员在另一个班级时,我很难让MoveToAction在演员身上工作(menuBackground)。我在下面附上了相关代码——这根本不会让演员动起来。 我成功地将其他操作应用于MainMenuScreen类中的根阶段,以及MainMenuScreen类中的其他参与者(按钮),但没有成功地将操作应用于单独类中的参与者。 我尝试过将MoveToAction放在Menubackground类中的act

  • 我正在开发一个Android游戏,使用Eclipse中的libGDX。我想加快我的场景(跑步机),每当一个球员得了10分。跑步机的初始速度等于0,每10分累加5。当角色掉出屏幕时,玩家就输掉了游戏。有人知道怎么做吗?

  • 我有个小问题。我在一个博客上看到,你必须从一个自定义组件创建一个.jar并将该文件加载到scene builder中,但是在我的项目中,所有的自定义组件都在主项目中,难道我必须从项目中创建一个.jar并导入它吗,因为这看起来很奇怪。非常感谢。