我正在开发一个基于涂鸦跳转的2D垂直滚动游戏,我正在使用flash和as3来创建它。我已经把滚动和平台产生并且到目前为止很好,但是我为每个平台随机化了x和y,显然它们只是在他们想要的地方产生(在舞台内,这是我唯一的实际规则)。我想创建规则,以便新平台和最后一个平台之间的最大距离为35px。
我目前的随机代码是:
public function createPlatform():void
{
//randomY();
var newY:Number = Math.random() * 600;
var X:Number = Math.random() * 500;
var tempPlatform:mcPlatform = new mcPlatform();
tempPlatform.x = X;
tempPlatform.y = newY;
platforms.push(tempPlatform);
mcContent.addChild(tempPlatform);
}
我也试图以这种方式为Y做随机:
private function randomY():void
{
var flag:Boolean = false;
while (flag == false)
{
newY = Math.random() * 600;
if(newY < lastY && (lastY - newY) < 50 && (lastY - newY) > 10)
{
newY = lastY;
flag = true;
}
}
}
游戏的目的是让角色从平台跳到平台,当游戏滚动其内容时,它就会产生一组新的平台。
P.S。:newY
在代码的开头声明为600,因此第一个总是从舞台高度开始。
答案 0 :(得分:1)
获得新平台的x和y值后,您必须检查添加到阵列的最后一个平台的x和y(或其中一个)。 类似的东西:
...
tempPlatform.x = X;
tempPlatform.y = newY;
lastPlatform = platforms[(platforms.length)-1]; //get the last added platform
var flag:Boolean = false;
while (flag == false)
{
if(lastPlatform.y > tempPlatform.y ...)//set the condition(s) you need
{
//create new value
} else {
flag = true;
}
}
...
答案 1 :(得分:1)
不要随意放置平台,而是尝试从屏幕底部开始,每次放置平台时将y增加一个随机数量。
类似的东西:
newY = Math.random() * 50;
While (newY < 600) {
var X:Number = Math.random() * 500;
var tempPlatform:mcPlatform = new mcPlatform();
tempPlatform.x = X;
tempPlatform.y = newY;
platforms.push(tempPlatform);
mcContent.addChild(tempPlatform);
newY += 35 + math.random() * 50;
}