0

我正在玩一些 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;

谢谢你的帮助!

4

1 回答 1

0

好吧,如果您使用向左矢量行驶,则碰撞将被定义为:

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

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

于 2012-07-31T17:27:06.607 回答