我的精靈在空中行走是因為它認為它正在接觸一個平台但它不是..?

傑普斯特爾

我一直在嘗試讓我的代碼正常工作,但我的精靈不受重力影響,當我嘗試一些 print() 以查看出了什麼問題時,似乎我的精靈認為它一直在接觸平台觸摸一次時..?問題的圖片

這是代碼:

tx   = 64
ty   = 64

class Player(pygame.sprite.Sprite):
  def __init__(self):
    pygame.sprite.Sprite.__init__(self)
    self.image = pygame.image.load('player.png').convert()
    self.movex = 0 # move along X
    self.movey = 0 # move along Y
    self.isJumping = True
    self.isFalling = True

  def gravity(self):
    if self.isJumping == True:
      self.movey += 3.2

  def update(self):
    platform_hit_list = pygame.sprite.spritecollide(self, platform_list, False)
    for p in platform_hit_list:
      self.isJumping = False  # stop jumping
      self.movey = 0

      if self.rect.bottom <= p.rect.bottom:
          self.rect.bottom = p.rect.top
      else:
          self.movey += 3.2
    
    self.rect.x = self.rect.x + self.movex  
    self.rect.y = self.rect.y + self.movey

class Level:
  def platform(lvl, tilesX, tilesY):
    platform_list = pygame.sprite.Group()
    platformLocation = []
    i = 0
    if lvl == 1:
      platformLocation.append((1000, height - tilesY - 100, 0))
      while i < len(platformLocation):
        j = 0
        while j <= platformLocation[i][2]:
          platform = Platform((platformLocation[i][0] + (j * tilesX)), platformLocation[i][1], tilesX, tilesY, 'platform.png')
          platform_list.add(platform)
          j = j + 1
        print('run' + str(i) + str(platformLocation[i]))
        i = i + 1
    return platform_list

platform_list = Level.platform(1, tx, ty)

對問題的一些解決方案和解釋感到高興

黑化

您顯示的代碼讓播放器以 開頭self.isJumping = True,但是一旦它Falseupdate函數中設置為(發生碰撞時),就再也不會設置為True這就是為什麼當您離開平台邊緣時不會跌倒的原因。

您可能希望在循環碰撞的平台之前設置isJumpingTrue,以便如果沒有碰撞,它將保持為True

def update(self):
    self.isJumping = True        # we're in the air by default
    platform_hit_list = pygame.sprite.spritecollide(self, platform_list, False)
    for p in platform_hit_list:
        self.isJumping = False   # unless we collide with something
        ...

如果您的遊戲中可能存在多種碰撞(例如步行或跳入牆壁的側面),您可能需要比這更複雜的碰撞響應代碼,因為只有平台正好靠近玩家腳的碰撞才會使它們發生停止墜落(否則跳入牆壁或天花板會很奇怪)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我正在嘗試從 csv 轉換為 json 並且它給出了一個錯誤,因為缺少值

使用 onmouseover() 製作了一個 <div> display:block 但我無法點擊它,因為一旦我將鼠標移開它就會因為 onmouseout() 而消失

我如何使它適合我的頁面,因為它看起來很小

我正在嘗試製作一個不和諧的機器人,它會發送一條消息提醒人們我們的秘密聖誕老人將在 1 週後出現,但它不起作用

不能為每個架構安裝擴展,因為它聲稱它存在於那裡(它沒有)。如何進一步強迫它?

c#無法訪問文件,因為它正被另一個進程使用

它確實添加了一個部分,但它不會更新導航欄

expect(...).toHaveAttribute 尽管正确扩展了它,但它不是一个函数

我在 Spring security 中為我的身份驗證管理器設置了一個父級,但它不起作用

為隨機數寫一個'for循環',它不是零(0),但我仍然得到零(0)

如果我打開一個文件,然後將它設置為一個變量,它會關閉文件嗎?

C 新手並試圖製作一個 collatz 猜想程序,但它不起作用,我不知道為什麼

我做了什麼來增強這個語句 select into 因為它需要太多時間來處理 2000 行?

我正在製作一個砲塔,但它不會射擊

我正在嘗試為商店產品創建一個類,當我嘗試打印使用我的類創建的對象時,它給了我消息“exercise_93.Product”

我正在使用 re.split() 並嘗試加入元素,但它不起作用。為什麼?

如何處理 IoTDB 數據庫中的“無法從 [[...]] 獲取下一個文件夾,因為它們都已滿”錯誤

我正在嘗試在 Swift 遊樂場中調用一個函數,但它要求我改為聲明該函數

Python如何列出一個數組並使它們成為一個枚舉

我想製作一個 js 函數,它從 div 中取出每個元素並為其激活一個 CSS 塊

(重複)[WinError 10061] 無法建立連接,因為目標機器主動拒絕它

我清楚地看到定義了一個位置參數,為什麼它給我這個錯誤?

我写了一个程序,它应该在输入“n”或“N”时终止,但它不起作用

AlertDialog 应该显示另一个 AlertDialog 但它不会发生,直到我关闭它并再次打开它

我在作為對象的方法上創建了一個查詢,但我不知道如何讓它返回對象

我已經為我的汽車精靈創建了子彈來射擊,但是當我按下空格鍵時,子彈精靈出現但消失了

我正在尝试做一个汉堡菜单,但是当我单击它时它不会显示

Python Flask json,我有一個需要加載的字典列表,然後將它們作為 html 中的表格返回

我想知道如果我將它包裝在標籤中,為什麼它不會在 JavaScript click 函數中一遍又一遍地顯示循環結果