我正在制作一场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。
答案 0 :(得分:1)
基于我自己的实验,以及评论中的所有数据,我认为重影取决于帧速率和计算机本身。
首先,最重要的是,当我在链接中尝试游戏时,它在全帧速率为60时有所描述的重影。但是,当我试图拍摄一个截屏进行进一步分析时,占用了一些CPU,掉线帧速率降至35或40左右。此时,鬼影停止了。
其次,因为不同的人报告所描述的重影的不同体验,我也认为它与个人计算机本身有点关系,可能根植于他们的可用内存和CPU,尽管这可能是#39这只是一个理论,因为我没有任何基准可以解决。
第三,我认为它的一部分也植根于神经科学,因为不同的人对动画的看法不同。
人们总是谈论想要更高的帧速率,但老实说,为了解决这个问题,我建议降低帧速率。 Flash Professional CS6的默认帧速率为24 FPS,我的内存从未遇到过重影问题。 值得一提的是,Flash动画师通常以24 FPS工作。
然而,在外表方面,它确实不是一件大事。这是人们往往忽略的图形缺陷之一,类似于24 FPS电影上的运动模糊,直到他们changed it to 48。
答案 1 :(得分:0)
这似乎是所有游戏都有的东西(我实际上从未在一些我现在注意到的游戏中注意到它)而且我只需要忍受它。它不是我的硬件,不是我的显示器。我在很多计算机上尝试过它(从好到坏的硬件),它在所有计算机上看起来都一样。在硬件坏的计算机上看起来更糟糕,但没有太大的区别。