2012-04-22 196 views
0

在我目前正在开发的cocos2d游戏中,我在屏幕右侧创建了一些精灵,以固定的速度向左移动,然后移除一次他们不在屏幕上。Sprite不会在屏幕边缘移动

This works great。但是当图像碰到屏幕的左侧时,它跳过一个节拍,然后完美地继续。

这真的很明显,因为我的游戏中的一个元素是2D程序地形。我的游戏产生了一个无限长的山丘,它以相当小的块形式完成。这些块被紧紧地放在一起,并一起移过屏幕。但是当一个块的左边缘碰到屏幕的左边缘时,它会延迟几个像素,并导致难看的重叠。

我用下面的代码来移动大块:

Chunk.position = CGPointMake(Chunk.position.x - panSpeed, Chunk.position.y); 

为什么会这样发生?

+0

如何移动相机。一致的速度还是变数? (我认为panSpeed是相机?) – 2012-04-22 02:56:14

+0

没有使用相机。我的游戏只是使用我发布的代码移动每个块。 panSpeed是用于移动块的计算值。该值每帧计算一次,每帧所有块都使用相同的值,因为直到下一帧才重新计算。所以我认为这是一个与cocos2d有关的问题,因为每一个都移动了完全相同的距离,但是当一个点击屏幕的左边缘时,它不能正确移动。 – Bananable 2012-04-22 04:06:51

回答

0

看起来你是不是在时间差在更新融通.. 看代码为CCMoveTo行动:

-(void) update: (ccTime) t 
{ 
    [target_ setPosition: ccp((startPosition.x + delta.x * t), (startPosition.y + delta.y * t))]; 
} 
+0

Delta时间只是简单地将运动转换为固定像素/秒而不是像素/帧,因此如果帧速率改变,现实世界速度不会改变。 – 2012-04-22 02:57:35

+0

delta时间中的panSpeed变量因子。这并不是说他们都会跳过节拍,它只是开始退出屏幕的图像,其余的都是正确的。 – Bananable 2012-04-22 03:56:58

+0

确定发布图片退出屏幕时的代码 – amleszk 2012-04-22 07:43:46