0

我正在开发一个基于 doodle jump 的 2d 垂直滚动游戏,我正在使用 flash 和 as3 来创建它。我已经放置了滚动和平台生成,到目前为止一切都很好,但是我为每个平台随机化了 ax 和 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;
                    }
            }
        }

游戏的重点是让角色从一个平台跳到另一个平台,当游戏滚动其内容时,它只会产生一组新的平台。

PS:newY在代码开头声明为 600 所以第一个总是从舞台高度开始。

4

2 回答 2

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;
        }
   } 
 ...
于 2013-05-23T04:26:58.127 回答
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;
        }
于 2013-05-23T06:32:17.140 回答