我正在尝试使射线投射适用于2D游戏,并达到将我的昆虫正确存储在矢量中的程度,但是我不知道如何正确地对矢量进行排序,就像绘制一样从播放器到屏幕左侧的一条水平线,然后从其创建一个圆 (有点像https://www.redblobgames.com/articles/visibility/中的内容)
我正在使用的结构:
struct Intersect
{
bool result = false; Vec2 pos; float angle;
};
尝试对其进行排序:
std::stable_sort(points.begin(), points.end(), [&playerPos](const Intersect& lhs, const Intersect& rhs)
{
if (playerPos.y < lhs.pos.y)
{
if (lhs.pos.x < playerPos.x)
{
return lhs.pos.x < rhs.pos.x;
}
else
{
return lhs.pos.y > rhs.pos.x;
}
}
else
{
return lhs.pos.x > rhs.pos.x;
}
});
playerPos
是一个简单的Vec2
,其中包含x
和y
。
points
是在代码的前面填充的相交矢量。
通过这种尝试,我主要是得到无效的比较器,因为它并不是严格的弱排序。