0
在我的游戏中,我使用libkdtree ++。我的方法是在npc或玩家的每一个动作中,从树上删除它并插入新的位置。这样的事情:Kdtree C++擦除并插入低性能
void Map::updateEntityPos(Entity& e)
{
map_lock.lock();
map_duplet.set_data(e.getLastPos(), &e);
entity_tree->erase_exact(map_duplet);
entity_tree->optimise();
map_duplet.set_data(e.getPos(), &e);
entity_tree->insert(map_duplet);
entity_tree->optimise();
map_lock.unlock();
}
但是我发现这段代码即使有100个npc也会减慢性能为零。如何提高位置更新性能以找到最近的实体?
我虽然与kdtrees我会提高性能......也许我真的需要简化方法 – 2012-03-18 13:15:38
@DenisErmolin,我怀疑他们确实提高性能来查找事情(好东西),但一直擦除和重新插入是没有办法去解决它。 – 2012-03-18 13:19:38
也许最好每秒更新一次,比如说每秒更新一次? – 2012-03-18 13:26:01