[英]Simple Java Collision Detection
我正在设计一个简单的游戏,你要避免被我创造的AI击中。
我一直在查找碰撞检测,我有一个问题。
我查找的所有信息似乎都涉及使用相当多的代码。
我想知道为什么不能简单:
if(AI.xDirection == x || AI.yDirection == x || AI.xDirection == y || AI.yDirection == y){
System.out.println("Collision");
用于此?
如你所见,我已将它设置为打印到控制台,它似乎对我有用。
这有不利之处吗?
不确定你的代码实际上在做什么,但如果它有效并且你可以理解,那么我不明白你为什么要改变它!
您的代码假定所有客户关心的是否存在冲突。 可能存在游戏和其他情况,其中客户希望在某些情况下以某种方式处理碰撞(例如,我之前制作了一个程序,在随机障碍物之间来回反弹球,并且取决于哪一方是首先击中,它必须朝那个方向反弹)。
关于客户希望在碰撞后发生什么的清单继续进行,但是如果你想要的只是展示碰撞,那么嘿,那就去吧。
你用这种方式违反了封装。
首选定义一个名为AIPosition
的自定义对象: AIPosition
(可能是不可变的)专用于封装AI坐标。
和AIPosition
包含方法: boolean doesCollideWith(AIPosition anotherPosition)
AI
将包含一个委托方法:
public boolean doesCollideWith(AI anotherAi){
aiPosition.doesCollideWith(anotherAi.getAIPosition());
}
你的电话会是: if(ai1.doesCollideWith(ai2))
因此,如果后面的坐标涉及第三个元素(如z
),则不需要更改客户端代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.