0

落書きジャンプに基づく 2D 縦スクロール ゲームに取り組んでおり、フラッシュと 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 として宣言されているため、最初の 1 つは常にステージの高さから始まります。

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 に答える