From 709ff4e6c1d96f7b1954a31670af0e127347d8bb Mon Sep 17 00:00:00 2001 From: Ervan Lefevre Date: Sat, 30 Sep 2023 18:09:38 +0200 Subject: [PATCH] :adhesive_bandage: You can now grab npcs --- nodes/npc/npc.gd | 12 ++++++++++++ nodes/npc/npc.tscn | 6 +++--- nodes/player/player.gd | 2 -- nodes/player/player.tscn | 1 + scenes/poc.tscn | 1 + 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/nodes/npc/npc.gd b/nodes/npc/npc.gd index ea40987..c68aec1 100644 --- a/nodes/npc/npc.gd +++ b/nodes/npc/npc.gd @@ -11,6 +11,7 @@ const QUEUE_FREE_DELAY = 10 var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") var direction = 0 var rising_speed = 0 +@onready var original_parent = get_parent() func _ready(): pick_new_direction() @@ -49,6 +50,17 @@ func die(level_speed): rising_speed = level_speed +func grabbed(by): + $shape.disabled = true + $fsm.set_physics_process(false) + reparent(by) + +func dropped(): + $shape.disabled = false + $fsm.set_physics_process(true) + reparent(original_parent) + rotation = 0 + func pick_new_direction(): direction = [1,-1][randi_range(0,1)] * SPEED diff --git a/nodes/npc/npc.tscn b/nodes/npc/npc.tscn index a6eaf77..571e64b 100644 --- a/nodes/npc/npc.tscn +++ b/nodes/npc/npc.tscn @@ -5,10 +5,10 @@ [ext_resource type="Script" path="res://scripts/ia/fsm.gd" id="3_vhp64"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_f223n"] -radius = 1.0 -height = 4.0 +radius = 6.0 +height = 14.0 -[node name="npc" type="CharacterBody2D" groups=["npc"]] +[node name="npc" type="CharacterBody2D" groups=["npc", "obstacle"]] script = ExtResource("1_38jh5") [node name="shape" type="CollisionShape2D" parent="."] diff --git a/nodes/player/player.gd b/nodes/player/player.gd index ec3b468..8f7ff50 100644 --- a/nodes/player/player.gd +++ b/nodes/player/player.gd @@ -155,11 +155,9 @@ func handle_grab(): if Input.is_action_just_pressed('player_action'): if grabbed_obstacle == null: var collision = grab_ray.get_collider() - print('collision', collision) if collision: var obstacle = collision - print('obstacle', obstacle) if obstacle.is_in_group("obstacle"): do_grab(obstacle) else: diff --git a/nodes/player/player.tscn b/nodes/player/player.tscn index c59eed0..f2f50a4 100644 --- a/nodes/player/player.tscn +++ b/nodes/player/player.tscn @@ -5,6 +5,7 @@ [ext_resource type="Script" path="res://scripts/ia/fsm.gd" id="2_ix1o4"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_w17ly"] +radius = 9.0 height = 24.0 [node name="player" type="CharacterBody2D"] diff --git a/scenes/poc.tscn b/scenes/poc.tscn index 15058af..9fcb350 100644 --- a/scenes/poc.tscn +++ b/scenes/poc.tscn @@ -243,6 +243,7 @@ position = Vector2(1608, 1312) [node name="water_level" type="Area2D" parent="." groups=["level"]] position = Vector2(1736, 3056) monitorable = false +linear_damp_space_override = 1 script = ExtResource("4_ts3u4") RISING_SPEED = 10