c++ 查找类中所有对象的所有值
c++ Find all values of all objects in a class
我正在制作一个简单的 2D 平台游戏,我需要找到所有创建对象的所有值,这些对象将代表游戏中的可碰撞对象。所以我需要所有的 x/y 坐标、宽度和高度,以便我可以检查它们中是否有任何与玩家碰撞。
类看起来像:
class CollidableObject
{
public:
CollidableObject();
virtual ~CollidableObject();
int Height;
int Width;
DirectX::SimpleMath::Vector2 position;
bool collidable;
};
这显然是一个非常简单的类,我只需要一种方法来确定玩家位置是否与任何可碰撞对象值发生冲突,我不需要碰撞代码,只需要一种一次获取所有可碰撞对象值的方法。希望我已经说清楚了。
class CollisionPred(
public:
CollisionPred( Player p) : p_(p) {}
bool operator()(const ColiidableObject& o) {
// process object and return true if there is a collision, i.e:
return o.Height*o.Height + o.Width*o.Width > p_.distance;
}
private:
Player p_;
;
int main() {
//...
std::vector<CollidableObject> v(100);
std::vector<CollidableObject>::iterator it =
std::find_if(v.begin(), v.end(), CollisionPred());
//...
}
最简单但最流行的方法是遍历一组可碰撞项,以检查是否有任何可碰撞对象与玩家发生冲突。
vector<CollidableObject> objects;
for(CollidableObject& obj: objects)
{
if (obj.position.x - obj.width < player.position.x + player.radius
&& obj.position.x + obj.width > player.position.x - player.radius
&& obj.position.y - obj.height < player.position.y + player.radius
&& obj.position.y + obj.height > player.position.y - player.radius
)
// collision happened
}
相关文章:
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- 无法使用迭代器查找类对象。(二进制 '==': 'userInfo' 不定义此运算符)
- 继承 - 查找类的对象的大小
- 如何在 c++98 中通过特定字段在 QList 中查找对象?
- 按类型与字符串查找对象
- 如何在视频捕获对象(C++)中查找某个frame_no?
- 在具有自定义对象的集合中查找值
- std::unordered_set 是否对任何对象进行摊销常量查找时间,而不考虑谓词
- 查找并将指针返回向量中的对象
- 对象文件中的未定义引用 - 如何查找哪个库包含它
- 如何在 Windows 上从 C++11 统计信息对象的文件序列号中查找文件名
- 在容器中查找派生对象
- 如何在具有多个成员的自定义对象的向量上使用查找
- 通过查找重复顶点从 vec3 对象的向量计算索引
- 查找对象属性是否位于对象向量C++中
- 查找对象向量中属性具有相同值的对象
- 无法使用指针查找正确的元素 - 从函数返回时,对象上的 poiting 为 null
- 在对象向量中查找对象
- 如何查找多态基类向量中包含的对象的类型?
- 具有查找表的可选帮助的对象查找,如果未使用,则必须对其进行优化