我在创建滚动背景时遇到问题。我真的试图将我在两年前所做的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;
}
这还是比较新的所以请原谅我,如果我模糊或听起来像我不知道我在谈论什么。
非常感谢,
瑞恩。
答案 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);
}