簡體   English   中英

為什么我的角色不會在pygame / python中跳

[英]Why won't my character jump in pygame/python

這是我制作的第一款Pygame游戲。

我打算制作一個2人基本格斗游戲。

我現在正在嘗試跳入第一個字符,在我看來,所有邏輯看起來都是正確的,目前我沒有任何錯誤。 但是,當我嘗試按w跳躍時,什么也沒有發生!

所有幫助表示贊賞。 (PS,如果您想知道為什么我的腳本中沒有類,我似乎無法理解類,它們會使我非常困惑:P)謝謝,這是我的代碼:

import pygame

pygame.init()

#Sets up 8 bit colours
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
lightblue = (180,235,255)
grassgreen =(20,200,50)

#Sets up pygame window
gameDisplay = pygame.display.set_mode((1000,600))
pygame.display.set_caption('Block Fighter')

gameExit = False

#Variables
x = 50
y = 480
x_change = 0
y_change = 0

clock = pygame.time.Clock()

#Main Game Loop
while not gameExit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gameExit = True
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a:
                x_change = -5
            if event.key == pygame.K_d:
                x_change = 5
            if event.key == pygame.K_w:
                y_change = -5
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_a or event.key == pygame.K_d:
                x_change = 0

    if y <= 480:
        onGround = False
    else:
        onGround = True
    if onGround == False:
        y_change = 5
    if onGround == True:
        y_change = 0


    x += x_change
    y += y_change

    gameDisplay.fill(lightblue)
    pygame.draw.rect(gameDisplay, grassgreen, [1000,600,-1000,-100])
    pygame.draw.rect(gameDisplay, black, [x,y,20,20])
    pygame.display.update()

    clock.tick(40)

pygame.quit()
quit()

當您按w跳時,游戲將按預期將y_change的值y_change-5 處理完事件隊列后,將繼續以下步驟:

if y <= 480:
        onGround = False
else:
    onGround = True
if onGround == False:
    y_change = 5
if onGround == True:
    y_change = 0

您的物理效果目前尚未被模擬,因此您的角色仍處於地面。 換句話說, onGround仍然為True 因此, if onGround == True: y_change = 0代碼將被執行,並且y_change再次設置回0。

在發生這種情況之后,將進行物理模擬,並且y_change現在為0。這就是為什么角色不跳躍的原因。 您需要重新設計代碼,以使游戲在檢查角色是否在地面時意識到您的角色開始跳躍。 祝您比賽順利!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM