Unity类银河恶魔城学习记录10-5 p93 Major stats and defensive stats源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考

此代码仅为较上一P有所改变的代码

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili

CharacterStats.cs
cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterStats : MonoBehaviour
{
    [Header("Major stats")]
    public Stat strength; // 力量 增伤1点 临界值power 1% 物抗
    public Stat agility;// 敏捷 闪避 1% 临界chance 1%
    public Stat intelgence;// 1 点 魔法伤害 1点魔抗 
    public Stat vitality;//加血的

    [Header("Defensive stats")]
    public Stat maxHealth;
    public Stat armor;
    public Stat evasion;//闪避值


    public Stat damage;


    [SerializeField]private int currentHealth;


    protected virtual void Start()
    {
        currentHealth = maxHealth.GetValue();     
    }

    public virtual void DoDamage(CharacterStats _targetStats)
    {
        if (TargetCanAvoidAttack(_targetStats))
        {
            return;
        }


        int totleDamage = damage.GetValue() + strength.GetValue();

        totleDamage = CheckTargetArmor(_targetStats, totleDamage);

        _targetStats.TakeDamage(totleDamage);
    }

    private static int CheckTargetArmor(CharacterStats _targetStats, int totleDamage)
    {
        totleDamage -= _targetStats.armor.GetValue();
        totleDamage = Mathf.Clamp(totleDamage, 0, int.MaxValue);
        return totleDamage;
    }

    private bool TargetCanAvoidAttack(CharacterStats _targetStats)//设置闪避
    {
        int totleEvation = _targetStats.evasion.GetValue() + _targetStats.agility.GetValue();

        if (Random.Range(0, 100) < totleEvation)
        {
            return true;
        }
        return false;
    }

    protected virtual void TakeDamage(int _damage)
    {
        currentHealth -= _damage;

        Debug.Log(_damage);

        if (currentHealth < 0)
            Die();
        
    }

    protected virtual void Die()
    {

    }
}
相关推荐
sakabu1 小时前
ESP32 外设驱动开发指南 (ESP-IDF框架)——GPIO篇:基础配置、外部中断与PWM(LEDC模块)应用
笔记·单片机·学习·esp32
代码哈士奇1 小时前
VitePress学习笔记
javascript·笔记·学习
小眼睛FPGA1 小时前
【盘古100Pro+开发板实验例程】FPGA学习 | 基于紫光 FPGA 的键控 LED 流水灯
科技·学习·ai·fpga开发·fpga
天才少女爱迪生1 小时前
pytorch的自定义 CUDA 扩展怎么学习
人工智能·pytorch·学习
不可描述的两脚兽2 小时前
学习笔记《区块链技术与应用》第4天 比特币脚本语言
笔记·学习·区块链
明长歌4 小时前
【javascript】Reflect学习笔记
javascript·笔记·学习
超浪的晨4 小时前
Maven 与单元测试:JavaWeb 项目质量保障的基石
java·开发语言·学习·单元测试·maven·个人开发
MingYue_SSS6 小时前
【未解决】STM32无刷电机驱动电路问题记录
笔记·嵌入式硬件·学习
野原鑫之祝6 小时前
嵌入式开发学习———Linux环境下IO进程线程学习(一)
linux·c语言·学习·vim·嵌入式
embrace996 小时前
【C语言学习】scanf函数
c语言·开发语言·汇编·学习·青少年编程·c#·编辑器