lotsa fixes:
- fixed obstacle collision and death on obstacle spike - moved player move into separate loop after other collision checks are done - fixed level setup, generation and selection - added test levels for obstacles
This commit is contained in:
@@ -52,7 +52,7 @@ func (system *ObstacleSystem) Update() {
|
||||
playerposition := (*Position)(system.World.Get(player, posID))
|
||||
playervelocity := (*Velocity)(system.World.Get(player, veloID))
|
||||
|
||||
ok, newpos := playerposition.Intersects(obsposition, playervelocity)
|
||||
ok, newpos := obsposition.Intersects(playerposition, playervelocity)
|
||||
if ok {
|
||||
slog.Debug("bumped into obstacle", "obstacle", obstacle)
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ func (system PlayerSystem) Update() error {
|
||||
query := system.Selector.Query(system.World)
|
||||
|
||||
for query.Next() {
|
||||
playerposition, velocity, _, _, speed := query.Get()
|
||||
playerposition, velocity, _, _, _ := query.Get()
|
||||
|
||||
if !velocity.Moving() {
|
||||
switch {
|
||||
@@ -71,14 +71,19 @@ func (system PlayerSystem) Update() error {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
playerposition.Move(velocity, speed)
|
||||
}
|
||||
|
||||
system.Particle.Update()
|
||||
system.Particle.Update() // may set player position
|
||||
system.Obstacle.Update()
|
||||
system.Collectible.Update()
|
||||
|
||||
query = system.Selector.Query(system.World)
|
||||
for query.Next() {
|
||||
// move player after obstacle or collectible updates
|
||||
playerposition, velocity, _, _, speed := query.Get()
|
||||
playerposition.Move(velocity, speed)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user