1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 06:51:54 +08:00

feat: 新增光标刃轮武器及相关资源

添加光标刃轮武器系统,包括:
- 武器脚本和场景配置
- 子弹动画和特效
- 相关音效和贴图资源
- 武器升级逻辑
- 角色初始武器配置调整
This commit is contained in:
2026-03-07 09:05:36 +08:00
parent d5a05f8ac9
commit ca82cbed12
24 changed files with 540 additions and 20 deletions
+7 -4
View File
@@ -16,6 +16,7 @@ class_name BulletBase
@export var autoLoopAnimation: bool = false
@export var autoDestroyAnimation: bool = false
@export var autoDestroyOnHitMap: bool = true
@export var autoPlayTexture: bool = false
@export var freeAfterSpawn: bool = false
@export var knockback: float = 0 # 击退力,物理引擎单位
@export var recoil: float = 0 # 后坐力,物理引擎单位
@@ -57,6 +58,8 @@ func _ready():
tryDestroy()
if autoLoopAnimation:
animator.play("loop")
if autoPlayTexture:
texture.play("default")
body_entered.connect(
func(body):
if body.is_in_group("map"):
@@ -82,7 +85,7 @@ func _physics_process(_delta: float) -> void:
[launcher])
if is_instance_valid(targetEntity):
PresetBulletAI.trace(
self,
self ,
targetEntity.getTrackingAnchor(),
launcher.fields.get(FieldStore.Entity.BULLET_TRACE) / 10
)
@@ -116,8 +119,8 @@ func determineCrit():
return MathTool.rate(launcher.fields.get(FieldStore.Entity.CRIT_RATE) + GameRule.critRateInfluenceByLuckValue * launcher.fields[FieldStore.Entity.LUCK_VALUE])
func hitEntity(target: Node):
var entity: EntityBase = EntityTool.fromHurtbox(target)
if !BulletTool.canDamage(self, entity): return
var resultDamage = entity.bulletHit(self, determineCrit())
if !BulletTool.canDamage(self , entity): return
var resultDamage = entity.bulletHit(self , determineCrit())
succeedToHit(resultDamage, entity)
if MathTool.rate(fullPenerate() - entity.fields[FieldStore.Entity.PENARATION_RESISTANCE]):
baseDamage *= 1.0 - penerateDamageReduction
@@ -127,7 +130,7 @@ func hitObstacle(target: Node):
if target is ObstacleBase:
var obstacle = target as ObstacleBase
if is_instance_valid(obstacle.launcher):
if not BulletTool.canDamage(self, obstacle.launcher): return
if not BulletTool.canDamage(self , obstacle.launcher): return
obstacle.takeDamage(calculateDamage(determineCrit()))
if MathTool.rate(fullPenerate() - obstacle.penerateResistance):
baseDamage *= 1.0 - penerateDamageReduction