有2D纹理运动的麻烦

时间:2014-01-07 12:07:24

标签: actionscript-3 2d game-engine starling-framework

我正在制作一场2d游戏的平滑角色动作。 移动时看起来角色是双倍的。有点像这样(虽然只有一个像素):

 ( ()
/ /{}\  ==>
|  ||

游戏运行稳定的60 FPS,我的显示器不是问题(我在几台显示器上测试了这一点)。

我现在正在使用starling,但自从我第一次开始制作游戏(使用openGL)以来,我就已经拥有了这个。我希望有人能告诉我我错过了什么。这是我的代码:

private var _x:Number = 20, _y:Number;

public function update(delta:Number):void
{
    if(gravity){
        _y += delta * 120;
    }

    if(_y + skin.image.height > game.stage.stageHeight){
        _y = game.stage.stageHeight - skin.image.height;
        gravity = false;
    }

    if(right && left){
        skin.playAnimation("none");
    }else if(left){
        _x -= delta * speed;
        skin.playAnimation("left");
    }else if(right){
        _x += delta * speed;
        skin.playAnimation("right");
    }

    //update skin
    skin.update(delta, Math.round(_x), Math.round(_y));
}

皮肤更新方法:

    public function update(delta:Number, x:int, y:int):void
    {
        image.x = x;
        image.y = y;
        if(currentAnimation){//this is texture switching (I tried without, still happens)
            currentAnimation.update(delta);
        }else{
            image.texture = textures[4];
        }
    }
游戏

Here

2 个答案:

答案 0 :(得分:1)

基于我自己的实验,以及评论中的所有数据,我认为重影取决于帧速率和计算机本身。

首先,最重要的是,当我在链接中尝试游戏时,它在全帧速率为60时有所描述的重影。但是,当我试图拍摄一个截屏进行进一步分析时,占用了一些CPU,掉线帧速率降至35或40左右。此时,鬼影停止了。

其次,因为不同的人报告所描述的重影的不同体验,我也认为它与个人计算机本身有点关系,可能根植于他们的可用内存和CPU,尽管这可能是#39这只是一个理论,因为我没有任何基准可以解决。

第三,我认为它的一部分也植根于神经科学,因为不同的人对动画的看法不同。

人们总是谈论想要更高的帧速率,但老实说,为了解决这个问题,我建议降低帧速率。 Flash Professional CS6的默认帧速率为24 FPS,我的内存从未遇到过重影问题。 值得一提的是,Flash动画师通常以24 FPS工作。

然而,在外表方面,它确实不是一件大事。这是人们往往忽略的图形缺陷之一,类似于24 FPS电影上的运动模糊,直到他们changed it to 48

答案 1 :(得分:0)

这似乎是所有游戏都有的东西(我实际上从未在一些我现在注意到的游戏中注意到它)而且我只需要忍受它。它不是我的硬件,不是我的显示器。我在很多计算机上尝试过它(从好到坏的硬件),它在所有计算机上看起来都一样。在硬件坏的计算机上看起来更糟糕,但没有太大的区别。