由于缺乏更好的头衔,我正在寻找最好的方法来检查:
我有一个箭头对象。我还有一些对象,我想对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")))
此代码有效,但我确信有更好的方法可以实现。抱歉有点模糊,这是一个难以陈述的问题。
答案 0 :(得分:1)
假设您可以从对象本身访问对象的类型,您如何使用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;
}
}
}
我想把它作为评论,但是,这太大了。我可能完全错了,在这种情况下,请告诉我,我会删除我的答案:)