Added Objects

This commit is contained in:
Exobyt 2024-09-09 19:36:34 +02:00
parent eb11047456
commit 78dcaac886
11 changed files with 148 additions and 35 deletions

View file

@ -3,15 +3,17 @@
[ext_resource type="Script" path="res://scenes/game/entities/entity.gd" id="1_s7hj7"]
[node name="Entity" type="CharacterBody2D" groups=["Entity"]]
light_mask = 4
visibility_layer = 4
z_index = 1
y_sort_enabled = true
collision_layer = 2
script = ExtResource("1_s7hj7")
[node name="Area2D" type="Area2D" parent="." groups=["Entity"]]
collision_layer = 8
collision_mask = 16
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
light_mask = 4
visibility_layer = 5
z_index = 1
y_sort_enabled = true

View file

@ -5,6 +5,8 @@ extends "res://scenes/game/entities/entity.gd"
@onready var animatedSprite = $AnimatedSprite2D
@onready var pickupArea = $PickupArea
var rollSpeed = maxSpeed * 5
const rollCooldown = 5.0
@ -14,6 +16,9 @@ var rolling = false
var canRoll = true
var carrying = false
var object = null
var lastDirection : Vector2
var lastdirectionVector : Vector2
@ -31,6 +36,17 @@ func _physics_process(delta: float) -> void:
lastdirectionVector = directionVector
if Input.is_action_just_pressed("ROLL") and lastDirection != Vector2.ZERO:
roll()
if Input.is_action_just_pressed("INTERACT"):
match carrying:
false:
if pickupArea.get_overlapping_areas() != []:
pickup(pickupArea.get_overlapping_areas()[0])
true:
dropObject()
#pickupArea.get_overlapping_areas()[0].pickup(self)
#print(pickupArea.get_overlapping_areas())
if rolling:
move(lastdirectionVector * speed, acceleration)
else:
@ -48,21 +64,12 @@ func move(newVelocity : Vector2, acc):
func roll():
if not rolling and canRoll:
dropObject()
canRoll = false
setSpeed(rollSpeed)
invincible = true
rolling = true
rollTimer.start(rollTime)
func _on_roll_timeout() -> void:
resetSpeed()
invincible = false
rolling = false
rollCooldownTimer.start(rollCooldown)
func _on_roll_cooldown_timer_timeout() -> void:
canRoll = true
func setAnimation():
if not rolling:
@ -76,3 +83,28 @@ func setAnimation():
animatedSprite.play("DOWN")
elif not (Input.is_action_pressed("MOVE_UP") or Input.is_action_pressed("MOVE_RIGHT") or Input.is_action_pressed("MOVE_DOWN") or Input.is_action_pressed("MOVE_LEFT")):
animatedSprite.play("IDLE")
func _on_roll_timeout() -> void:
resetSpeed()
invincible = false
rolling = false
rollCooldownTimer.start(rollCooldown)
func _on_roll_cooldown_timer_timeout() -> void:
canRoll = true
func pickup(newObject):
if newObject.player == null and not rolling:
carrying = true
object = newObject
speed -= object.getWeight()
object.pickup(self)
func dropObject():
if carrying:
carrying = false
object.drop()
object = null
resetSpeed()

View file

@ -4,27 +4,21 @@
[ext_resource type="Script" path="res://scenes/game/entities/player/player.gd" id="2_s0pfn"]
[ext_resource type="SpriteFrames" uid="uid://dv18sf3aj0n1h" path="res://scenes/game/entities/player/player.tres" id="3_mlsai"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_gk017"]
size = Vector2(16, 16)
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_upmug"]
radius = 8.0
height = 16.0
[sub_resource type="CircleShape2D" id="CircleShape2D_8u3aq"]
radius = 8.0
[node name="Player" groups=["Player"] instance=ExtResource("1_kmfws")]
script = ExtResource("2_s0pfn")
[node name="Area2D" parent="." index="0" groups=["Player"]]
[node name="CollisionShape2D" parent="Area2D" index="0"]
position = Vector2(0, 8)
shape = SubResource("RectangleShape2D_gk017")
[node name="CollisionShape2D" parent="." index="1"]
[node name="CollisionShape2D" parent="." index="0"]
position = Vector2(0, 8)
shape = SubResource("CapsuleShape2D_upmug")
[node name="AnimatedSprite2D" parent="." index="2"]
[node name="AnimatedSprite2D" parent="." index="1"]
sprite_frames = ExtResource("3_mlsai")
animation = &"DOWN"
metadata/_aseprite_wizard_config_ = {
@ -41,16 +35,24 @@ metadata/_aseprite_wizard_interface_config_ = {
"slice_section": false
}
[node name="Camera2D" type="Camera2D" parent="." index="3"]
[node name="Camera2D" type="Camera2D" parent="." index="2"]
zoom = Vector2(3, 3)
limit_smoothed = true
position_smoothing_enabled = true
[node name="RollTimer" type="Timer" parent="." index="4"]
[node name="RollTimer" type="Timer" parent="." index="3"]
one_shot = true
[node name="RollCooldownTimer" type="Timer" parent="." index="5"]
[node name="RollCooldownTimer" type="Timer" parent="." index="4"]
one_shot = true
[node name="PickupArea" type="Area2D" parent="." index="5" groups=["Player"]]
position = Vector2(0, 8)
collision_layer = 8
collision_mask = 4
[node name="CollisionShape2D" type="CollisionShape2D" parent="PickupArea" index="0"]
shape = SubResource("CircleShape2D_8u3aq")
[connection signal="timeout" from="RollTimer" to="." method="_on_roll_timeout"]
[connection signal="timeout" from="RollCooldownTimer" to="." method="_on_roll_cooldown_timer_timeout"]