【问题标题】:Looping a sprite infinitely in Cocos2D在 Cocos2D 中无限循环一个精灵
【发布时间】:2016-04-18 16:11:11
【问题描述】:

我正在制作一个垂直滚动平台游戏,我想创建从左到右(或从右到左)移动的精灵,当它们离开屏幕时,它们会出现在另一个屏幕上一边。

我有一个大部分工作的实现,唯一的问题是单个楼层上的精灵在每个循环中都越来越接近。

我真的不擅长描述事情,所以please check this video

我正在使用以下代码来计算节点的新位置:

pos.x = fmodf(size.width + pos.x + this->currentDir * this->speed * delta, this->len + size.width) - size.width;

len 是精灵重新定位到0 之后的宽度(实际上是-size.width,这是精灵的宽度),currentDir1-1delta是 update() 方法的时间。

每个精灵都定位在它自己的 update() 中,但我已经尝试在 Scene 的 update() 方法中做所有事情,但结果是一样的。

【问题讨论】:

    标签: c++ cocos2d-iphone cocos2d-x cocos2d-x-3.0


    【解决方案1】:

    如果您的 delta 变量随着时间的推移而增加,那么我相信您的 pos.x 也会以相同的比例增加,这就是与楼层的距离会改变的原因。

    您是否尝试在每次地板离开屏幕时重置 delta 值?

    【讨论】:

    • delta 是自上次调用 update() 以来经过的时间,以秒为单位
    • 嗨,我明白了。我相信你的一个变量随着时间的推移增长得比它应该的要多,我认为如果你不重置它可能是增量。我建议您打印一段时间后的值,看看问题出在哪里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多