我是靠谱客的博主 拼搏黑猫,最近开发中收集的这篇文章主要介绍python设置速度_如何使我的步行动画以设定的速度播放? (Python,Pygame),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

您需要跟踪时间,因此您可以使用pygame.time.get_ticks或clock.tick()返回的时间(通常称为dt表示增量时间),然后在经过一段时间后更新图像.

pygame.time.get_ticks变体:

class Player(pg.sprite.Sprite):

def __init__(self, pos, *groups):

super().__init__(*groups)

self.frame = 0 # Index of the current animation frame.

self.image = IMAGES[self.frame] # Set image to the first image.

self.rect = self.image.get_rect(center=pos)

# Start time of the last animation frame.

self.start_time = pg.time.get_ticks()

# If the time limit is reached, increment the index

# and change self.image.

self.time_limit = 300 # Milliseconds.

def update(self):

now = pg.time.get_ticks()

if now - self.start_time > self.time_limit:

self.frame += 1 # Increment the frame index.

self.frame %= len(IMAGES) # Keep the index in the range.

self.image = IMAGES[self.frame] # Switch the image.

self.start_time = now

以及delta时间变量的完整示例. (如果你最终想让游戏帧速率独立,那么无论如何你都需要你班级的dt来获得移动速度.

import pygame as pg

# Some images with dots for the animation.

IMAGE1 = pg.Surface((90, 90))

IMAGE1.fill((30, 90, 200))

pg.draw.circle(IMAGE1, (50, 170, 220), (45, 45), 15)

IMAGE2 = pg.Surface((90, 90))

IMAGE2.fill((30, 90, 200))

pg.draw.circle(IMAGE2, (50, 170, 220), (30, 30), 15)

pg.draw.circle(IMAGE2, (50, 170, 220), (60, 60), 15)

IMAGE3 = pg.Surface((90, 90))

IMAGE3.fill((30, 90, 200))

pg.draw.circle(IMAGE3, (50, 170, 220), (20, 20), 15)

pg.draw.circle(IMAGE3, (50, 170, 220), (45, 45), 15)

pg.draw.circle(IMAGE3, (50, 170, 220), (70, 70), 15)

IMAGES = [IMAGE1, IMAGE2, IMAGE3]

class Entity(pg.sprite.Sprite):

def __init__(self, pos, *groups):

super().__init__(*groups)

self.frame = 0 # Index of the current animation frame.

self.image = IMAGES[self.frame] # Set image to the first image.

self.rect = self.image.get_rect(center=pos)

self.timer = 0 # Time in seconds.

def update(self, dt):

self.timer += dt # Increment the timer.

# If the timer is above the desired time limit ...

if self.timer >= .5:

self.timer = 0 # Reset the timer.

self.frame += 1 # Increment the frame index.

self.frame %= len(IMAGES) # Keep the index in the range.

self.image = IMAGES[self.frame] # Switch the image.

def main():

screen = pg.display.set_mode((640, 480))

clock = pg.time.Clock()

all_sprites = pg.sprite.Group(Entity((200, 200)))

dt = 0

done = False

while not done:

for event in pg.event.get():

if event.type == pg.QUIT:

done = True

# Pass dt to the update methods of all sprites.

all_sprites.update(dt)

screen.fill((30, 30, 30))

all_sprites.draw(screen)

pg.display.flip()

# dt is the time that has passed since the last clock.tick call.

# Divide by 1000 to convert milliseconds to seconds.

dt = clock.tick(30) / 1000

if __name__ == '__main__':

pg.init()

main()

pg.quit()

最后

以上就是拼搏黑猫为你收集整理的python设置速度_如何使我的步行动画以设定的速度播放? (Python,Pygame)的全部内容,希望文章能够帮你解决python设置速度_如何使我的步行动画以设定的速度播放? (Python,Pygame)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部