1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-06-03 18:27:13 +08:00

feat(障碍物系统): 添加草墙障碍物及相关功能

实现草墙障碍物系统,包括以下主要变更:
- 新增草墙障碍物资源、脚本和场景
- 添加障碍物状态显示UI
- 扩展组件管理器支持障碍物类型
- 修改子弹系统以支持对障碍物的碰撞检测
- 调整实体碰撞层设置
- 为公鸡角色添加草墙武器

新增功能允许玩家放置可阻挡敌人的草墙障碍物,并显示其生命值状态
This commit is contained in:
2026-01-27 20:52:26 +08:00
parent 2f2a3fd04b
commit 3698127345
22 changed files with 400 additions and 18 deletions
+9 -2
View File
@@ -8,6 +8,10 @@ signal died()
signal energyChanged(energy: float, dontChangeDirection: bool)
enum Layers {
PLAYER = 1 << 2,
ENEMY = 1 << 1,
}
const TITLE_FLAG = INF
var fields = {
"生存": TITLE_FLAG,
@@ -143,8 +147,12 @@ func _ready():
)
if displayName == MultiplayerState.playerName:
rebuildWeaponIcons()
collision_layer = Layers.PLAYER
collision_mask = Layers.PLAYER
else:
applyLevel()
collision_layer = Layers.ENEMY
collision_mask = Layers.ENEMY
health = fields.get(FieldStore.Entity.MAX_HEALTH)
energy = fields.get(FieldStore.Entity.MAX_ENERGY)
if is_instance_valid(statebar):
@@ -242,8 +250,7 @@ func takeDamage(baseDamage: float, crit: bool = false, perfectMiss: bool = false
func bulletHit(bullet: BulletBase, crit: bool):
# 当受伤时
hurtAnimator.play("hurt")
var baseDamage: float = bullet.getDamage() * bullet.launcher.fields.get(FieldStore.Entity.DAMAGE_MULTIPILER) * randf_range(1 - GameRule.damageOffset, 1 + GameRule.damageOffset)
var damage = baseDamage + baseDamage * int(crit) * fields.get(FieldStore.Entity.CRIT_DAMAGE)
var damage = bullet.calculateDamage(crit)
var perfectMiss = false
if sprinting:
playSound("miss")