1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-30 16:01:53 +08:00

feat: Add weapon system and attack functionality to Rooster character

- Introduced a weapons node in EntityBase for weapon management.
- Updated Rooster to include cooldown for attacks and weapon anchoring.
- Implemented attack method in Rooster to generate bullets.
- Enhanced BulletBase with life distance and lifetime properties.
- Created Chick character with animations and integrated into the world.
- Updated PurpleCrystal bullet behavior to move forward based on rotation.
- Refactored EntityBase to use a fields dictionary for attributes.
- Added FieldStore for managing entity-related constants.
- Adjusted GameRule to include bullet speed multiplier.
This commit is contained in:
2025-08-26 12:21:09 +08:00
parent ef8fd0db9f
commit 727c40e1f0
14 changed files with 149 additions and 40 deletions
+22
View File
@@ -3,11 +3,26 @@ class_name BulletBase
@export var speed: float = 1
@export var damage: float = 10
@export var lifeDistance: float = -1 # -1表示无限距离
@export var lifeTime: float = -1 # -1表示无限时间
var launcher: EntityBase = null
var spawnInWhen: float = 0
var spawnInWhere: Vector2 = Vector2.ZERO
func _ready():
area_entered.connect(hit)
spawnInWhen = Time.get_ticks_msec()
spawnInWhere = position
func _process(_delta: float) -> void:
if lifeTime > 0:
if Time.get_ticks_msec() - spawnInWhen >= lifeTime:
destroy()
if lifeDistance > 0:
if position.distance_to(spawnInWhere) >= lifeDistance:
destroy()
func _physics_process(_delta: float) -> void:
ai()
func hit(target: Node):
var entity: EntityBase = EntityTool.fromHurtbox(target)
@@ -16,6 +31,13 @@ func hit(target: Node):
if GameRule.allowFriendlyFire:
if entity.isPlayer() == launcher.isPlayer(): return
entity.takeDamage(self)
func forward(direction: Vector2):
position += direction.normalized() * speed * GameRule.bulletSpeedMultiplier
func ai():
pass
func destroy():
queue_free()
static func generate(
bullet: PackedScene,