Modified collision boxes

This commit is contained in:
Nikolya Andreychik
2021-04-05 14:01:42 -07:00
parent 843df27d16
commit bbf81505e2
4 changed files with 54 additions and 2 deletions
+21
View File
@@ -0,0 +1,21 @@
"""
CollisionBox entity class
"""
import pygame
class CollisionBox(pygame.sprite.Sprite):
def __init__(self, offsetX, offsetY, width, height, center):
pygame.sprite.Sprite.__init__(self)
self.offset = (offsetX, offsetY)
self.size = (width, height)
self.rect = pygame.Rect(0, 0, width, height)
self.rect.center = center
self.rect.x += self.offset[0]
self.rect.y += self.offset[1]
def setY(self, y):
self.rect.y = y + self.offset[1]
+5 -2
View File
@@ -174,7 +174,9 @@ class Drakora():
if self.drawBoxes:
for player in self.players:
pygame.draw.rect(self.screen, (255, 0, 0), player.rect, 1)
for collision in self.player.getCollisionBoxes():
pygame.draw.rect(self.screen, (255, 0, 0), collision.rect, 1)
# pygame.draw.rect(self.screen, (255, 0, 0), player.rect, 1)
for enemy in self.enemies:
pygame.draw.rect(self.screen, (255, 0, 0), enemy.rect, 1)
for floor in self.floors:
@@ -237,7 +239,7 @@ class Drakora():
def collideCheck(self):
if pygame.sprite.spritecollideany(self.player, self.enemies):
if sum([1 if pygame.sprite.spritecollideany(i, self.enemies) else 0 for i in self.player.getCollisionBoxes()]):
if not self.isGodmode: self.isGameOver = True
if self.player.isOnFloor:
@@ -254,6 +256,7 @@ class Drakora():
def doCheats(self):
# self.drawBoxes = True
if self.isPressedKeysUpdated:
pressedKeysStr = ''.join(self.pressedKeys)
+27
View File
@@ -6,6 +6,7 @@ Player entity class
import pygame
import math
import os
from CollisionBox import CollisionBox
class Player(pygame.sprite.Sprite):
@@ -40,6 +41,9 @@ class Player(pygame.sprite.Sprite):
for image in array:
image.set_colorkey((255,0,255))
def getCollisionBoxes(self):
return self.collisionBoxes
def __init__(self):
pygame.sprite.Sprite.__init__(self)
@@ -64,18 +68,38 @@ class Player(pygame.sprite.Sprite):
self.gameSpeed = 1
self.updateCount = 0
self.collisionBoxes = []
collision = CollisionBox(0, 20, 60, 20, self.rect.center)
self.collisionBoxes.append(collision)
collision = CollisionBox(-10, 5, 30, 20, self.rect.center)
self.collisionBoxes.append(collision)
collision = CollisionBox(0, 35, 25, 40, self.rect.center)
self.collisionBoxes.append(collision)
# self.collisionBoxes.append(self)
# collision = pygame.sprite.Sprite()
# collision.rect = pygame.Rect(0, 0, 25, 80)
# collision.rect.center = self.rect.center
# self.collisionBoxes.append(collision)
def crouch(self):
if not self.isCrouching:
self.isCrouching = True
self.rect = self.rect.inflate(0, -32)
for i in self.collisionBoxes:
i.rect = i.inflate(0, -32)
def standup(self):
if self.isCrouching:
self.isCrouching = False
self.rect = self.rect.inflate(0, 32)
for i in self.collisionBoxes:
i.rect = i.inflate(0, 32)
def updateSpeed(self, newGameSpeed):
self.gameSpeed = newGameSpeed
@@ -134,6 +158,9 @@ class Player(pygame.sprite.Sprite):
self.rect.y += self.speed
for i in self.collisionBoxes:
i.setY(self.rect.y)
if self.updateCount >= 22 - math.log2(self.gameSpeed) * 2:
if self.isOnFloor:
if self.isCrouching:
+1
View File
@@ -3,3 +3,4 @@ Coolguy 1 10.75
Wow 74 185.72
Cheater 1000 0.01
New-Kolya 2 15.20
1 1 10.02