Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 动作脚本3。如何在游戏舞台上铺地?_Actionscript 3_Flash_Actionscript_Actionscript 2_Stage - Fatal编程技术网

Actionscript 3 动作脚本3。如何在游戏舞台上铺地?

Actionscript 3 动作脚本3。如何在游戏舞台上铺地?,actionscript-3,flash,actionscript,actionscript-2,stage,Actionscript 3,Flash,Actionscript,Actionscript 2,Stage,我正在制作一个简单的flash游戏,我只是制作了角色控制(左移、右移和跳跃)。当我增加重力时,我的角色从舞台上掉下来 我已经绘制了地板,导入到库中,但我不知道代码应该是什么样子 我的楼层被称为“地面”,我将其添加为“地面” 目前,我的代码如下所示: (注:我的角色名为“英雄”) 谢谢您的帮助。您需要几个布尔变量来检查英雄是否在地板上,以及重力何时施加。因此,如果他到达地板或特定区域,您必须将重力设置为false,而不是像您在这里所做的那样每帧更新它:Hero.y_speed+=gravity 如

我正在制作一个简单的flash游戏,我只是制作了角色控制(左移、右移和跳跃)。当我增加重力时,我的角色从舞台上掉下来

我已经绘制了地板,导入到库中,但我不知道代码应该是什么样子

我的楼层被称为“地面”,我将其添加为“地面”

目前,我的代码如下所示: (注:我的角色名为“英雄”)


谢谢您的帮助。

您需要几个布尔变量来检查英雄是否在地板上,以及重力何时施加。因此,如果他到达地板或特定区域,您必须将重力设置为false,而不是像您在这里所做的那样每帧更新它:
Hero.y_speed+=gravity

如果按空格键,则需要让角色跳跃,然后通过将布尔值设置为true来应用重力,然后,当它碰到地板时,应禁用重力,并再次启用跳跃

void update(float delta) {
    if (grounded) { 
        // ground based movement and actions

        // check to see if the spacebar was pressed to jump
        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space) {
            ya = -40;   // go up 40 pixels per second
            grounded = false;
        }
    } else {
        // air based movement and actions

        // apply gravity
        ya += GRAVITY * delta;    
    }

    // movement and collision work after you've figured out the x and y acceleration of the player
    y += ya * delta;
}

地板平吗?如果它是扁平的,你可以使用
stageHeight
hero.y
。谢谢你的回答,因为现在我使用
if(hero.y==150){hero.y_speed=0;}
但是现在它在地板上时我不能跳了谢谢你的回复,你能帮我一下吗?它应该是怎样的呢?我试过:
private-var-gravity:Boolean=true
if(Hero.y_speed>0&&Hero.y>(stage.stageHeight-Hero.height-10)){gravity=false;}
但它不工作首先重力应该为false。当您跳转时,它应该为false,在特定时间段后,您将启用它。出于您的目的修改我的伪代码。谢谢您的回答,但我遇到了以下错误:
1084:语法错误:在delta之前应该是rightparen。
在这一行:
void update(float delta){
我也遇到了以下错误:
1083:语法错误:else是意外的。
void update(float delta) {
    if (grounded) { 
        // ground based movement and actions

        // check to see if the spacebar was pressed to jump
        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space) {
            ya = -40;   // go up 40 pixels per second
            grounded = false;
        }
    } else {
        // air based movement and actions

        // apply gravity
        ya += GRAVITY * delta;    
    }

    // movement and collision work after you've figured out the x and y acceleration of the player
    y += ya * delta;
}