gpt4 book ai didi

java - 仅检查每个实例一个的最快方法?

转载 作者:行者123 更新时间:2023-12-01 13:12:04 26 4
gpt4 key购买 nike

由于缺乏更好的标题,我正在寻找最好的方法来检查这一点:

我有一个箭头对象。我还有一些想要为其编码碰撞的对象,object1、object2、...objectx,其中 objectx 是我要检查的最后一个对象。

在我使用的引擎的碰撞系统中,有一个 x1 对象和一个 x2 对象,它们可能因碰撞中的对象而异。例如,如果箭头击中 1 到 x 的任何对象,我从一开始就不知道箭头是 x1 还是 x2,但可以轻松检查。

我想编写一个 if 语句,如果一个对象是箭头,而另一个对象是我的许多对象之一,则该语句为 true。这是我到目前为止所拥有的:

if ((x1Type.equals("arrow") || x2Type.equals("arrow")) && ((x1Type.equals("object1") || x1Type.equals("object2") || x1Type.equals("object3") || ... || x1Type.equals("objectx")) || 
x2Type.equals("object1") || x2Type.equals("object2") || x2Type.equals("object3") || ... || x2Type.equals("objectx")))

这段代码可以工作,但我很确定有更好的方法来做到这一点。很抱歉说得有点含糊,这是一个很难表述的问题。

最佳答案

假设您可以从对象本身访问对象的类型,您如何看待使用Collection(通常是Set)来检查对象是否碰撞物体是否应该受到你的箭头的影响?

我建议这样:

public static final String TYPENAME_ARROW = "arrow";
public static final Set<String> impactedTypes = new HashSet<String>() {
{
add("object1");
add("object2");
add("object3");
add("objectx");
}
};

public static void collide(final Object x1, final Object x2) {
if (x1.getType().equals(ARROW_TYPE)) {
if (impactedTypes.contains(x2.getType())) {
// hit x2 with x1;
}
} else if (x2.getType().equals(ARROW_TYPE)) {
if (impactedTypes.contains(x1.getType())) {
// hit x1 with x2;
}
}
}

我想把它作为评论,但是,这太大了。我可能完全错了,在这种情况下,请告诉我,我会删除我的答案:)

关于java - 仅检查每个实例一个的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22774698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com