我正在努力让我的游戏中的敌人按照与玩家的距离顺序排列在一个向量中,所以我使用了 sort 函数。显然,我的敌人是对象,所以基本谓词是不够的,我必须创建自己的函数,所以我做到了。
但是,这些函数必须是静态的,那么,如何在这个函数中比较敌人和玩家之间的距离呢?
double World::getPlayerDistance(Entity* enemy){
int xDistance = enemy->m_xValue - m_pPlayer->m_xValue;
int yDistance = enemy->m_yValue - m_pPlayer->m_yValue;
double dist = sqrt(pow((double)xDistance, 2) + pow((double)yDistance, 2));
return dist;
}
这是我正在尝试使用的代码,但由于它是一个静态函数(在标题中定义为静态),它无法访问成员变量,因此以下内容不起作用:
bool World::sortXDistance(Entity *i, Entity *j) {
return (getPlayerDistance(i) < getPlayerDistance(j));
}
(也在标题中定义静态)这用于使用 Vector 进行 STL 排序。
我试过用谷歌搜索,但可能我什至没有认识到真正的问题,所以任何帮助都将不胜感激,或者会考虑另一种方法。先感谢您 :)