我正在创建一个AI指挥器,需要一种方法来改变AI何时需要给玩家施加压力,何时需要让玩家离开。我有一个对象的TArray,正在检查与玩家的距离。我希望得到最大的距离或最小的距离。
我知道这行不通:
operator comparer = PlayerTensionLevel > BackstageThreshold ? > : <;
在一行Bool中使用的两个变量都是浮点数。我希望这个比较器可以用在以下情况中:
if(DistanceSquared(objectA, objectB) comparer _currentThresholdDistance){
_currentObject = objectA;
_currentThresholdDistance = DistanceSquared(objectA, objectB);
}
2条答案
按热度按时间qco9c6ql1#
你可以用
bool
计算!如果你不关心关系的不同行为,你可以写(从技术上讲,这里多余的圆括号是不必要的,但是期望读者知道关系运算符比等式运算符具有更高的优先级可能是不合理的。)
uxhixvfz2#
正如@SamVarshavchik在上面的评论中提到的,
您可以使用
std::function
,并根据PlayerTensionLevel
和BackstageThreshold
将其分配给std::less
或std::greater
。确定比较器之后,可以使用它来比较
_currentThresholdDistance
的当前值和对象之间的平方距离(这里我只是使用dist2
来表示它)。输出: