你好,我在做一个java游戏,需要从一个球到一个长方形的碰撞。
位置x=球的x值
位置y=球的y值
vel.x=球的x速度
vel.y=球的y速度
sh=球的高度
sw=钢球宽度
w=矩形宽度
h=矩形高度
到目前为止,我已经:
boolean insideRect = pos.x >= X && pos.x <= X+W && pos.y >= Y && pos.y <= Y+H;
if(insideRect){
if(pos.y + sh/2 >= H){
vel.y = (-1*vel.y)*gravity;
vel.x *= .6;
if(pos.y < Y+H/2){
pos.y = Y;
} else{
pos.y = Y+H;
}
}
if(pos.x + sw/2 > W){
vel.x = -1*vel.x;
}
}
然而,这只是说如果它击中了矩形的左侧或右侧,如果它击中了顶部或底部。
因此,如果在if语句下打印,则输出为:(left,up),(right,down),(left,down),(right,up)
所以问题是,要让它工作,我只能有一个,左,右,上,或下。
如果我有两个,那么它认为它都击中了天花板和右边的墙,并且有两个视觉输出。
我怎样才能解决这个问题?
1条答案
按热度按时间abithluo1#
您还必须呈现此代码,并更改变量或创建适合此代码的变量。
只是好奇这个游戏的名字会是什么?