def update_object(ticks):
object.x += float(x_speed) * ticks / 1000 # converting to float is needed
# this is your main game loop
time = pygame.time.Clock()
ticks = 0
while running:
...
update_object(ticks)
ticks = time.tick(30) # this 30 means time.tick() waits enough to make your max framerate 30
好吧,你应该在游戏循环中改变它的坐标。
有两种方法可以做到这一点。
首先,例如,如果希望对象每秒移动50px,则应在每一帧中发送更新函数ticks,然后通过
x + x_speed * ticks / 1000
更改对象的x和y坐标(这里,ticks以毫秒为单位,因此应将其转换为秒)。请注意,当您将
object.x
块化(或绘制)到一个曲面时,可能需要将其转换为int。有了这个,你的物体每秒移动相同的量。第二种方法是在每帧中移动对象。这意味着对象的速度可能会根据帧速率而变化(例如,在拥挤的场景中,帧速率可能会下降,这会使对象移动得更慢)。
顺便说一下,我忘了提到你的对象实现。我在对象中保存坐标的首选方法是使用pygame.Rect's.pygame.Rect有4个属性,x、y、height和width。有了这个,你也可以保持你的对象的精灵的长度和高度。
例如:
当你想改变角色的坐标时:
相关问题 更多 >
编程相关推荐