在电晕上显示随机对象而不与屏幕上的其他对象重叠

时间:2014-03-12 16:15:21

标签: android iphone lua corona

我想在屏幕上显示随机对象,我有一个球,但生成的对象与球重叠,我希望得到球的协调,并根据这只移动随机对象。我正在尝试下面的代码片段。

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

1 个答案:

答案 0 :(得分:1)

你没有检查球是否重叠,你只是检查他们的中心是否在同一个位置,如果是,你正在移动它们。你需要考虑球的整体面积(因此它的半径)。为了完美,你必须使用一些代数/几何(因为半径可以在不同的角度看,如直角三角形,其中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;

同样,这是非常糟糕的做法,在错误检查结束时几乎没有什么,并且还有更多的参数应该被考虑在内以使事情变得完美。如果你真的需要我来解决它,我可以,但这可能是一个很好的项目来磨练你的逻辑推理技巧:)