game: add weapon base and sword

This commit is contained in:
2025-08-21 00:32:18 +02:00
parent 156da4898e
commit 8bd7bfa406
21 changed files with 200 additions and 163 deletions

View File

@@ -0,0 +1,40 @@
class_name WeaponSwordProjectile
extends Node2D
@export var speed: float = 500.0
@export var range: float = 200.0
@export var target: Node2D
@export var damage: float
@export var on_hit_sig: Signal
var _direction: Vector2
var _traveled: float = 0.0
var _already_hit: Array[PhysicsBody2D] = []
func _ready() -> void:
_direction = global_position.direction_to(target.global_position).normalized()
_traveled = 0.0
rotation = _direction.angle()
if _direction.x < 0:
rotation += PI
var proj_manager = get_tree().get_first_node_in_group(GlobalConst.GROUP_PROJ_MANAGER)
if not proj_manager:
return
reparent(proj_manager, true)
func _physics_process(delta: float) -> void:
var step = _direction * speed * delta
global_position += step
_traveled += step.length()
if _traveled >= range:
queue_free()
func _on_area_2d_body_entered(body: Node2D) -> void:
if body in _already_hit:
return
on_hit_sig.emit(self, body)
_already_hit.append(body)