mirror of
https://github.com/Steffo99/hella-farm.git
synced 2024-11-22 08:04:23 +00:00
I made BetterCharacterBody2D
and then forgot to commit
This commit is contained in:
parent
bad1bec1c4
commit
3362124bc5
11 changed files with 107 additions and 68 deletions
|
@ -1,4 +1,4 @@
|
||||||
extends CharacterBody2D
|
extends BetterCharacterBody2D
|
||||||
class_name Chupacabra
|
class_name Chupacabra
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
extends CharacterBody2D
|
extends BetterCharacterBody2D
|
||||||
class_name Cthulhu
|
class_name Cthulhu
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ class_name Cthulhu
|
||||||
|
|
||||||
|
|
||||||
func _on_move(movement: Vector2):
|
func _on_move(movement: Vector2):
|
||||||
move_and_collide(movement)
|
better_move_and_collide(movement)
|
||||||
sprite.handle_move(movement)
|
sprite.handle_move(movement)
|
||||||
|
|
||||||
func _on_dragged(_cursor: Cursor) -> void:
|
func _on_dragged(_cursor: Cursor) -> void:
|
||||||
|
|
|
@ -68,58 +68,6 @@ tracks/3/keys = {
|
||||||
"values": [0.0]
|
"values": [0.0]
|
||||||
}
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_qhrn0"]
|
|
||||||
resource_name = "drag_start"
|
|
||||||
length = 0.4
|
|
||||||
tracks/0/type = "value"
|
|
||||||
tracks/0/imported = false
|
|
||||||
tracks/0/enabled = true
|
|
||||||
tracks/0/path = NodePath("SpriteFocus/Sprite:scale")
|
|
||||||
tracks/0/interp = 1
|
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"times": PackedFloat32Array(0, 0.4),
|
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector2(2, 2), Vector2(2.4, 2.4)]
|
|
||||||
}
|
|
||||||
tracks/1/type = "value"
|
|
||||||
tracks/1/imported = false
|
|
||||||
tracks/1/enabled = true
|
|
||||||
tracks/1/path = NodePath("SpriteFocus/Sprite:left_texture")
|
|
||||||
tracks/1/interp = 1
|
|
||||||
tracks/1/loop_wrap = true
|
|
||||||
tracks/1/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 1,
|
|
||||||
"values": [ExtResource("5_6ho60")]
|
|
||||||
}
|
|
||||||
tracks/2/type = "value"
|
|
||||||
tracks/2/imported = false
|
|
||||||
tracks/2/enabled = true
|
|
||||||
tracks/2/path = NodePath("SpriteFocus/Sprite:right_texture")
|
|
||||||
tracks/2/interp = 1
|
|
||||||
tracks/2/loop_wrap = true
|
|
||||||
tracks/2/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 1,
|
|
||||||
"values": [ExtResource("6_behik")]
|
|
||||||
}
|
|
||||||
tracks/3/type = "value"
|
|
||||||
tracks/3/imported = false
|
|
||||||
tracks/3/enabled = true
|
|
||||||
tracks/3/path = NodePath("SpriteFocus:rotation")
|
|
||||||
tracks/3/interp = 1
|
|
||||||
tracks/3/loop_wrap = true
|
|
||||||
tracks/3/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [0.0]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_iyn5h"]
|
[sub_resource type="Animation" id="Animation_iyn5h"]
|
||||||
resource_name = "drag_loop"
|
resource_name = "drag_loop"
|
||||||
length = 2.0
|
length = 2.0
|
||||||
|
@ -173,6 +121,58 @@ tracks/3/keys = {
|
||||||
"values": [-0.10472, 0.10472]
|
"values": [-0.10472, 0.10472]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_qhrn0"]
|
||||||
|
resource_name = "drag_start"
|
||||||
|
length = 0.4
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("SpriteFocus/Sprite:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.4),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(2, 2), Vector2(2.4, 2.4)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("SpriteFocus/Sprite:left_texture")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ExtResource("5_6ho60")]
|
||||||
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("SpriteFocus/Sprite:right_texture")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [ExtResource("6_behik")]
|
||||||
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("SpriteFocus:rotation")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [0.0]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_clmy5"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_clmy5"]
|
||||||
_data = {
|
_data = {
|
||||||
"RESET": SubResource("Animation_aspa2"),
|
"RESET": SubResource("Animation_aspa2"),
|
||||||
|
@ -207,8 +207,8 @@ unique_name_in_owner = true
|
||||||
libraries = {
|
libraries = {
|
||||||
"": SubResource("AnimationLibrary_clmy5")
|
"": SubResource("AnimationLibrary_clmy5")
|
||||||
}
|
}
|
||||||
next/drag_start = &"drag_loop"
|
|
||||||
next/drag_loop = &"drag_loop"
|
next/drag_loop = &"drag_loop"
|
||||||
|
next/drag_start = &"drag_loop"
|
||||||
blend_times = [&"drag_start", &"drag_loop", 0.5]
|
blend_times = [&"drag_start", &"drag_loop", 0.5]
|
||||||
|
|
||||||
[node name="MovementSampler" parent="." instance=ExtResource("6_truco")]
|
[node name="MovementSampler" parent="." instance=ExtResource("6_truco")]
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
extends CharacterBody2D
|
extends BetterCharacterBody2D
|
||||||
class_name Imp
|
class_name Imp
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ class_name Imp
|
||||||
|
|
||||||
|
|
||||||
func _on_move(movement: Vector2):
|
func _on_move(movement: Vector2):
|
||||||
move_and_collide(movement)
|
better_move_and_collide(movement)
|
||||||
sprite.handle_move(movement)
|
sprite.handle_move(movement)
|
||||||
|
|
||||||
func _on_eater_eaten(edible: Edible) -> void:
|
func _on_eater_eaten(edible: Edible) -> void:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
extends CharacterBody2D
|
extends BetterCharacterBody2D
|
||||||
class_name Monocle
|
class_name Monocle
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ class_name Monocle
|
||||||
|
|
||||||
|
|
||||||
func _on_move(movement: Vector2) -> void:
|
func _on_move(movement: Vector2) -> void:
|
||||||
move_and_collide(movement)
|
better_move_and_collide(movement)
|
||||||
|
|
||||||
func _on_dragged(_cursor: Cursor) -> void:
|
func _on_dragged(_cursor: Cursor) -> void:
|
||||||
collision_layer = 16
|
collision_layer = 16
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
extends CharacterBody2D
|
extends BetterCharacterBody2D
|
||||||
class_name Sheep
|
class_name Sheep
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ class_name Sheep
|
||||||
|
|
||||||
|
|
||||||
func _on_move(movement: Vector2) -> void:
|
func _on_move(movement: Vector2) -> void:
|
||||||
move_and_collide(movement)
|
better_move_and_collide(movement)
|
||||||
sprite.handle_move(movement)
|
sprite.handle_move(movement)
|
||||||
|
|
||||||
func _on_dragged(_cursor: Cursor) -> void:
|
func _on_dragged(_cursor: Cursor) -> void:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
extends CharacterBody2D
|
extends BetterCharacterBody2D
|
||||||
class_name Skull
|
class_name Skull
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ class_name Skull
|
||||||
|
|
||||||
|
|
||||||
func _on_move(movement: Vector2) -> void:
|
func _on_move(movement: Vector2) -> void:
|
||||||
move_and_collide(movement)
|
better_move_and_collide(movement)
|
||||||
|
|
||||||
func _on_dragged(_cursor: Cursor) -> void:
|
func _on_dragged(_cursor: Cursor) -> void:
|
||||||
collision_layer = 16
|
collision_layer = 16
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
extends CharacterBody2D
|
extends BetterCharacterBody2D
|
||||||
class_name TopHat
|
class_name TopHat
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ class_name TopHat
|
||||||
|
|
||||||
|
|
||||||
func _on_move(movement: Vector2) -> void:
|
func _on_move(movement: Vector2) -> void:
|
||||||
move_and_collide(movement)
|
better_move_and_collide(movement)
|
||||||
|
|
||||||
func _on_dragged(_cursor: Cursor) -> void:
|
func _on_dragged(_cursor: Cursor) -> void:
|
||||||
collision_layer = 16
|
collision_layer = 16
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
extends CharacterBody2D
|
extends BetterCharacterBody2D
|
||||||
class_name Watcher
|
class_name Watcher
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ class_name Watcher
|
||||||
|
|
||||||
|
|
||||||
func _on_move(movement: Vector2):
|
func _on_move(movement: Vector2):
|
||||||
move_and_collide(movement)
|
better_move_and_collide(movement)
|
||||||
sprite.handle_move(movement)
|
sprite.handle_move(movement)
|
||||||
|
|
||||||
func _on_dragged(_cursor: Cursor) -> void:
|
func _on_dragged(_cursor: Cursor) -> void:
|
||||||
|
|
35
extensions/better_character_body_2d.gd
Normal file
35
extensions/better_character_body_2d.gd
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
extends CharacterBody2D
|
||||||
|
class_name BetterCharacterBody2D
|
||||||
|
|
||||||
|
## Emitted the first time [method better_move_and_collide] collides with something in a frame.
|
||||||
|
signal collided_once(collision: KinematicCollision2D)
|
||||||
|
|
||||||
|
## Emitted all times [method better_move_and_collide] collides with something in a frame.
|
||||||
|
signal collided(collision: KinematicCollision2D)
|
||||||
|
|
||||||
|
|
||||||
|
@export var physics_max_bounces: int = 3
|
||||||
|
|
||||||
|
|
||||||
|
func better_move_and_collide(movement: Vector2):
|
||||||
|
# How many times the body collided in the current physics step.
|
||||||
|
var bounces: int = 0
|
||||||
|
# While the body should still move some space, and it isn't stuck in a perpetual loop of bouncing...
|
||||||
|
while movement.length() > 0.0 and bounces < physics_max_bounces:
|
||||||
|
# Try to move!
|
||||||
|
var collision: KinematicCollision2D = move_and_collide(movement)
|
||||||
|
# If the body did not collide and performed its full movement, we're done!
|
||||||
|
if not collision:
|
||||||
|
break
|
||||||
|
# Let's try to handle the collision properly
|
||||||
|
bounces += 1
|
||||||
|
# Emit the signals
|
||||||
|
collided.emit(collision)
|
||||||
|
if bounces == 1:
|
||||||
|
collided_once.emit(collision)
|
||||||
|
# Determine the normal of the collision (the direction the body should be pushed back in)
|
||||||
|
var collision_normal = collision.get_normal()
|
||||||
|
# Change the velocity adequately
|
||||||
|
velocity = velocity.bounce(collision_normal)
|
||||||
|
# Reflect the remaining movement
|
||||||
|
movement = collision.get_remainder().bounce(collision_normal)
|
|
@ -22,6 +22,10 @@ window/size/viewport_height=720
|
||||||
window/size/initial_position_type=3
|
window/size/initial_position_type=3
|
||||||
window/size/resizable=false
|
window/size/resizable=false
|
||||||
|
|
||||||
|
[editor]
|
||||||
|
|
||||||
|
movie_writer/movie_file="/mnt/work/steffo/ld55/.build/movie/capture.avi"
|
||||||
|
|
||||||
[filesystem]
|
[filesystem]
|
||||||
|
|
||||||
import/blender/enabled=false
|
import/blender/enabled=false
|
||||||
|
|
Loading…
Reference in a new issue