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