如何为我的产卵平台创建规则?

时间:2013-05-22 22:58:45

标签: actionscript-3 flash conditional-statements 2d-games

我正在开发一个基于涂鸦跳转的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,因此第一个总是从舞台高度开始。

2 个答案:

答案 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;
        }