a game about throwing hammers made for the github game off
even better anticrash
bendn 2022-12-01
parent 3e981ae · commit 3929790
-rw-r--r--hammers/8x14.tres4
-rw-r--r--hammers/hammer.gd9
-rw-r--r--hammers/hammer_base.tscn24
-rw-r--r--levels/Level.gd1
-rw-r--r--player/player.gd1
5 files changed, 18 insertions, 21 deletions
diff --git a/hammers/8x14.tres b/hammers/8x14.tres
deleted file mode 100644
index da8f9cc..0000000
--- a/hammers/8x14.tres
+++ /dev/null
@@ -1,4 +0,0 @@
-[gd_resource type="RectangleShape2D" format=3 uid=""]
-
-[resource]
-size = Vector2(6, 12)
diff --git a/hammers/hammer.gd b/hammers/hammer.gd
index 53110e3..3ad0fa8 100644
--- a/hammers/hammer.gd
+++ b/hammers/hammer.gd
@@ -6,11 +6,11 @@ class_name Hammer
@onready var left_cast := $LeftCast as RayCast2D
@onready var right_cast := $RightCast as RayCast2D
-@onready var head := $Head as Marker2D
@onready var trail := $Trail as Trail2D
@onready var outline_shader := ($Sprite as Sprite2D).material as ShaderMaterial
@onready var target_finder := $TargetFinder as Area2D
@onready var hitbox := $Hitbox as Hitbox
+@onready var hitbox_c := hitbox.get_child(0)
## The current velocity
var velocity := Vector2.ZERO
@@ -47,6 +47,7 @@ enum HITS {_a, _b, _c, PLAYER, ENEMY, NONE}
for node in hitmasks:
node.set_collision_mask_value(hits, true)
target_finder.monitoring = not is_instance_valid(target)
+ hitbox_c.shape.size.x = 6 if hits == HITS.ENEMY else 2
## The amount of time before gravity kicks in.
@export var lifetime := 3.0
@@ -67,7 +68,7 @@ func dirlerp(to: Vector2) -> void:
## Moves the direction towards the target.
func seek() -> void:
if is_instance_valid(target):
- dirlerp(head.global_position.direction_to(target.global_position))
+ dirlerp(global_position.direction_to(target.global_position))
elif target_finder.monitoring == false:
target = null
target_finder.monitoring = true
@@ -76,7 +77,7 @@ func seek() -> void:
func anticrash() -> void:
var is_wall := func is_wall(ray: RayCast2D) -> bool:
if not ray.is_colliding(): return false
- if target and ray.get_collider().get_class() == target.get_class(): return false
+ if is_instance_valid(target) and ray.get_collider().get_class() == target.get_class(): return false
return true
var results: Array[bool] = [is_wall.call(left_cast), is_wall.call(right_cast)]
@@ -84,7 +85,7 @@ func anticrash() -> void:
for i in range(2):
if results[i]:
- dirlerp(direction.rotated(steer_force if i == 0 else -steer_force))
+ dirlerp(direction.rotated(0.174 if i == 0 else -0.174))
## Highlights this hammer. See also [method unhighlight].
func highlight() -> void:
diff --git a/hammers/hammer_base.tscn b/hammers/hammer_base.tscn
index 43b00c2..9876740 100644
--- a/hammers/hammer_base.tscn
+++ b/hammers/hammer_base.tscn
@@ -1,8 +1,7 @@
-[gd_scene load_steps=10 format=3 uid="uid://bimmd1hcj2h0e"]
+[gd_scene load_steps=11 format=3 uid="uid://bimmd1hcj2h0e"]
[ext_resource type="PackedScene" uid="uid://ug40hxlkequx" path="res://colliders/hitbox.tscn" id="1_kdx5x"]
[ext_resource type="Script" path="res://hammers/hammer.gd" id="1_xp22t"]
-[ext_resource type="Shape2D" path="res://hammers/8x14.tres" id="2_tgkvf"]
[ext_resource type="Script" path="res://fx/trail.gd" id="4_boru3"]
[ext_resource type="Curve" path="res://hammers/trail_width.tres" id="4_yvshk"]
[ext_resource type="Gradient" path="res://hammers/trail_color.tres" id="5_8dqv1"]
@@ -15,6 +14,12 @@ shader_parameter/light_offset = 1.0
shader_parameter/line_width = 0.0
shader_parameter/sin_frequency = 0.25
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_fffa1"]
+size = Vector2(2, 12)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_cbjww"]
+size = Vector2(6, 12)
+
[sub_resource type="CircleShape2D" id="CircleShape2D_jubww"]
radius = 125.0
@@ -42,13 +47,12 @@ material = SubResource("ShaderMaterial_go8fx")
[node name="Collision" type="CollisionShape2D" parent="."]
visible = false
-shape = ExtResource("2_tgkvf")
+shape = SubResource("RectangleShape2D_fffa1")
[node name="Hitbox" parent="." instance=ExtResource("1_kdx5x")]
-visible = false
[node name="Collision" parent="Hitbox" index="0"]
-shape = ExtResource("2_tgkvf")
+shape = SubResource("RectangleShape2D_cbjww")
[node name="TargetFinder" type="Area2D" parent="."]
visible = false
@@ -58,19 +62,15 @@ monitorable = false
[node name="Collision" type="CollisionShape2D" parent="TargetFinder"]
shape = SubResource("CircleShape2D_jubww")
-
-[node name="Head" type="Marker2D" parent="."]
-position = Vector2(0, -6)
+debug_color = Color(0, 0.941176, 0.352941, 0.12549)
[node name="LeftCast" type="RayCast2D" parent="."]
-visible = false
position = Vector2(0, -6)
-target_position = Vector2(-4, -15)
+target_position = Vector2(-5, -29)
[node name="RightCast" type="RayCast2D" parent="."]
-visible = false
position = Vector2(0, -6)
-target_position = Vector2(4, -15)
+target_position = Vector2(5, -29)
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
[connection signal="area_entered" from="TargetFinder" to="." method="_on_target_finder_node_entered"]
diff --git a/levels/Level.gd b/levels/Level.gd
index 7510149..0106103 100644
--- a/levels/Level.gd
+++ b/levels/Level.gd
@@ -39,6 +39,7 @@ func create_node(p_name: StringName) -> Node2D:
func _ready():
+ collision_visibility_mode = TileMap.VISIBILITY_MODE_FORCE_HIDE
var door_array := Maze.tile_4b_to_path_array(enabled_walls)
if completed:
diff --git a/player/player.gd b/player/player.gd
index 9d45ec1..4aa382a 100644
--- a/player/player.gd
+++ b/player/player.gd
@@ -310,7 +310,6 @@ func disable_aim_gizmo() -> void:
## Throws the hammer.
func throw(rot: float) -> void:
- rot += randf_range(-0.01, 0.01)
remove_child(current_hammer)
current_hammer.position = Vector2(0, -8) # center
current_hammer.global_position = to_global(current_hammer.position)