New BoundFrog scene manages rope + frog
This commit is contained in:
parent
67031e101b
commit
d710219cfd
@ -4,10 +4,15 @@ extends Node2D
|
||||
var Rope = preload("res://src/Contraptions/Rope/Rope.tscn")
|
||||
var start_pos := Vector2.ZERO
|
||||
var end_pos := Vector2.ZERO
|
||||
onready var rope: Node2D = null
|
||||
|
||||
func _ready() -> void:
|
||||
rope = Rope.instance()
|
||||
add_child(rope)
|
||||
rope.spawn_rope($AnchorPos.global_position, Vector2($AnchorPos.global_position.x + 200, $AnchorPos.global_position.y))
|
||||
rope.end_attached_node = $WhatAreFrog1
|
||||
pass
|
||||
|
||||
func _on_LevelTemplate_ready() -> void:
|
||||
var rope = Rope.instance()
|
||||
get_parent().add_child(rope)
|
||||
rope.rope_end = get_node("RopeAnchor")
|
||||
rope.rope_start = get_node("WhatAreFrog")
|
||||
rope.rope_end_joint = get_node("RopeAnchor/cshape/pjoint")
|
||||
rope.rope_start_joint = get_node("WhatAreFrog/cshape/pjoint")
|
||||
rope.spawn_rope($RopeAnchor.global_position, $RopeAnchor.global_position, false)
|
||||
|
||||
@ -10,4 +10,6 @@ script = ExtResource( 3 )
|
||||
[node name="WhatAreFrog" parent="." instance=ExtResource( 1 )]
|
||||
|
||||
[node name="RopeAnchor" parent="." instance=ExtResource( 2 )]
|
||||
position = Vector2( -53, 10 )
|
||||
position = Vector2( -136, 11 )
|
||||
|
||||
[editable path="RopeAnchor"]
|
||||
|
||||
@ -7,19 +7,15 @@ onready var orientation: RayCast2D = $Orientation
|
||||
onready var jump_timer: Timer
|
||||
|
||||
export var score := 100
|
||||
export var chain_length := 100
|
||||
export var chained := true
|
||||
|
||||
var start_x = 0
|
||||
var in_air = false
|
||||
var died = false
|
||||
|
||||
func _ready():
|
||||
jump_timer = Timer.new()
|
||||
jump_timer.connect("timeout", self, "jump")
|
||||
add_child(jump_timer)
|
||||
if chained:
|
||||
pass
|
||||
|
||||
|
||||
# TODO adapt to groups
|
||||
# TODO Engine error here(what does it WANT???)
|
||||
@ -33,7 +29,7 @@ func execute_movement(delta: float) -> void:
|
||||
velocity.y += _gravity * delta
|
||||
if sign(velocity.x) != orientation.cast_to.x:
|
||||
velocity.x *= -1
|
||||
velocity = move_and_slide(velocity, FLOOR_NORMAL)
|
||||
velocity = move_and_slide(velocity, FLOOR_NORMAL, false, 4, 0.785398,false)
|
||||
if(is_on_floor()):
|
||||
velocity = Vector2(0,0)
|
||||
if ($Left_Wallcast.is_colliding() || $Right_Wallcast.is_colliding()) && is_on_floor():
|
||||
@ -41,8 +37,10 @@ func execute_movement(delta: float) -> void:
|
||||
|
||||
|
||||
func die() -> void:
|
||||
queue_free()
|
||||
if(!died):
|
||||
GlobalState.score += score
|
||||
died = true
|
||||
#queue_free()
|
||||
|
||||
|
||||
func _on_EnemySkin_area_entered(area:Area2D) -> void:
|
||||
@ -50,7 +48,6 @@ func _on_EnemySkin_area_entered(area:Area2D) -> void:
|
||||
get_node("EnemyBody").disabled = true
|
||||
die()
|
||||
|
||||
|
||||
func searching() -> Vector2:
|
||||
if(is_on_floor()):
|
||||
if(jump_timer.is_stopped()):
|
||||
|
||||
@ -1,9 +1,8 @@
|
||||
[gd_scene load_steps=8 format=2]
|
||||
[gd_scene load_steps=7 format=2]
|
||||
|
||||
[ext_resource path="res://assets/enemy/enemy.png" type="Texture" id=1]
|
||||
[ext_resource path="res://src/Actors/Enemies/Beings/WhatAreFrog.gd" type="Script" id=2]
|
||||
[ext_resource path="res://src/Actors/Enemies/Beings/WhatAreFrogStateMachine.gd" type="Script" id=3]
|
||||
[ext_resource path="res://src/Contraptions/Rope/RopeAnchor.tscn" type="PackedScene" id=4]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=1]
|
||||
extents = Vector2( 2.72463, 1.17848 )
|
||||
@ -62,6 +61,15 @@ position = Vector2( 0, 6.48802 )
|
||||
scale = Vector2( 5.68128, 5.29182 )
|
||||
shape = SubResource( 1 )
|
||||
|
||||
[node name="cshape" type="Node2D" parent="."]
|
||||
position = Vector2( 0, -3.8147e-06 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
|
||||
[node name="pjoint" type="PinJoint2D" parent="cshape"]
|
||||
scale = Vector2( 0.3, 0.3 )
|
||||
bias = 0.9
|
||||
softness = 0.1
|
||||
|
||||
[node name="StompDetector" type="Area2D" parent="." groups=["weakpoint"]]
|
||||
modulate = Color( 0, 0.0392157, 1, 1 )
|
||||
position = Vector2( 0, -6.44095 )
|
||||
@ -80,7 +88,5 @@ position = Vector2( 5.96046e-07, 2.5 )
|
||||
scale = Vector2( 1.03, 1.04 )
|
||||
shape = SubResource( 3 )
|
||||
|
||||
[node name="RopeAnchor" parent="." instance=ExtResource( 4 )]
|
||||
|
||||
[connection signal="body_entered" from="StompDetector" to="." method="_on_StompDetector_body_entered"]
|
||||
[connection signal="area_entered" from="EnemySkin" to="." method="_on_EnemySkin_area_entered"]
|
||||
|
||||
@ -19,6 +19,7 @@ func _ready() -> void:
|
||||
|
||||
# Game logic consequences of state
|
||||
func _state_logic(delta):
|
||||
if(!(parent.died && parent.is_on_floor())):
|
||||
var state_action_ref = funcref(parent, self.state)
|
||||
parent.velocity = state_action_ref.call_func()
|
||||
parent.execute_movement(delta)
|
||||
|
||||
@ -7,8 +7,6 @@ var rope_close_tolerance := 2.0
|
||||
var rope_pieces := []
|
||||
var rope_piece_positions : PoolVector2Array= []
|
||||
|
||||
var end_attached_node: Node2D = null
|
||||
|
||||
export var mouse_follow := false
|
||||
|
||||
onready var rope_start
|
||||
@ -18,11 +16,6 @@ onready var rope_end_joint
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
#Resize or reinitialize?
|
||||
if(end_attached_node != null):
|
||||
if (!is_instance_valid(end_attached_node)):
|
||||
rope_end.mode = RigidBody2D.MODE_RIGID
|
||||
else:
|
||||
rope_end.global_position = end_attached_node.global_position
|
||||
if(mouse_follow):
|
||||
rope_end.global_position = get_global_mouse_position()
|
||||
rope_piece_positions.resize(0)
|
||||
@ -30,7 +23,8 @@ func _physics_process(_delta: float) -> void:
|
||||
if !rope_piece_positions.empty():
|
||||
update()
|
||||
|
||||
func spawn_rope(start_pos: Vector2, end_pos: Vector2):
|
||||
func spawn_rope(start_pos: Vector2, end_pos: Vector2, new_anchors: bool = true):
|
||||
if(new_anchors):
|
||||
rope_start = RopeAnchor.instance()
|
||||
rope_end = RopeAnchor.instance()
|
||||
rope_start_joint = rope_start.get_node("cshape/pjoint")
|
||||
@ -84,4 +78,4 @@ func get_piece_positions() -> Array:
|
||||
return rope_points
|
||||
|
||||
func _draw() -> void:
|
||||
draw_polyline(rope_piece_positions, Color.blue, 2.0)
|
||||
draw_polyline(rope_piece_positions, Color.blue, 1.2)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://assets/environment/blocks/approx build block.png" type="Texture" id=1]
|
||||
[ext_resource path="res://assets/environment/blocks/random-innentile.png" type="Texture" id=1]
|
||||
|
||||
[sub_resource type="CircleShape2D" id=5]
|
||||
radius = 2.0
|
||||
@ -23,5 +23,5 @@ bias = 0.1
|
||||
softness = 0.1
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
scale = Vector2( 0.1875, 0.1875 )
|
||||
scale = Vector2( 0.25, 0.245353 )
|
||||
texture = ExtResource( 1 )
|
||||
|
||||
@ -9,7 +9,7 @@ height = 1.0
|
||||
[node name="RigidBody2D" type="RigidBody2D"]
|
||||
collision_layer = 256
|
||||
collision_mask = 8
|
||||
gravity_scale = 3.0
|
||||
gravity_scale = 0.2
|
||||
linear_damp = 1.0
|
||||
angular_damp = 1.0
|
||||
script = ExtResource( 1 )
|
||||
|
||||
@ -6,10 +6,14 @@ var end_pos := Vector2.ZERO
|
||||
onready var rope: Node2D = null
|
||||
|
||||
func _ready() -> void:
|
||||
rope = Rope.instance()
|
||||
add_child(rope)
|
||||
rope.spawn_rope($AnchorPos.global_position, Vector2($AnchorPos.global_position.x + 200, $AnchorPos.global_position.y))
|
||||
rope.end_attached_node = $WhatAreFrog1
|
||||
pass
|
||||
# rope = Rope.instance()
|
||||
# add_child(rope)
|
||||
# rope.rope_start = get_node("BoundFrog/RopeAnchor")
|
||||
# rope.rope_end = get_node("BoundFrog/WhatAreFrog")
|
||||
# rope.rope_start_joint = get_node("BoundFrog/RopeAnchor/cshape/pjoint")
|
||||
# rope.rope_end_joint = get_node("BoundFrog/WhatAreFrog/cshape/pjoint")
|
||||
# rope.spawn_rope($BoundFrog/RopeAnchor.global_position, $BoundFrog.global_position, false)
|
||||
|
||||
func _input(event):
|
||||
if event is InputEventMouseButton && !event.is_pressed():
|
||||
|
||||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user