Scuffed caterpillar enemy

This commit is contained in:
Jakob Feldmann 2022-11-15 20:34:35 +01:00
parent ec1dac9453
commit 8a7df91bc1
6 changed files with 155 additions and 123 deletions

View File

@ -3,7 +3,7 @@ extends Camera2D
var horizontal_facing = 0
var vertical_facing = 0
var camera_horizontal_shift = 90
var camera_vertical_shift = 90
var camera_vertical_shift = 0
var time: float = 0
onready var tween = $ShiftTween
@ -62,18 +62,18 @@ func _adapt_to_movement():
# TODO Make smarter
if(time > 0.1):
time = 0.0
var cam_offset = get_camera_screen_center().x - prev_camera_pos.x
var new_h_facing = sign(cam_offset)
var cam_offset = get_camera_screen_center() - prev_camera_pos
var new_h_facing = sign(cam_offset.x)
if new_h_facing != 0 && horizontal_facing != new_h_facing:
horizontal_facing = new_h_facing
target_offset.x = camera_horizontal_shift * horizontal_facing
tween_h = true
# var new_v_facing = sign(get_camera_position().y - prev_camera_pos.y)
# var new_v_facing = sign(cam_offset.y)
# if new_v_facing != 0 && vertical_facing != new_v_facing:
# vertical_facing = new_v_facing
# target_offset.x = offset.x if !new_h_facing else target_offset.x
# target_offset.y = camera_vertical_shift * vertical_facing
# print(target_offset)
# tween_v = true
prev_camera_pos = get_camera_screen_center()
@ -88,7 +88,6 @@ func _adapt_to_movement():
Tween.TRANS_SINE,
Tween.EASE_OUT
)
tween.start()
position = blobby.position

View File

@ -273,6 +273,8 @@ zoom = Vector2( 0.75, 0.75 )
process_mode = 0
drag_margin_h_enabled = true
drag_margin_v_enabled = true
drag_margin_top = 0.0
drag_margin_bottom = 0.0
editor_draw_screen = false
script = ExtResource( 1 )

View File

@ -0,0 +1,39 @@
extends Player
export var score := 100
onready var left_rc = $SlopeRaycastLeft
onready var right_rc = $SlopeRaycastRight
var snap = Vector2.DOWN * 128
func _ready() -> void:
set_physics_process(false)
velocity.x = -30
# TODO adapt to groups
func _on_StompDetector_body_entered(body: Node) -> void:
if body.global_position.y > get_node("StompDetector").global_position.y:
return
get_node("EnemyBody").disabled = true
die()
func _physics_process(delta: float) -> void:
if(left_rc.is_colliding() && right_rc.is_colliding()):
var length_vector: Vector2 = right_rc.get_collision_point() - left_rc.get_collision_point()
rotation = length_vector.angle()
else:
print(rad2deg(rotation))
rotation += sign(velocity.x) * delta * 1.2
move_and_slide_with_snap(velocity.rotated(rotation), snap.rotated(rotation), FLOOR_NORMAL, false, 4, PI)
func die() -> void:
queue_free()
GlobalState.score += score
func _on_EnemySkin_area_entered(area:Area2D) -> void:
if area.is_in_group("harmful"):
get_node("EnemyBody").disabled = true
die()

View File

@ -0,0 +1,70 @@
[gd_scene load_steps=6 format=2]
[ext_resource path="res://assets/enemy/enemy.png" type="Texture" id=1]
[ext_resource path="res://src/Actors/Enemies/Beings/Caterpillar.gd" type="Script" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 2.72463, 1.17848 )
[sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 15, 6.12039 )
[sub_resource type="RectangleShape2D" id=3]
extents = Vector2( 15.534, 10.0962 )
[node name="Caterpillar" type="KinematicBody2D" groups=["harmful"]]
scale = Vector2( 0.8, 0.8 )
collision_layer = 2
collision_mask = 9
script = ExtResource( 2 )
[node name="enemy" type="Sprite" parent="."]
position = Vector2( 0, -1.90735e-06 )
scale = Vector2( 0.286789, 0.276348 )
texture = ExtResource( 1 )
[node name="VisibilityEnabler2D" type="VisibilityEnabler2D" parent="."]
position = Vector2( 1362.81, -0.138177 )
scale = Vector2( 15.4865, 1.28502 )
rect = Rect2( -89, -10, 2, 20 )
process_parent = true
physics_process_parent = true
[node name="EnemyBody" type="CollisionShape2D" parent="." groups=["harmful"]]
position = Vector2( 0, 6.48802 )
scale = Vector2( 5.68128, 5.29182 )
shape = SubResource( 1 )
[node name="SlopeRaycastLeft" type="RayCast2D" parent="."]
position = Vector2( -11.25, 12.5 )
enabled = true
cast_to = Vector2( 0, 13.75 )
collision_mask = 8
[node name="SlopeRaycastRight" type="RayCast2D" parent="."]
position = Vector2( 11.25, 12.5 )
enabled = true
cast_to = Vector2( -9.53674e-07, 13.75 )
collision_mask = 8
[node name="StompDetector" type="Area2D" parent="." groups=["weakpoint"]]
modulate = Color( 0, 0.0392157, 1, 1 )
position = Vector2( 0, -6.44095 )
collision_layer = 2
input_pickable = false
[node name="CollisionShape2D" type="CollisionShape2D" parent="StompDetector"]
position = Vector2( -4.76837e-07, 0.561345 )
shape = SubResource( 2 )
[node name="EnemySkin" type="Area2D" parent="." groups=["player"]]
process_priority = -1
collision_mask = 126
[node name="CollisionPolygon2D" type="CollisionShape2D" parent="EnemySkin"]
position = Vector2( -5.68434e-14, 0 )
scale = Vector2( 1.03, 1.04 )
shape = SubResource( 3 )
[connection signal="body_entered" from="StompDetector" to="." method="_on_StompDetector_body_entered"]
[connection signal="area_entered" from="EnemySkin" to="." method="_on_EnemySkin_area_entered"]

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,7 @@
[ext_resource path="res://assets/environment/blocks/24BlockBasic.png" type="Texture" id=2]
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/ObstacleObjects/Spikes.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/Actors/Enemies/Beings/Enemy.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/Actors/Enemies/Beings/Caterpillar.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/Actors/Enemies/Beings/SimpleEnemy.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/Actors/Enemies/Beings/SmortEnemy.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/Actors/Enemies/Beings/DartingEnemy.tscn" type="PackedScene" id=8]
@ -53,8 +53,8 @@ position = Vector2( -259.915, 710.547 )
[node name="SmortEnemy" parent="." instance=ExtResource( 7 )]
position = Vector2( 220, 804 )
[node name="Enemy" parent="." instance=ExtResource( 5 )]
position = Vector2( 0, 780 )
[node name="Caterpillar" parent="." instance=ExtResource( 5 )]
position = Vector2( -41, 782 )
[node name="Enemy2" parent="." instance=ExtResource( 6 )]
position = Vector2( 492, 804 )