Java 关于我如何创建一个;物体碰撞检测“;用我这里的代码?

Java 关于我如何创建一个;物体碰撞检测“;用我这里的代码?,java,processing,Java,Processing,我想做一个游戏,如果主角(gubbe)与敌人(fiende)相撞,角色将受到伤害(Healthdisplay/HW)。我试着用很多方法来检测碰撞,主要是if(x.intersects(y)){}。我陷入困境,不知道如何解决它。我把主代码放在这里。如果需要更多的代码,就说出来,我会把需要的代码放进去 HW是应造成损害的hp池 创建主字符/矩形时显示为空 敌人正在处理另一页 class-gubbe{ 浮动x=0; 浮动y=0; int-HW=20; //右西多尔 int h1=100; int w1

我想做一个游戏,如果主角(
gubbe
)与敌人(
fiende
)相撞,角色将受到
伤害(Healthdisplay/HW)
。我试着用很多方法来检测碰撞,主要是
if(x.intersects(y)){}
。我陷入困境,不知道如何解决它。我把主代码放在这里。如果需要更多的代码,就说出来,我会把需要的代码放进去

HW是应造成损害的hp池

创建主字符/矩形时显示为空

敌人正在处理另一页

class-gubbe{
浮动x=0;
浮动y=0;
int-HW=20;
//右西多尔
int h1=100;
int w1=100;
//----
//运动
无效移动(){
如果(按键){
如果(键=='w'| |键=='w'){
//术语,前进,Y-led。
y-=100;
}
}
如果(按键){
如果(键=='a'| |键=='a'){
//术语,向右移动,X-led。
x-=100;
}
}
如果(按键){
如果(键=='s'| |键=='s'){
//术语,向后移动,Y-led。
y+=100;
}
}
如果(按键){
if(key='d'| | key='d'){
//术语,向左移动,X-led。
x+=100;
}
}
}
//视觉视觉
无效显示(){
//攫取
填充(127);
冲程(0);
rect(x,y,w1,h1);
}
void display2(){
填充(127);
冲程(0);
rect(x,y,w1,h1);
}
//边缘加工
void checkEdges(){
如果(x+100>宽度){
x-=50;
}else如果(x<0){
x+=50;
}否则,如果(y>高度){
y-=50;
}else if(y<0){
y+=50;
}否则{
}
}
//战斗
无效战斗(){
如果(按键){
if(key='m'| | key='m'){
//维尔科,弗利塔·霍格,X-led。
填充(255,0,0);
冲程(255,0,0);
rect(x,y-100100100);
}
}
}
//健康酒吧
void条显示(){
填充(204、204、204);
冲程(204、204、204);
rect(x,y-30100,9);
}
void HealthDisplay(){
填充(0,0,255);
冲程(255,0,0);
rect(x,y-31,HW,3);
!!!这里应该有碰撞检测!!!
}
void XpDisplay(){
填充(255,255,0);
笔划(255,255,0);
rect(x,y-22,2,1);
//如果(奥姆德达尔·费恩德){
//宽度+=x
//}
//否则{
//}
}
}

您的对象看起来是矩形,因此,如果沿x轴和y轴的两个中心之间的距离小于该轴方向上每个对象大小总和的一半,则会发生碰撞


拿一张纸把它画下来,你就会看到它

gubbe
中检查与
fiende
类型的对象相交的方法可能如下所示(我假设
fiende
是一个矩形,并且具有属性
x
y
w1
h1

class-gubbe{
// [...]
布尔相交(费恩德f){
//如果相交,则返回“true”,否则返回“false”
返回此.x
按如下方式调用该方法:

gubbe g=新的gubbe();
gubbe f=新封地();
如果(g.相交(f)){
//干坏事
// [...]
}

说明:

要检查与矩形的碰撞,必须检查矩形在两个维度上是否重叠

对于从
x1
x1+w1
的范围和从
x2
x2+w2
的第二个范围,可能存在以下情况:

不重叠:

x1-x1+w1
+----+
+----+
x2+w2
x1-x1+w1
+----+
+----+
x2+w2
重叠

x1-x1+w1
+--------------+
+----+
x2+w2
x1-x1+w1
+----+
+---------------+
x2+w2
x1-x1+w1
+---------+
+----------+
x2+w2
x1-x1+w1
+----------+
+----------+
x2+w2
这意味着,如果

x1
对于分别由原点和大小(
x1
y1
w1
h1
)定义的两个矩形(
x2
y2
w2
h2
),条件为:

x1
这将导致以下功能:

布尔相交(浮点x1、浮点y1、浮点w1、浮点h1、,
浮子x2、浮子y2、浮子w2、浮子h2){
//如果相交,则返回“true”,否则返回“false”
返回x1
你是想让算法知道两个形状是否重叠,还是想让这种算法在你的环境中工作?“拿一张纸把它画下来,你就会看到它!”这不是答案。