Reworked CollisionSwitcher to the arrays
This commit is contained in:
@@ -7,4 +7,4 @@ extends AbstractCultist
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
collision_switcher.material = sprite.material
|
||||
collision_switcher.add_material(sprite.material)
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
[ext_resource type="Script" uid="uid://das7ujanefsn0" path="res://game/characters/enemies/abstract_color_cultist.gd" id="2_rd56i"]
|
||||
[ext_resource type="PackedScene" uid="uid://5qlocc0yu8ug" path="res://game/collision_switcher.tscn" id="3_e5cea"]
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_c7l74"]
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_f5md8"]
|
||||
viewport_path = NodePath("SubViewport")
|
||||
|
||||
[node name="AbstractColorCultist" unique_id=644641841 instance=ExtResource("1_12hr0")]
|
||||
script = ExtResource("2_rd56i")
|
||||
|
||||
[node name="CultistSprite" parent="." index="0" unique_id=797412888]
|
||||
texture = SubResource("ViewportTexture_c7l74")
|
||||
[node name="CultistSprite" parent="." index="1" unique_id=797412888]
|
||||
texture = SubResource("ViewportTexture_f5md8")
|
||||
|
||||
[node name="CollisionSwitcher" parent="." index="2" unique_id=991274552 node_paths=PackedStringArray("object") instance=ExtResource("3_e5cea")]
|
||||
object = NodePath("..")
|
||||
[node name="CollisionSwitcher" parent="." index="2" unique_id=991274552 node_paths=PackedStringArray("objects") instance=ExtResource("3_e5cea")]
|
||||
objects = [NodePath("..")]
|
||||
|
||||
@@ -29,14 +29,17 @@ var _is_switching_needed := false
|
||||
@onready var particles : GPUParticles2D = $GPUParticles2D
|
||||
@onready var collision_switcher : CollisionSwitcher = $CollisionSwitcher
|
||||
@onready var pickups : Node2D = $Pickups
|
||||
|
||||
@onready var switch_buffer_timer : Timer = $SwitchBufferTimer
|
||||
@onready var jump_buffer_timer : Timer = $JumpBufferTimer
|
||||
@onready var coyote_time_timer : Timer = $CoyoteTimeTimer
|
||||
|
||||
@onready var center_area : Area2D = $CenterArea2D
|
||||
@onready var state_machine : PlayerStateMachine = $PlayerStateMachine
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
collision_switcher.material = sprite.material
|
||||
collision_switcher.add_material(sprite.material)
|
||||
|
||||
state_machine.init()
|
||||
|
||||
@@ -77,7 +80,7 @@ func _physics_process(delta: float) -> void:
|
||||
else:
|
||||
_slow_down(delta)
|
||||
|
||||
if _is_switching_needed:
|
||||
if _is_switching_needed and not is_dead:
|
||||
_switch()
|
||||
|
||||
move_and_slide()
|
||||
@@ -85,22 +88,19 @@ func _physics_process(delta: float) -> void:
|
||||
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if event.is_action_pressed("switch_color") and can_switch_color and not particles.emitting:
|
||||
if event.is_action_pressed("switch_color") and can_switch_color and not is_dead:
|
||||
_is_switching_needed = true
|
||||
switch_buffer_timer.start()
|
||||
_switch()
|
||||
|
||||
|
||||
func _switch() -> void:
|
||||
_is_switching_needed = false
|
||||
|
||||
if is_dead:
|
||||
return
|
||||
|
||||
if center_area.get_overlapping_bodies().size() == 0:
|
||||
func _switch() -> void:
|
||||
if center_area.get_overlapping_bodies().size() == 0 and not particles.emitting:
|
||||
SoundManager.play_sfx_stream(SoundManager.sfx_stream_switch, global_position)
|
||||
collision_switcher.switch_color()
|
||||
switch_buffer_timer.stop()
|
||||
particles.restart()
|
||||
else:
|
||||
_is_switching_needed = true
|
||||
_is_switching_needed = false
|
||||
|
||||
|
||||
func kill(type := KillingArea.Type.None) -> void:
|
||||
@@ -141,3 +141,7 @@ func _rearrange_pickups() -> void:
|
||||
var node := children[i] as Node2D
|
||||
node.position.x = i * PICKUP_OFFSET - pickup_shift
|
||||
node.position.y = 0
|
||||
|
||||
|
||||
func _on_switch_buffer_timer_timeout() -> void:
|
||||
_is_switching_needed = false
|
||||
|
||||
@@ -59,8 +59,8 @@ process_material = SubResource("ParticleProcessMaterial_bfpdl")
|
||||
position = Vector2(0, 1)
|
||||
shape = SubResource("CapsuleShape2D_xln5q")
|
||||
|
||||
[node name="CollisionSwitcher" parent="." unique_id=601548821 node_paths=PackedStringArray("object") instance=ExtResource("2_j06tb")]
|
||||
object = NodePath("..")
|
||||
[node name="CollisionSwitcher" parent="." unique_id=601548821 node_paths=PackedStringArray("objects") instance=ExtResource("2_j06tb")]
|
||||
objects = [NodePath("..")]
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="." unique_id=45512317]
|
||||
process_callback = 0
|
||||
@@ -76,6 +76,10 @@ drag_bottom_margin = 0.1
|
||||
[node name="Pickups" type="Node2D" parent="." unique_id=958829860]
|
||||
position = Vector2(0, -24)
|
||||
|
||||
[node name="SwitchBufferTimer" type="Timer" parent="." unique_id=115300327]
|
||||
wait_time = 0.5
|
||||
one_shot = true
|
||||
|
||||
[node name="JumpBufferTimer" type="Timer" parent="." unique_id=740877224]
|
||||
wait_time = 0.1
|
||||
one_shot = true
|
||||
@@ -240,3 +244,5 @@ jump_right_state = NodePath("../JumpRightState")
|
||||
fall_state = NodePath("../FallState")
|
||||
fall_left_state = NodePath("../FallLeftState")
|
||||
fall_right_state = NodePath("../FallRightState")
|
||||
|
||||
[connection signal="timeout" from="SwitchBufferTimer" to="." method="_on_switch_buffer_timer_timeout"]
|
||||
|
||||
Reference in New Issue
Block a user