【问题标题】:Display random objects in corona without overlapping on the other objects on screen在电晕中显示随机对象,而不与屏幕上的其他对象重叠
【发布时间】:2014-04-16 22:37:27
【问题描述】:

我想在屏幕上显示随机对象,我有一个球,但生成的对象与球重叠,我想获得球的坐标,并据此仅移动随机对象。我正在尝试如下 sn-p。

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

【问题讨论】:

标签: android iphone lua coronasdk


【解决方案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;

再一次,这做得很糟糕,错误检查结束时几乎没有,为了使事情变得完美,应该考虑更多的参数。如果你真的需要我来解决它,我可以,但这可能是一个磨练你的逻辑推理能力的好项目:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多