我想在屏幕上显示随机对象,我有一个球,但生成的对象与球重叠,我想获得球的协调,并根据只移动随机对象。我正在尝试下面的代码片段。
local ballX=ball.x
local ballY=ball.y
local xPos=generate_random(40,600)
local yPos=generate_random(40,920)
if(xPos>=ballX and xPos<=ballX) or (yPos>=ballY and yPos<=ballY) then
objplace.x=xPos+150
objplace.y=yPos+150
else
objplace.x=xPos
objplace.y=yPos
end
你不是在检查两个球是否重叠,你只是在检查它们的中心是否在相同的位置,如果是,你就移动它们。你需要考虑球的整体面积(也就是它的半径)。为了使它完美,你必须使用一些代数/几何(因为半径可以从不同的角度来看,就像直角三角形一样,其中xPos将是底边长度,而yPos将是边高)。
一些简单的(不完美的)就像:
while((xPos>=(ballX + ballRadius) || xPos<=(ballX - ballRadius)) ||
(yPos>=(ballY + ballRadius) || yPos<=(ballY - ballRadius))){
xPos = xPos + 150;
yPos = yPos + 150;
}
objplace.x = xPos;
objplace.y = yPos;
再次,这是非常糟糕的,几乎没有错误检查的结束,有更多的参数,应该考虑使事情完美。如果你真的需要我来处理它,我可以,但这可能是一个很好的项目来磨练你的逻辑推理能力:)