使精灵反弹
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是指图像的中心,那么你所要做的就是加/减图像大小的一半,得到图像的边界。如果你的精灵没有填满你的图像,那么你可能应该删掉一些。
相关文章:
- OpenGL 着色器不绘制任何东西 - 糟糕的精灵类
- 从精灵表在 sfml 中为精灵制作动画
- AABB 碰撞使实际精灵的大小翻倍
- 如何在精灵表上的两个不同部分之间来回切换,同时用户仍使用 SFML 持有密钥
- 我的精灵使用名为 ASGE 的C++框架卡在屏幕边缘
- 如何为精灵编写复制构造函数
- 绘制精灵会导致分割错误
- 精灵动画查看器应该使用哪些Qt小部件
- Eclipse构建但不会启动精灵
- OpenGL 2D游戏只绘制第二个精灵纹理而不是第一个
- 打开 gl 精灵类不起作用
- 有没有办法在链接时设置精灵需要字段?
- 精灵没有动画
- 在不同位置渲染相同精灵的数组
- 如何在 SFML 上添加更多精灵?
- 精灵不显示我希望它们显示的方式
- 为什么精灵在 cocos2d-x 中颤抖
- 我没有看到精灵的动画
- 为什么该代码不绘制精灵C++ SFML
- 添加精灵时窗口关闭