Modified collision boxes
This commit is contained in:
@@ -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
@@ -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)
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user