我正在构建一张地图,在它上面,我正在尝试添加诸如墙壁,相机,门等节点......现在这些都是由矩形等形状组成的,我已经这样做但是我正在尝试重做它,因为我遇到了碰撞检测算法的问题,因为我可以检查形状之间的碰撞但是当我试图告诉类从哪个派生出形状时它会引起我的问题(例如,矩形为门或墙)采取什么行动。
Client side keys: For below mentioned keys , kindly download mobile SDK keystore.json
file from merchant panel.
SignIn Key (consumerClientId)
SignIn Secret (consumerClientSecret)
SignUp Key (merchantClientId)
SignUp Secret (merchantClientSecret)
有什么方法可以让这种类工作并返回一个矩形而不必使用getTarget()方法?
public class Door {
private int x, y;
public Door(int x, int y) {
this.x = x;
this.y = y;
}
public Door getTarget() {
Door door = new Rectangle(x, y, 30, 20);
return door;
}
}
答案 0 :(得分:1)
Rectangle
课程中不应该有Door
字段,Door
已经扩展Rectangle
。通过说Door
延伸Rectangle
,这意味着Door
是Rectangle
。所以,如果你有一个像这样的碰撞检查功能:
public Boolean testCollision(Rectangle first, Rectangle second) { ... }
您可以简单地将任何Door
对象传递给此方法。
Door first = new Door()
Door second = new Door()
if (testCollision(first, second) {
// do stuff
}
如果您需要在Rectangle
方法中区分不同的testCollision
类型,则可以投射:
if (first instanceof Door) {
Door firstAsDoor = (Door)first;
}