在ActionScript中创建具有2D移动的对象,并在其到达墙壁时停止

时间:2009-09-02 23:39:43

标签: actionscript-3 collision-detection hittest

我想制作一个有键盘移动的方块(向上,向下,向左,向右),当它碰到另一个物体(例如墙壁)时会停止。

编辑:我已经有一个正方形和一个键盘布局但如果需要特定的东西那么请告诉我!

1 个答案:

答案 0 :(得分:1)

杰克逊,你需要做的就是

  1. 听取密钥
  2. 更新你的角色
  3. 检查colissions
  4. 你并不是特定的,但我百分百肯定,如果你更多地了解你所需要的东西,你会发现它有很多闪存游戏教程。

    这是一个最小的设置

    //needed to update the position
    var velocityX:Number = 0;
    var velocityY:Number = 0;
    //draw the ball
    var ball:Sprite = new Sprite();
    ball.graphics.beginFill(0);
    ball.graphics.drawCircle(0,0,20);
    ball.graphics.endFill();
    addChild(ball);
    ball.x = ball.y = 100;
    //setup keys
    stage.addEventListener(KeyboardEvent.KEY_DOWN, updateBall);
    function updateBall(event:KeyboardEvent):void{
        switch(event.keyCode){
            case Keyboard.RIGHT:
            if(velocityX < 6) velocityX += .25;
            break;
            case Keyboard.LEFT:
            if(velocityX > -6) velocityX -= .25;
            break;
            case Keyboard.DOWN:
            if(velocityY < 6) velocityY += .25;
            break;
            case Keyboard.UP:
            if(velocityY > -6) velocityY -= .25;
            break;
        }
        //update ball position
        ball.x += velocityX;
        ball.y += velocityY;
        //check walls , if collision, flip direction
        if(ball.x > stage.stageWidth || ball.x < 0) velocityX *= -1;
        if(ball.y > stage.stageHeight|| ball.y < 0) velocityY *= -1;
    }
    

    显然它并不理想,但它是基本的,它很容易说明顶部的状态。 您可能想要使用一些平滑键并在onEnterFrame上更新您的游戏。

    古德勒克