Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何使另一个物体接触后消失?_Java_Collision Detection_Game Physics - Fatal编程技术网

Java 我如何使另一个物体接触后消失?

Java 我如何使另一个物体接触后消失?,java,collision-detection,game-physics,Java,Collision Detection,Game Physics,我正在用Java开发一个小游戏,你可以像一个小盒子一样玩,目标是触摸其他盒子。你用按钮四处移动,当你触摸另一个盒子时,我希望这个盒子不是玩家想要的 我不知道如何检测这些盒子何时相互接触 我的想法是: if (mainBox is touching otherBox){ otherBox.disappears(); } 任何帮助都将不胜感激。典型的冲突逻辑是通过比较点来完成的 由于正方形的典型绘制点位于左上角,因此基本逻辑如下: p = playerBox t = targetBox

我正在用Java开发一个小游戏,你可以像一个小盒子一样玩,目标是触摸其他盒子。你用按钮四处移动,当你触摸另一个盒子时,我希望这个盒子不是玩家想要的

我不知道如何检测这些盒子何时相互接触

我的想法是:

if (mainBox is touching otherBox){
    otherBox.disappears();
}

任何帮助都将不胜感激。

典型的冲突逻辑是通过比较点来完成的

由于正方形的典型绘制点位于左上角,因此基本逻辑如下:

p = playerBox
t = targetBox

if((t.x>=p.x && t.x<=p.x+p.w) || (t.x+t.w>=p.x && t.x+t.w<=p.x+p.w)){
     if((t.y>=p.y && t.y<=p.y+p.h) || (t.y+t.h>=p.y && t.y+t.h<=p.y+p.h){
          System.out.println("Player p collided with target t!");
     }
}
p=playerBox
t=目标箱

如果((t.x>=p.x&&t.x=p.x&&t.x+t.w=p.y&&t.y=p.y&&t.y+t.h我的第一个想法是维护一个无用户框的散列图,其中框的键=位置和值=框对象。每当玩家框移动时,你都想触发一个触发冲突检查的事件。 当事件被触发时,你只需说

public void checkForCollision(Position currentPosition){
// do not go further if no collision
if (!boxes.containsKey(currentPosition)){ return }

//this part will only execute if there is a collission
boxes.get(currentPosition).makeItDissapear();
}
先决条件: -描述长方体属性的对象
-研究google的EventBus以轻松管理环境

所以你想要一种检测冲突的方法,不是吗?如果你在GUI模型中使用intersects方法来对框进行建模,你可以使用intersects方法来检测冲突。没错!以前没有这样做过,所以有点不确定如何做。如何将我的矩形声明为一个变量?现在我正在使用它键入:g.fillRect(x,y,20,20);您可以通过声明将矩形变成一个对象。rectangle rect=新矩形(x,y,w,h);然后您可以创建一个“draw”方法,该方法调用g.fillRect(rect.x,rect.y,rect.w,rect,h)。您需要一个形状数组列表,在其中添加它们或一个的哈希映射,以便通过id或其他标识符跟踪当前形状