0

配列に基づいてレベルを作成するようにスクリプトを作成しようとしています。ブロックは問題なく配置されていますが、ジャンプして落下すると、プレイヤーが衝突して停止するようにする必要があります。

いくつかの方法を試してみましたが、よくわからないので、助けを求めるためにここにいます。

変数リスト:

    var player1:MovieClip;
    var up:Boolean = false;
    var left:Boolean = false;
    var right:Boolean = false;
    var isWalking:Boolean = false;
    var isJumping:Boolean = false;
    var isOnFloor:Boolean = false;
    var lastPressed = "";
    var jumpSpeedLimit:int = 15;
    var jumpSpeed:Number = jumpSpeedLimit;
    var currentLevel:Number;
    var newBlock:MovieClip;
    var level1:Array
    var blockHolder:Sprite = new Sprite;

ジャンプスクリプト:

public function playerJumpRight():void {
        if (!isJumping) {
            isOnFloor = false;
            isJumping = true;
            var xVel:Number = 2;
            var yVel:Number = -jumpSpeedLimit;  //velocity = snelheid
            var yAcc:Number = 1;

            addEventListener(Event.ENTER_FRAME, onLoop);
            function onLoop(e:Event):void {
                if (isJumping) {
                    player1.y += yVel;
                    yVel += yAcc;
                    if (player1.hitTestObject(newBlock)) {
                        isOnFloor = true;
                    }
                }
            }
        }
    }

CreateLevel スクリプト:

        function createLevel() {
        addChild(blockHolder);
        level1 = new Array(
        0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1
        );
        for (var i:int = 1; i < level1.length; i++) {
            if (level1[i] == 1) {
                newBlock = new MovieClip();
                newBlock.graphics.beginFill(0xFF0000, 1);
                newBlock.graphics.drawRect(0, 0, 25, 25);
                newBlock.y = 400;
                newBlock.x = (i*newBlock.width+i)
                blockHolder.addChild(newBlock);
            }
        }
    }
4

1 に答える 1

0

私が見る限り、最後に作成されたブロックに対してのみチェックしています。すべてのブロックをループして、プレーヤーとオーバーラップしているかどうかを確認する必要があります。また、ゲームを作成する場合は、Flashpunk や Flixel などの既存のゲーム エンジンを試してみてください。それらを使用する方が簡単です。

于 2012-11-24T19:55:49.260 に答える