使精灵反弹

Make sprite bounce back

本文关键字:精灵      更新时间:2023-10-16

我正在玩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是指图像的中心,那么你所要做的就是加/减图像大小的一半,得到图像的边界。如果你的精灵没有填满你的图像,那么你可能应该删掉一些。