让精灵反弹

时间:2012-07-31 17:20:34

标签: c++ directx sprite

我正在使用DirectX 9.0玩游戏,并希望一个物体在碰到屏幕边缘(顶部,底部,右侧和左侧)时反弹回来。精灵是一个128x128像素的图像。 我设法让它来回反弹,但是在图像在屏幕外一半或太早之前不会发生这种情况。这是因为它自身的对象位于图像的中间,无论如何都要“移除”背景部分,以便程序在图像部分本身与屏幕边缘碰撞之前不会反弹精​​灵? 我是否必须手动修改图像?就像裁剪它或其他东西=

以下是我正在使用的一些代码:

if(this->Textures[i].posision.x >= this->_screenWidth)
{
    this->Textures[i].right = false;
}
else if(this->Textures[i].posision.x <= 0)
{
    this->Textures[i].right = true;
}

if(!this->Textures[i].right)
    this->Textures[i].posision.x -= 0.3f;
else
    this->Textures[i].posision.x += 0.3f;

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

好吧,如果您使用左侧矢量旅行,碰撞将被限定为:

if(this->Textures[i].posision.x - 128/2 <= 0)
{
    this->Textures[i].right = true;
}

如果您的position.x和position.y指向图像的中心,那么您所要做的就是添加/减去图像大小的一半以获得图像的边界。 如果您的精灵没有填满您的图像,那么您应该将其中一部分裁剪掉。