我正在制作垂直滚动平台游戏,我想创建从左到右(或从右到左)移动的精灵,当他们从屏幕上移出时,他们出现在另一边。
我有一个主要工作的实现,唯一的问题是单个 floor 上的精灵在每个循环中越来越近。
我真的不善于描述事情,所以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
,这是精灵的宽度),currentDir
是{{1}或1
和-1
是update()方法的时间。
每个精灵都位于它自己的update()中,但我已经尝试在Scene的update()方法中做了所有事情,但结果是一样的。
答案 0 :(得分:0)
如果delta变量随着时间的推移而增加,那么我相信你的pos.x也会以相同的比例增加,这就是为什么距离地板的距离会发生变化。
每次地板离屏时,您是否尝试重置增量值?