Fixes Hivemind being stuck to player when colliding
This commit is contained in:
@@ -138,15 +138,18 @@ func _ready() -> void:
|
|||||||
_core_visual.visible = false # hidden during assembly
|
_core_visual.visible = false # hidden during assembly
|
||||||
_core_visual.scale = Vector2(_core_scale, _core_scale)
|
_core_visual.scale = Vector2(_core_scale, _core_scale)
|
||||||
|
|
||||||
# Scale down collision during assembly (contact area disabled, but hitbox active for projectiles)
|
# During assembly: disable contact area and player collision
|
||||||
|
# Only collide with walls (layer 1) to avoid "attaching" to player
|
||||||
if _contact_area:
|
if _contact_area:
|
||||||
_contact_area.monitoring = false
|
_contact_area.monitoring = false
|
||||||
_contact_area.monitorable = false
|
_contact_area.monitorable = false
|
||||||
_contact_area.scale = Vector2(_core_scale, _core_scale)
|
_contact_area.scale = Vector2(_core_scale, _core_scale)
|
||||||
if _collision_shape:
|
if _collision_shape:
|
||||||
# Keep hitbox enabled but scaled - boss is invulnerable during assembly via take_damage()
|
|
||||||
_collision_shape.scale = Vector2(_core_scale, _core_scale)
|
_collision_shape.scale = Vector2(_core_scale, _core_scale)
|
||||||
|
|
||||||
|
# Disable player collision during assembly (mask 1 = walls only, not 3 = walls+player)
|
||||||
|
collision_mask = 1
|
||||||
|
|
||||||
|
|
||||||
func _physics_process(delta: float) -> void:
|
func _physics_process(delta: float) -> void:
|
||||||
_tick_spawn_delay(delta)
|
_tick_spawn_delay(delta)
|
||||||
@@ -318,6 +321,9 @@ func _enter_active() -> void:
|
|||||||
if _collision_shape:
|
if _collision_shape:
|
||||||
_collision_shape.scale = Vector2(1.0, 1.0)
|
_collision_shape.scale = Vector2(1.0, 1.0)
|
||||||
|
|
||||||
|
# Re-enable player collision (mask 3 = walls + player)
|
||||||
|
collision_mask = 3
|
||||||
|
|
||||||
_teleport_timer = 2.0
|
_teleport_timer = 2.0
|
||||||
_sweep_timer = 3.0
|
_sweep_timer = 3.0
|
||||||
_orbit_replenish_timer = ORBIT_REPLENISH_CD
|
_orbit_replenish_timer = ORBIT_REPLENISH_CD
|
||||||
|
|||||||
Reference in New Issue
Block a user