feat: 1. 添加武器基础脚本
2. 添加武器基本resources 3. 武器碰撞 RangeArea 进入和退出检测 4. 添加 Hitbox 进行武器碰撞敌人区域(只是添加了,功能还没实现) 5. 武器冷却时间 weapon_base / CooldownTimer
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
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
|
||||
Reference in New Issue
Block a user