pygame实现点击屏幕一下角色就缓慢朝着那个点移动直至到达那个点停止移动并有动画效果
以下是一个简单的实现点击屏幕控制角色移动的pygame代码:
import pygame
pygame.init()
# 设置窗口大小
screen_width, screen_height = 800, 600
screen = pygame.display.set_mode((screen_width, screen_height))
# 加载角色图片
player_img = pygame.image.load('player.png')
player_rect = player_img.get_rect()
# 设置初始位置和速度
player_x, player_y = screen_width/2, screen_height/2
player_speed = 2
# 设置移动目标点和移动速度
move_target = None
move_speed = 1
# 设置动画帧数和计数器
frame_count = 4
frame_index = 0
# 加载动画图片
animation_imgs = [pygame.image.load(f'player_{i}.png') for i in range(frame_count)]
animation_rects = [img.get_rect() for img in animation_imgs]
# 设置游戏循环
running = True
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
# 点击屏幕设置移动目标点
move_target = pygame.mouse.get_pos()
# 移动角色
if move_target is not None:
# 计算角色与目标点的距离和角度
dx = move_target[0] - player_x
dy = move_target[1] - player_y
distance = (dx**2 + dy**2)**0.5
angle = 0 if distance == 0 else pygame.math.atan2(dy, dx)
# 根据距离和速度计算移动量
move_distance = min(distance, move_speed)
move_x = move_distance * pygame.math.cos(angle)
move_y = move_distance * pygame.math.sin(angle)
# 更新角色位置
player_x += move_x
player_y += move_y
# 判断是否到达目标点,到达后清空移动目标点
if distance <= move_speed:
move_target = None
# 绘制角色动画
frame_index = (frame_index + 1) % (frame_count * 10)
frame = frame_index // 10
animation_rects[frame].center = (player_x, player_y)
screen.blit(animation_imgs[frame], animation_rects[frame])
pygame.display.flip()
pygame.quit()
在这个代码中,我们使用了pygame.MOUSEBUTTONDOWN事件来检测玩家是否点击了屏幕,并获取了点击位置作为移动目标点。然后在游戏循环中,我们根据目标点和角色位置计算移动量,更新角色位置。同时,我们使用一个计数器和动画帧数来实现角色移动时的动画效果。最后,我们使用pygame.display.flip()来更新屏幕显示。
原文地址: https://www.cveoy.top/t/topic/bcOD 著作权归作者所有。请勿转载和采集!