如何在 y 轴上随机定位对象,每个对象之间的距离始终大于特定值?
How to position objects randomly on y-axis with a variable distance between each of the objects, which is always greater than a specific value?
我在 y 轴上通过 for 循环放置 4 个对象。使用以下方法将每个对象随机放置在 y 轴上:
myObject.y = stage.stageHeight * Math.random();
问题是有时对象彼此相距太远,有时它们彼此重叠。我想要实现的是始终在两个对象之间保持一定距离。我希望该距离始终大于特定值。我已经尝试解决这个问题 2 天了,但无法弄清楚。
这是我试图摆脱重叠的方法:
function createObstacles():void
{
var currentElements:Array = [];
var myRect:Obstacle;
for(var k:int = 0; k < 4; k++)
{
myRect = new Obstacle();
addChild(myRect);
myRect.x = stage.stageWidth + 30;
myRect.y = stage.stageHeight * Math.random();
obstacles.push(myRect);
currentElements.push(myRect);
}
checkOverlap(myRect,currentElements);
}
function checkOverlap(rect:Obstacle, elements:Array)
{
for(var n:uint = 0; n < elements.length; n++)
{
if(rect.hitTestObject(elements[n]))
{
rect.y = stage.stageHeight * Math.random();
}
}
}
元素仍然重叠。关于始终保持两个物体之间的距离,我只是无法理解。我用谷歌搜索但没有返回任何相关内容。任何形式的帮助将不胜感激。
您可以根据之前对象的y值设置对象的y。
函数 createObstacles():void
{
var currentElements:Array = [];
变量 myRect:Obstacle;
var minDistance:int = 5;//the min distance between two objects
var maxDistance:int = 10;//the max distance between two objects.
for(var k:int = 0; k < 4; k++)
{
myRect = new Obstacle();
addChild(myRect);
myRect.x = stage.stageWidth + 30;
if (k == 0)
{
// make sure four objects in one page
myRect.y = stage.stageHeight/2 * Math.random();
}
else
{
var distance:int = (maxDistance - minDistance)*Math.random() + minDistance;
myRect.y = obstacles[k - 1].y + distance;
}
obstacles.push(myRect);
currentElements.push(myRect);
}
}
我在 y 轴上通过 for 循环放置 4 个对象。使用以下方法将每个对象随机放置在 y 轴上:
myObject.y = stage.stageHeight * Math.random();
问题是有时对象彼此相距太远,有时它们彼此重叠。我想要实现的是始终在两个对象之间保持一定距离。我希望该距离始终大于特定值。我已经尝试解决这个问题 2 天了,但无法弄清楚。
这是我试图摆脱重叠的方法:
function createObstacles():void
{
var currentElements:Array = [];
var myRect:Obstacle;
for(var k:int = 0; k < 4; k++)
{
myRect = new Obstacle();
addChild(myRect);
myRect.x = stage.stageWidth + 30;
myRect.y = stage.stageHeight * Math.random();
obstacles.push(myRect);
currentElements.push(myRect);
}
checkOverlap(myRect,currentElements);
}
function checkOverlap(rect:Obstacle, elements:Array)
{
for(var n:uint = 0; n < elements.length; n++)
{
if(rect.hitTestObject(elements[n]))
{
rect.y = stage.stageHeight * Math.random();
}
}
}
元素仍然重叠。关于始终保持两个物体之间的距离,我只是无法理解。我用谷歌搜索但没有返回任何相关内容。任何形式的帮助将不胜感激。
您可以根据之前对象的y值设置对象的y。
函数 createObstacles():void { var currentElements:Array = []; 变量 myRect:Obstacle;
var minDistance:int = 5;//the min distance between two objects
var maxDistance:int = 10;//the max distance between two objects.
for(var k:int = 0; k < 4; k++)
{
myRect = new Obstacle();
addChild(myRect);
myRect.x = stage.stageWidth + 30;
if (k == 0)
{
// make sure four objects in one page
myRect.y = stage.stageHeight/2 * Math.random();
}
else
{
var distance:int = (maxDistance - minDistance)*Math.random() + minDistance;
myRect.y = obstacles[k - 1].y + distance;
}
obstacles.push(myRect);
currentElements.push(myRect);
}
}