Fixed issue in box collision
parent
e83a418702
commit
1a24f7c091
|
@ -10,7 +10,7 @@
|
|||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,,,,,,,,,,,,,,,,,,,,C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,,,,,,,,,,,,,,,,,M,,,C,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,
|
||||
,,,,,,,,,,,,,,,,+,+,+,+,+,+,+,+,+,,,,,,,,,,,,,,,,,,,,,+,+,+,+,+,,,,,,,,,,,
|
||||
,,,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,,,,,,,,#,#,#,#,#,+,+,+,+,,,,,,,
|
||||
,,,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,,,,,,,+,+,+,+,+,+,+,,,,,,,,#,#,#,#,#,#,#,#,#,,,,,,,
|
||||
|
@ -43,4 +43,4 @@ AQ,18,requires_xor=lever-1;button-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|||
AU,32,requires_and=lever-1;button-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
AJ,33,id=lever-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Q,34,id=button-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
F,23,size=7,,weight=0.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
F,23,size=8,,weight=0.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
Binary file not shown.
After Width: | Height: | Size: 985 B |
|
@ -353,6 +353,19 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "debug_1",
|
||||
"subsheets": [
|
||||
{
|
||||
"id": "1",
|
||||
"delays": [
|
||||
1
|
||||
],
|
||||
"width": 24,
|
||||
"height": 24
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "test_1",
|
||||
"subsheets": [
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from typing import Optional
|
||||
|
||||
from level.Level import Level
|
||||
from level.elements.dynamic.BouncingBallLevelElement import BouncingBallLevelElement
|
||||
from level.elements.dynamic.PushableBoxLevelElement import PushableBoxLevelElement
|
||||
from level.elements.static.ButtonInputLevelElement import ButtonInputLevelElement
|
||||
from level.elements.static.GateReceiverLevelElement import GateReceiverLevelElement
|
||||
|
@ -27,6 +28,7 @@ TILES = {
|
|||
'G': GateReceiverLevelElement,
|
||||
|
||||
'M': PushableBoxLevelElement,
|
||||
'q': BouncingBallLevelElement,
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
from level.Level import Level
|
||||
from level.elements.dynamic.PushableLevelElement import PushableLevelElement
|
||||
from physics.SpriteManager import SpriteManager
|
||||
from sprite.SpritesheetManager import SpritesheetManager
|
||||
|
||||
|
||||
class BouncingBallLevelElement(PushableLevelElement):
|
||||
def __init__(self, tile: dict, loaded_level):
|
||||
super().__init__(tile, loaded_level)
|
||||
|
||||
self.bounce_factor = -1
|
||||
|
||||
def load(self, sprite_manager: SpriteManager, spritesheet_manager: SpritesheetManager, level: Level):
|
||||
self.spritesheet = spritesheet_manager.get_sheet('debug_1')
|
||||
self.set_animation_state('1')
|
||||
self.position_scale.position = self.tile['position']
|
||||
self.position_scale.scale = (0.5, 0.5)
|
|
@ -18,7 +18,7 @@ from ui_elements.KeyManager import KeyManager
|
|||
from ui_elements.LevelMenu import LevelMenu
|
||||
from ui_elements.TextLabel import TextLabel
|
||||
|
||||
what_to_run = 'menu'
|
||||
what_to_run = 'level'
|
||||
|
||||
|
||||
def apply_frame_rate(number: float):
|
||||
|
|
|
@ -109,7 +109,7 @@ class PhysicsElementsHandler:
|
|||
sprite.position_scale.position[1]
|
||||
)
|
||||
|
||||
sprite.motion = (0, sprite.motion[1])
|
||||
sprite.motion = (sprite.motion[0] * sprite.bounce_factor, sprite.motion[1])
|
||||
|
||||
collides_with_last = collider
|
||||
collided[0] = True
|
||||
|
@ -153,14 +153,15 @@ class PhysicsElementsHandler:
|
|||
sprite.position_scale.position[1] - motion_step[1]
|
||||
)
|
||||
|
||||
sprite.motion = (sprite.motion[0], 0)
|
||||
sprite.motion = (sprite.motion[0], sprite.motion[1] * sprite.bounce_factor)
|
||||
|
||||
collides_with_last = collider
|
||||
collided[1] = True
|
||||
|
||||
return collides_with_last
|
||||
|
||||
def check_collides(self, sprite: StaticSprite, colliders: list[StaticSprite], screen_transform: PositionScale) -> list[StaticSprite]:
|
||||
def check_collides(self, sprite: StaticSprite, colliders: list[StaticSprite], screen_transform: PositionScale) -> \
|
||||
list[StaticSprite]:
|
||||
collides_with = []
|
||||
|
||||
for collider in colliders:
|
||||
|
@ -171,7 +172,7 @@ class PhysicsElementsHandler:
|
|||
continue
|
||||
if sprite.collides_with(collider, TOLERANCE):
|
||||
collides_with.append(collider)
|
||||
if len(collides_with) >= 2:
|
||||
if len(collides_with) > 5:
|
||||
break
|
||||
|
||||
return collides_with
|
||||
|
|
|
@ -17,6 +17,8 @@ class DynamicSprite(StaticSprite):
|
|||
self.deceleration_horizontal_ground = 0.3
|
||||
self.gravity = 9.81 / 10
|
||||
|
||||
self.bounce_factor = 0
|
||||
|
||||
def tick(self, tick_data: TickData):
|
||||
super().tick(tick_data)
|
||||
|
||||
|
|
Loading…
Reference in New Issue