创建滚动背景(从上到下滚动)

时间:2014-11-18 18:21:55

标签: c++

我在创建滚动背景时遇到问题。我真的试图将我在两年前所做的C#翻译成C ++,并作为一个' newb' (实际上),我遇到了麻烦。

以下是我正在使用的变量和对象。

//ScrollingBackground Inits from the Contructor/Main Method
_screenHeight = Graphics::GetViewportHeight();
_screenWidth = Graphics::GetViewportWidth();

//ScrollingBackground Content from the Load Content Method
_backgroundPosition = new Vector2(_screenWidth / 2, _screenHeight / 2);
_origin = new Vector2(_backgroundTexture->GetHeight() / 2, 0);
_textureSize = new Vector2(0, _backgroundTexture->GetHeight());
_backgroundTexture->Load("background.dds", false);

这是我试图在滚动发生的地方制作的方法。

void Player::Scrolling(float deltaX)
{
    //This is where the scrolling happens
    _backgroundPosition->X += deltaX;
    _backgroundPosition->X = _backgroundPosition->X % _textureSize->Y;
}

这还是比较新的所以请原谅我,如果我模糊或听起来像我不知道我在谈论什么。

非常感谢,

瑞恩。

1 个答案:

答案 0 :(得分:0)

您不能在浮点数上使用%运算符。以下修复了您的问题,但不会给出真正的余数。如果精度不是问题,您可以使用以下代码,而不会看到滚动背景的巨大问题。

void Player::Scrolling(float deltaX)
{
    //This is where the scrolling happens
    _backgroundPosition->X += deltaX;
    _backgroundPosition->X = static_cast<int>(_backgroundPosition->X) % static_cast<int>(_textureSize->Y);
}