繁体   English   中英

简单的Java碰撞检测

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM