Unity 2D 基础战斗逻辑实现笔记

📅 2026-07-22 👁️ 89 阅读 🏷️ Unity / C# / 游戏开发

1. 战斗状态机设计

用枚举管理角色状态,避免逻辑混乱:

public enum CombatState { Idle, Attack, Hit, Dead, Cooldown }
private CombatState currentState = CombatState.Idle;

void Update() {
    switch (currentState) {
        case CombatState.Attack: HandleAttack(); break;
        case CombatState.Hit: HandleHit(); break;
    }
}

2. 伤害计算逻辑

基础伤害=攻击力×(1-防御减免),加入暴击随机:

public float CalculateDamage(float atk, float def, bool isCrit) {
    float baseDamage = atk * (1 - Mathf.Clamp(def / 100, 0, 0.8f));
    float critMultiplier = isCrit ? Random.Range(1.8f, 2.2f) : 1f;
    return baseDamage * critMultiplier;
}

3. 受击反馈实现

受击时播放动画+屏幕震动+扣血:

IEnumerator HandleHit() {
    animator.SetTrigger("Hit");
    CameraShake.Instance.Shake(0.2f, 0.1f);
    currentHP -= lastDamage;
    yield return new WaitForSeconds(0.5f);
    currentState = CombatState.Idle;
}

💡 实战Tips:技能冷却用Time.deltaTime计时,不要用Invoke,避免帧率波动导致冷却不准。

← 返回文章列表