您将需要更改添加硬币和障碍物的方式!我建议为每个人使用一个计时器。Atm 您在每一帧上添加大量它们,计算重叠会占用太多资源!并将它们放入 aarray
或更好的 a中vector
!我也推荐使用object Pool
!
所以限制可能出现的硬币和障碍的数量,比如 5 个左右。然后在屏幕外或被收集时将它们从数组/向量中删除!然后,当您添加新内容时,您可以检查数组/向量允许的值是什么!
当你得到你的数组时,你可以将它传递给randomRange()
函数并排除这些值!看起来像这样!不是睾丸!!
function randomRange (min:Number, max:Number, exclude:Array = null):int
{
var val:int = (min + Math.random() * (max - min)) >> 0;
if (exclude)
{
for (var i:int = 0; i < exclude; i++)
{
while ((val < exclude[i].x + exclude[i].width) && (val > exclude[i].x))
{
val = (min + Math.random() * (max - min)) >> 0;
}
}
}
return val;
}
它的性能仍然相当昂贵。但是只有几个对象你应该没问题