Python Pygame重力脚本
我正在尝试用pygame制作一个python脚本来模拟重力。问题是,我的“玩家”一直卡在底部,甚至一次也没有弹跳。如果有帮助的话,我正在使用python 3.4.1。这是我的密码:Python Pygame重力脚本,python,pygame,Python,Pygame,我正在尝试用pygame制作一个python脚本来模拟重力。问题是,我的“玩家”一直卡在底部,甚至一次也没有弹跳。如果有帮助的话,我正在使用python 3.4.1。这是我的密码: import pygame pygame.init() disp_w = 800 disp_h = 600 disp = pygame.display.set_mode((disp_w,disp_h)) pygame.display.set_caption('Gravity') player_x = disp
import pygame
pygame.init()
disp_w = 800
disp_h = 600
disp = pygame.display.set_mode((disp_w,disp_h))
pygame.display.set_caption('Gravity')
player_x = disp_w/2
player_y = 0
player = pygame.image.load('images/player.png')
gravity = 0.1
speed = 0
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
player_y += speed
speed += gravity
if player_y > disp_h:
speed = speed * -0.7
disp.fill((0,0,0))
disp.blit(player,(player_x,player_y))
pygame.display.flip()
clock.tick(120)
在一个画面上,你会掉到地板下,比如说,1.0个单位。然后你的速度变为-0.7 因此,在下一帧中,你会在地面以下0.3个单位,然后再次将速度翻转到+0.49 在下一帧中,您位于地面以下0.79个单位,然后再次翻转标志,依此类推。你永远也出不去 尝试:
地心引力似乎正如你所预料的那样起作用。如果你想让“玩家”在触底时反弹,你需要建立能量守恒模型,玩家处于完全弹性(即通过反弹释放碰撞能量)和完全塑性(即完全吸收碰撞能量)之间@Simon我认为
speed=speed*-0.7
是试图模拟弹跳。@irrelephant:啊,是的,你是对的。另外,如果玩家打算保持在底部以上,测试可能类似于if player_y+player.get_height()>disp_h:player_y=disp_h-player.get_height(),假设player_y
是播放器图像的顶部。
if player_y > disp_h:
# stop the player at the floor
player_y = disp_h
speed = speed * -0.7