small boss progess
This commit is contained in:
parent
986c83ec8f
commit
3f9103b1c8
42 changed files with 769 additions and 54 deletions
18
scripts/boss_spawner.gd
Normal file
18
scripts/boss_spawner.gd
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
extends RigidBody2D
|
||||
|
||||
@export var enemies : Array[Array]
|
||||
@onready var sprite : Sprite2D = $Sprite2D
|
||||
|
||||
func _ready() -> void:
|
||||
var this_enemy = enemies.pick_random()
|
||||
sprite.texture = this_enemy[0]
|
||||
|
||||
angular_velocity = (randf() - 0.5) * 46;
|
||||
linear_velocity.y = -300;
|
||||
linear_velocity.x = (randf() - 0.5) * 300
|
||||
|
||||
await get_tree().create_timer(randf() * 0.2 + 0.6).timeout
|
||||
queue_free()
|
||||
var enemy : Enemy = this_enemy[1].instantiate()
|
||||
enemy.global_position = global_position
|
||||
get_tree().root.add_child(enemy)
|
||||
1
scripts/boss_spawner.gd.uid
Normal file
1
scripts/boss_spawner.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://cojrjktxjgd6c
|
||||
64
scripts/cable.gd
Normal file
64
scripts/cable.gd
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
@tool
|
||||
extends Line2D
|
||||
|
||||
@export_group("Targets")
|
||||
@export var target_a: Node2D
|
||||
@export var target_b: Node2D
|
||||
|
||||
@export_group("Cable Settings")
|
||||
@export var segment_count: int = 20
|
||||
@export var rope_length: float = 300.0
|
||||
@export var gravity: Vector2 = Vector2(0, 9.8)
|
||||
@export var iterations: int = 5
|
||||
|
||||
var points_pos: Array[Vector2] = []
|
||||
var points_prev: Array[Vector2] = []
|
||||
var segment_dist: float
|
||||
|
||||
func _ready():
|
||||
segment_dist = rope_length / segment_count
|
||||
|
||||
var start_pos = target_a.global_position if target_a else global_position
|
||||
for i in range(segment_count):
|
||||
points_pos.append(start_pos)
|
||||
points_prev.append(start_pos)
|
||||
|
||||
points = PackedVector2Array(points_pos)
|
||||
|
||||
func _physics_process(delta: float):
|
||||
if not target_a or not target_b:
|
||||
return
|
||||
|
||||
_update_points(delta)
|
||||
|
||||
for i in range(iterations):
|
||||
_apply_constraints()
|
||||
|
||||
var local_points = PackedVector2Array()
|
||||
for p in points_pos:
|
||||
local_points.append(to_local(p))
|
||||
points = local_points
|
||||
|
||||
func _update_points(delta: float):
|
||||
for i in range(segment_count):
|
||||
var velocity = points_pos[i] - points_prev[i]
|
||||
points_prev[i] = points_pos[i]
|
||||
points_pos[i] += velocity + gravity * delta * 50.0
|
||||
|
||||
func _apply_constraints():
|
||||
points_pos[0] = target_a.global_position
|
||||
points_pos[segment_count - 1] = target_b.global_position
|
||||
|
||||
for i in range(segment_count - 1):
|
||||
var p1 = points_pos[i]
|
||||
var p2 = points_pos[i+1]
|
||||
var diff = p1 - p2
|
||||
var distance = diff.length()
|
||||
var error = distance - segment_dist
|
||||
var percent = error / distance
|
||||
var offset = diff * percent * 0.5
|
||||
|
||||
if i != 0:
|
||||
points_pos[i] -= offset
|
||||
if i + 1 != segment_count - 1:
|
||||
points_pos[i+1] += offset
|
||||
1
scripts/cable.gd.uid
Normal file
1
scripts/cable.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://dr78dot5agp2p
|
||||
|
|
@ -14,6 +14,7 @@ func _ready() -> void:
|
|||
target_node = get_tree().get_first_node_in_group("player")
|
||||
nav_agent = NavigationAgent2D.new()
|
||||
add_child(nav_agent)
|
||||
move_speed = move_speed + (randf() - 0.5) * 10.0
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
if not target_node: return
|
||||
|
|
@ -32,6 +33,9 @@ func _physics_process(delta: float) -> void:
|
|||
else:
|
||||
_handle_attack_charge(delta)
|
||||
|
||||
if not nav_agent.is_target_reachable():
|
||||
velocity = Vector2.ZERO;
|
||||
|
||||
_sprite_anim()
|
||||
|
||||
super._physics_process(delta)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ signal hit_entity(entity : Entity);
|
|||
signal hit_obstacle;
|
||||
|
||||
|
||||
var from_player = true
|
||||
@export var from_player = true
|
||||
var enabled = true
|
||||
@export var deal_damage = true
|
||||
@export var dmg = 1
|
||||
|
|
|
|||
9
scripts/line_connect.gd
Normal file
9
scripts/line_connect.gd
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
@tool
|
||||
extends Line2D
|
||||
|
||||
@export var p1 : Node2D
|
||||
@export var p2 : Node2D
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
points[0] = to_local(p1.global_position)
|
||||
points[1] = to_local(p2.global_position)
|
||||
1
scripts/line_connect.gd.uid
Normal file
1
scripts/line_connect.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://mc1fw6f5texh
|
||||
|
|
@ -18,7 +18,7 @@ func _physics_process(delta: float) -> void:
|
|||
position += dir * speed * delta
|
||||
|
||||
func _on_hitbox_hit_obstacle() -> void:
|
||||
queue_free()
|
||||
pass
|
||||
|
||||
func _on_hitbox_hit_entity(entity: Entity) -> void:
|
||||
queue_free()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue