This commit is contained in:
wulongxiao 2024-12-23 22:31:10 +08:00
commit 2ce74d4a65
3 changed files with 68 additions and 7 deletions

View File

@ -49,7 +49,8 @@ public class Attack : MonoBehaviour
CircleCollider2D circleCollider2D = GetComponent<CircleCollider2D>();
attackCooldown = transform.parent.GetComponent<enemy>().AttackCD;

View File

@ -131,7 +131,7 @@ public class Bullet : MonoBehaviour
direction = 1;
}
Crole.bloodLoss(new object[] { Crole, role.Attack + bulletData.attack, attackObj.damageTyp, role },direction);
Crole.bloodLoss(new object[] { Crole, role.DamageCreate(), attackObj.damageTyp, role },direction);
attackObj.bulltes.Remove(this.gameObject);
if (myBulletType!=BulletType.Spraying)
@ -202,7 +202,7 @@ public class Bullet : MonoBehaviour
if (Time.time - lastDamageTime > 1f) // 每秒扣一次血
{
Crole.bloodLoss(new object[] { Crole, role.Attack + bulletData.attack, attackObj.damageTyp, role });
Crole.bloodLoss(new object[] { Crole, role.DamageCreate(), attackObj.damageTyp, role });
lastDamageTime = Time.time;
}

View File

@ -35,7 +35,7 @@ public enum Camp
[ExecuteInEditMode]
public class Role : Fun
{
[Header("Id")] public int id;
[Header("Id")] public string id;
[Header("阵营")] public Camp camp ;
[Header("血量")] public float hp = 100f;//血量
private float maxHp;
@ -48,7 +48,17 @@ public class Role : Fun
[Header("自己的画布")]public Canvas _Canvas;
[Header("自己的图片")] public SpriteRenderer spriteRenderers; // 存储所有的SpriteRenderer组件
[Header("被打的方向")] public int HurtDirectin;
public string Quality;//品质
public string Elements;//属性
public string Info;//详情
public string SkillId;//技能
public string AttackType;//攻击类型
public string AttackActionType;//攻击作用类型
public float AttackRange { get; set; }//攻击范围
public float AttackCD;//攻击CD
public float CritRate;//暴击率
public float CriticalHitRateBonus;//暴击加成
public float Hp
{
@ -76,7 +86,7 @@ public class Role : Fun
GameObject go = GameObject.Instantiate(HpTextPrefab, _Canvas.transform);
go.GetComponent<SnowHpControl>().direction = HurtDirectin;
go.GetComponent<SnowHpControl>().CreateText();
go.GetComponent<Text>().text = (temp - hp).ToString(); // ÏÔʾÉ˺¦Öµ
go.GetComponent<Text>().text = (temp - hp).ToString("F0"); // 显示伤害值
FlashRedEffect(); // 血量减少时的红色闪烁效果
@ -98,6 +108,8 @@ public class Role : Fun
set => gold = value;
}
[Header("攻击力")] private float attack = 10f;
[Header("攻击力上限")] public float MaxAttack = 10f;
[Header("攻击力下限")] public float MinAttack = 10f;
public float Attack
{
get => attack;
@ -154,7 +166,7 @@ public class Role : Fun
public virtual async void Start()
{
maxHp = hp;
SetSelfInfo();
if (Application.isPlaying)
{
@ -415,4 +427,52 @@ public class Role : Fun
{
Debug.Log("父类的升级逻辑,空的,请在子类重写");
}
public void SetSelfInfo()
{
if (camp==Camp.Player)
{
Debug.Log("攻击力赋值==============================" + MengyaoInfo.Instance.m_Mengyao.Count);
foreach (Character character in MengyaoInfo.Instance.m_Mengyao)
{
if (id ==character.Id)
{
MinAttack = int.Parse(character.MinAttack);
MaxAttack = int.Parse(character.MaxAttack);
AttackCD = float.Parse(character.AttackCD);
CritRate = float.Parse(character.CritRate);
Quality=character.Quality;//品质
Elements=character.Elements;//属性
Info=character.Info;//详情
SkillId=character.SkillId;//技能
AttackType=character.AttackType;//攻击类型
AttackActionType=character.AttackActionType;//攻击作用类型
CriticalHitRateBonus = float.Parse(character.CriticalHitRateBonus);
Debug.Log("攻击力赋值++++++++++++++++++++++++++++++");
}
}
}
}
public float DamageCreate()//伤害生成
{
// 生成普通伤害
float num = UnityEngine.Random.Range(MinAttack, MaxAttack);
// 判断是否暴击
float critChance = UnityEngine.Random.Range(0f, 1f); // 生成一个0到1之间的随机数
if (critChance < CritRate) // 如果暴击发生
{
// 计算暴击伤害(普通伤害乘以暴击加成)
num *= (1 + CriticalHitRateBonus);
Debug.Log("暴击发生!伤害增加:" + num);
}
return num;
}
}