0
点赞
收藏
分享

微信扫一扫

05-ESP32-S3-IDF USART

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考
此代码仅为较上一P有所改变的代码

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

CharacterStats.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()
{

}
}
举报

相关推荐

0 条评论