从数组创建阶段,需要hitTestObject帮助

时间:2012-11-24 16:06:36

标签: actionscript-3

我正在尝试创建我的脚本,以便它根据数组生成级别。 这些街区的位置很好,但我必须明白,如果你跳下来就会让玩家在碰撞时停下来。

我已经尝试了一些方法来实现它,但我无法理解,所以我来这里寻求帮助。

变量列表:

    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);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

从我所看到的情况来看,您只是针对最后创建的块进行检查。您将需要遍历所有块以查看它们是否与播放器重叠。此外,为了创建游戏,尝试一些已经存在的游戏引擎,如Flashpunk或Flixel,它们更容易使用它们。