使精灵反弹

问题描述:

我在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; 

感谢您的帮助!

好,如果你有一个左病房矢量行驶,碰撞将有资格为:

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

如果您position.x和position.y指的是图像的中心,然后您只需添加/减去图像大小的一半即可获得图像的边界。 如果你的精灵没有填满你的图像,那么你应该将其中的一部分剪掉。