我有这段代码,但看起来应该有一种方法可以用更少的行/代码来完成
if (TargetX > Origin[0] + Range) TargetX = Origin[0] + Range;
if (TargetY > Origin[1] + Range) TargetY = Origin[1] + Range;
if (TargetX < Origin[0] - Range) TargetX = Origin[0] - Range;
if (TargetY < Origin[1] - Range) TargetY = Origin[1] - Range;
我正在使用一种叫做GML的语言,但只要解决方案没有任何真正特定的内置函数,这种语言就应该是通用的
回答你的问题不容易。当然,您可以dry更新代码
请注意,您可以将通话简化为:
这会告诉您,在两个方向上,您的目标是否在范围
origin ± range
内。现在你知道了,如果你的目标在射程之外,你需要采取行动。这可以再次简化:您只需要检查target
是否大于origin
,反之亦然最后,您应该对目标和源使用数组,或者定义一个可以调用的函数。显然,每次的射程都是相同的
您可以使用以下函数:
现在,代码看起来变长了,但维护起来也更容易:减少编写
>
而不是<
的风险,更改函数一次以更改所有检查,依此类推相关问题 更多 >
编程相关推荐