首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AS3平台游戏中创建平台?

如何在AS3平台游戏中创建平台?
EN

Stack Overflow用户
提问于 2012-06-01 06:23:39
回答 1查看 2.2K关注 0票数 0

我尝试在ActionScript 3中创建一个平台游戏,我已经有了一些角色移动和动画的代码,以及一个简单的平台风格,但我想让角色撞到墙上或撞到平台的底部。在这个时候我有这样的想法:

代码语言:javascript
复制
import flash.events.KeyboardEvent;
import flash.events.Event;

var KeyThatIsPressed:uint;
var rightKeyDown:Boolean = false;
var leftKeyDown:Boolean = false;
var upKeyDown:Boolean = false;
var downKeyDown:Boolean = false;

var gravity:Number = 1;
var yVelocity:Number = 0;
var canJump:Boolean = false;
var playerSpeed:Number = 7;
var crouchSpeed:Number = -4;

stage.addEventListener(KeyboardEvent.KEY_DOWN, PressAKey);
stage.addEventListener(KeyboardEvent.KEY_UP, ReleaseAKey);

function PressAKey(event:KeyboardEvent):void{
    if(event.keyCode == 37 || event.keyCode == 65){
        leftKeyDown = true;
    }
    if(event.keyCode == 38 || event.keyCode == 87){
        upKeyDown = true;
    }
    if(event.keyCode == 39 || event.keyCode == 68){
        rightKeyDown = true;
    }
    if(event.keyCode == 40 || event.keyCode == 83){
        downKeyDown = true;
    }
}

function ReleaseAKey(event:KeyboardEvent):void{
    if(event.keyCode == 37 || event.keyCode == 65){
        leftKeyDown = false;
    }
    if(event.keyCode == 38 || event.keyCode == 87){
        upKeyDown = false;
    }
    if(event.keyCode == 39 || event.keyCode == 68){
        rightKeyDown = false;
    }
    if(event.keyCode == 40 || event.keyCode == 83){
        downKeyDown = false;
    }   
}

char_mc.addEventListener(Event.ENTER_FRAME, moveChar);

function moveChar(event:Event):void{
    if(rightKeyDown){
        char_mc.x += playerSpeed;
        char_mc.scaleX = 1;
    }
    if(rightKeyDown && !downKeyDown && canJump == true){
        char_mc.gotoAndStop(2);
    }
    if(leftKeyDown){
        char_mc.x -=playerSpeed;
        char_mc.scaleX = -1;
    }
    if(leftKeyDown && !downKeyDown && canJump == true){
        char_mc.gotoAndStop(2);
    }
    if(upKeyDown && canJump){
        yVelocity = -10;
        canJump = false;
        char_mc.gotoAndStop(3);
    }
    if(downKeyDown && !rightKeyDown && !leftKeyDown){
        char_mc.gotoAndStop(4);
    }
    if(downKeyDown && rightKeyDown && canJump == true){
        char_mc.x +=crouchSpeed;
        char_mc.gotoAndStop(5);
    }
    if(downKeyDown && leftKeyDown && canJump == true){
        char_mc.x -=crouchSpeed;
        char_mc.gotoAndStop(5);
    }
    if(upKeyDown && canJump && rightKeyDown){
        canJump = false;
        char_mc.gotoAndStop(3);
    }
    if(upKeyDown && canJump && leftKeyDown){
        canJump = false;
        char_mc.gotoAndStop(3);
    }

    if(!rightKeyDown && !leftKeyDown && !upKeyDown && !downKeyDown){
        char_mc.gotoAndStop(1);
    }
    if(yVelocity >0){
        canJump = false;
    }
    if (canJump == false){
        char_mc.gotoAndStop(3);
    }

    yVelocity +=gravity;

    if(! floor_mc.hitTestPoint(char_mc.x, char_mc.y,true)){
        char_mc.y+=yVelocity;
    }
    if(yVelocity > 20){
        yVelocity = 20;
    }

    for(var i:int=0;i<10;i++){
        if(floor_mc.hitTestPoint(char_mc.x,char_mc.y,true)){
            char_mc.y--;
            yVelocity=0;
            canJump=true;
        }
    }

    if (char_mc.hitTestObject(fallBox)){
        char_mc.x = 20;
        char_mc.y = 300;
    }
}

在我用了4天的时间在youtube、google或其他任何地方查找任何东西后,我来到了这里。希望你能帮上忙。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-06-01 09:29:19

我建议使用像http://citrusengine.com/或其他引擎或http://www.box2dflash.org/这样的东西,这会让你的生活变得容易,而不是试图重新发明轮子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10842099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档