gpt4 book ai didi

python - 具有重力的 Sprite 不随重力移动

转载 作者:行者123 更新时间:2023-12-01 02:17:38 25 4
gpt4 key购买 nike

我正在开发一款游戏,我需要让敌人向右或向左移动(方向是随机选择的)并上下弹跳。我已经设置好了,它基本上可以工作,但是重力很奇怪。它的上下弹跳不是平滑的,而是突然变化的。代码如下:

class Mob(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image=pygame.Surface((30,40))
self.image.fill(RED)
self.rect = self.image.get_rect()
self.direct = random.randrange(2)
if self.direct == 0:
self.rect.x = -20.0
else:
self.rect.x = 500.0
self.rect.y = 180.0
self.speedy = 0.0

def update(self):
if self.rect.y >= 275:
self.speedy = -3.0
else:
self.speedy += 0.02

if self.direct == 0:
self.rect.x += 1.0
if self.rect.x > width + 20:
self.rect.x = -20
else:
self.rect.x -= 1.0
if self.rect.x > width - 500:
self.rect.x = 500

self.rect.y = self.rect.y + self.speedy

all_sprites = pygame.sprite.Group()
mobs = pygame.sprite.Group()
for i in range(2):
m = Mob()
all_sprites.add(m)
mobs.add(m)

吸引敌人的代码是这样的:

all_sprites.update()
all_sprites.draw(screen)

pygame.display.flip()

敌人目前只是一个红色矩形,但我将用其他东西替换它。如果你不亲自尝试,很难准确解释问题出在哪里。你可以尝试运行这个:

import pygame
import math
import random
from pygame.locals import *

RED = (255,0,0)
FPS = 120

class Mob(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image=pygame.Surface((30,40))
self.image.fill(RED)
self.rect = self.image.get_rect()
self.direct = random.randrange(2)
if self.direct == 0:
self.rect.x = -20.0
else:
self.rect.x = 500.0
self.rect.y = 180.0
self.speedy = 0.0

def update(self):
if self.rect.y >= 275:
self.speedy = -3.0
else:
self.speedy += 0.02

if self.direct == 0:
self.rect.x += 1.0
if self.rect.x > width + 20:
self.rect.x = -20
else:
self.rect.x -= 1.0
if self.rect.x > width - 500:
self.rect.x = 500

self.rect.y = self.rect.y + self.speedy

all_sprites = pygame.sprite.Group()
mobs = pygame.sprite.Group()
for i in range(2):
m = Mob()
all_sprites.add(m)
mobs.add(m)

while True:
clock.tick(FPS)
all_sprites.update()
all_sprites.draw(screen)

pygame.display.flip()

如果那段代码不起作用,那么抱歉,我对 python 和 pygame 还很陌生。

最佳答案

你的重力太低。尝试更高的值,例如 0.08

if self.rect.y >= 275:
self.speedy = -3.0
else:
self.speedy += 0.08

关于python - 具有重力的 Sprite 不随重力移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48246131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com