是否有“如果(X 增加)”功能

本文关键字:增加 功能 如果 是否 | 更新日期: 2023-09-27 18:33:56

我正在用XNA做一个游戏。我已经准备好了我的相机,我的背景和我的滚动课程。

我所缺少的只是告诉滚动在相机位置发生变化时工作。有没有这方面的声明?

喜欢:

if (cameraposition.X ""Increases"")
{
    Scrolling.Update()
}

谢谢。

是否有“如果(X 增加)”功能

您必须跟踪旧的相机位置,看看它是否发生变化。所以你的如果将是:

if(cameraPosition.X != oldCameraPosition.X)

在每一帧的末尾,您希望更新 oldCameraPosition 变量,如下所示:

oldCameraPosition = cameraPosition;

两个位置之间的差异通常称为增量或速度。现在,对于滚动,您可以使用相机 Delta 调用更新,因此您可以滚动相同(或修改的数量)。例如:

//In Camera.cs
Scrolling.Update(oldCameraPosition - cameraPosition);
//In your scrolling class
void Update(Vector3 offset)
{
 background.Position += offset * .5f;
}

这样,每次相机移动时,背景平面都会以半速移动。使用不同的修饰符执行该技巧 3 次,您将获得 paralex 效果。

通常,您希望为此使用事件,但是游戏开发可以例外。轮询通常是要走的路,因为您已经有一个类似于事件循环的游戏循环。无论哪种方式,只要您首先更改相机的位置,就立即调用Scrolling.Update()会更有意义。

这自然是性能选择,但如果你简单地说:

 Scrolling.Update(cameraPosition.X, cameraPosition.Y)

如果滚动已经处于有效位置,则不会更改任何内容。

使用前应自然测量。通过这种方式,您将避免存储状态变量或附加变量来存储"旧"信息。