技能加成

This commit is contained in:
wulongxiao 2024-12-25 21:41:45 +08:00
parent ae2c0eddc4
commit 8da1a9bd84
2 changed files with 42 additions and 29 deletions

View File

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

View File

@ -32,6 +32,7 @@ public enum Camp
public enum CharacterFlags
{
no=0<<0,
fly = 1 << 0,
land = 1 << 1,
big = 1 << 2,
@ -52,8 +53,6 @@ public class Role : Fun
[Header("名称")] public string Name;
[Header("阵营")] public Camp camp ;
[Header("血量")] public float hp = 100f;//血量
//[Header("技能")] public List<Skill> Myskill;//技能
private float maxHp;
[Header(("死亡动画编号"))] public int dieIndex=-1;
@ -169,13 +168,14 @@ public class Role : Fun
public List<BUff> buffList = new List<BUff>();
public CharacterFlags Tags = 0;
public CharacterFlags myTags = 0;
public bool hasfalg(CharacterFlags flag)
{
return (Tags & flag) == flag;
return (myTags & flag) == flag;
}
public SkillUp mySkillUp;
/// <summary>
/// 储存buff
/// </summary>
@ -202,10 +202,6 @@ public class Role : Fun
}
tag = Enum.GetName(typeof(Camp), camp);
updateAnimation();
//AddBuff(storageBuff,this.CreateDecelerationBuff(10f,1f));
}
@ -328,7 +324,6 @@ public class Role : Fun
if (Application.isPlaying)
{
animationHighlight = hitIndex;
}
}
@ -340,10 +335,6 @@ public class Role : Fun
{
Navigation.speedFactor *= num;
}
/// <summary>
/// 单位更新buff
/// </summary>
@ -465,13 +456,6 @@ public class Role : Fun
});
}
// 升级逻辑
public virtual void Upgrade()
{
Debug.Log("父类的升级逻辑,空的,请在子类重写");
}
public void SetSelfInfo()
{
@ -502,20 +486,49 @@ public class Role : Fun
}
public float DamageCreate()//伤害生成
/// <summary>
/// 计算伤害
/// </summary>
/// <param name="self">造成者</param>
/// <param name="Target">目标</param>
/// <returns></returns>
public float DamageCreate(Role Target)//伤害生成
{
// 生成普通伤害
float num = UnityEngine.Random.Range(MinAttack, MaxAttack);
float hurt = UnityEngine.Random.Range(MinAttack, MaxAttack);
// 判断是否暴击
float critChance = UnityEngine.Random.Range(0f, 1f); // 生成一个0到1之间的随机数
if (critChance < CritRate) // 如果暴击发生
if (critChance < CritRate*(1+mySkillUp.CriticalRate)) // 如果暴击发生
{
// 计算暴击伤害(普通伤害乘以暴击加成)
num *= (1 + CriticalHitRateBonus);
hurt *= (1 + CriticalHitRateBonus*(1+ mySkillUp.CriticalDamage));
//Debug.Log("暴击发生!伤害增加:" + num);
}
return num;
if (Target.hasfalg(CharacterFlags.big)) // 如果是大型敌人
{
hurt*=(1+mySkillUp.DamageOfBig);
}
if (Target.hasfalg(CharacterFlags.min)) // 如果是大型敌人
{
hurt *= (1 + mySkillUp.DamageOfMin);
}
if (Target.hasfalg(CharacterFlags.fly)) // 如果是飞行敌人
{
hurt *= (1 + mySkillUp.DamageOfSky);
}
if (Target.hasfalg(CharacterFlags.land)) // 如果是地面敌人
{
hurt *= (1 + mySkillUp.DamageOfland);
}
return hurt;
}
public virtual void SlowDown(float slowFactor, float duration)