707dadd9ed
2. 添加武器容器 3. 添加敌人的Hurtbox
37 lines
819 B
GDScript
37 lines
819 B
GDScript
extends Node2D
|
|
class_name Weapon
|
|
|
|
|
|
@onready var sprite_2d: Sprite2D = $Sprite2D
|
|
@onready var collision: CollisionShape2D = %CollisionShape2D
|
|
@onready var cooldown_timer: Timer = $CooldownTimer
|
|
|
|
var data: ItemWeapon
|
|
var is_attacking := false
|
|
var atk_start_pos: Vector2
|
|
var targets: Array[Enemy]
|
|
var closest_target: Enemy
|
|
var weapon_spread: float
|
|
|
|
func _ready() -> void:
|
|
atk_start_pos = sprite_2d.position
|
|
|
|
|
|
func setup_weapon(_data: ItemWeapon) -> void:
|
|
self.data = _data
|
|
collision.shape.radius = data.stats.max_range
|
|
|
|
|
|
func can_use_weapon() -> bool:
|
|
return cooldown_timer.is_stopped() and closest_target
|
|
|
|
|
|
func _on_range_area_area_entered(area: Area2D) -> void:
|
|
targets.push_back(area)
|
|
|
|
|
|
func _on_range_area_area_exited(area: Area2D) -> void:
|
|
targets.erase(area)
|
|
if targets.size() == 0:
|
|
closest_target = null
|