技能加成

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; 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); attackObj.bulltes.Remove(this.gameObject);
if (myBulletType != BulletType.Spraying) if (myBulletType != BulletType.Spraying)
@ -237,7 +237,7 @@ public class Bullet : MonoBehaviour
if (Time.time - lastDamageTime > 1f) // 每秒扣一次血 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(); Crole.FlashRedEffect();
lastDamageTime = Time.time; lastDamageTime = Time.time;
} }

View File

@ -32,6 +32,7 @@ public enum Camp
public enum CharacterFlags public enum CharacterFlags
{ {
no=0<<0,
fly = 1 << 0, fly = 1 << 0,
land = 1 << 1, land = 1 << 1,
big = 1 << 2, big = 1 << 2,
@ -52,8 +53,6 @@ public class Role : Fun
[Header("名称")] public string Name; [Header("名称")] public string Name;
[Header("阵营")] public Camp camp ; [Header("阵营")] public Camp camp ;
[Header("血量")] public float hp = 100f;//血量 [Header("血量")] public float hp = 100f;//血量
//[Header("技能")] public List<Skill> Myskill;//技能
private float maxHp; private float maxHp;
[Header(("死亡动画编号"))] public int dieIndex=-1; [Header(("死亡动画编号"))] public int dieIndex=-1;
@ -169,12 +168,13 @@ public class Role : Fun
public List<BUff> buffList = new List<BUff>(); public List<BUff> buffList = new List<BUff>();
public CharacterFlags Tags = 0; public CharacterFlags myTags = 0;
public bool hasfalg(CharacterFlags flag) public bool hasfalg(CharacterFlags flag)
{ {
return (Tags & flag) == flag; return (myTags & flag) == flag;
} }
public SkillUp mySkillUp;
/// <summary> /// <summary>
/// 储存buff /// 储存buff
@ -202,10 +202,6 @@ public class Role : Fun
} }
tag = Enum.GetName(typeof(Camp), camp); tag = Enum.GetName(typeof(Camp), camp);
updateAnimation(); updateAnimation();
//AddBuff(storageBuff,this.CreateDecelerationBuff(10f,1f));
} }
@ -328,7 +324,6 @@ public class Role : Fun
if (Application.isPlaying) if (Application.isPlaying)
{ {
animationHighlight = hitIndex; animationHighlight = hitIndex;
} }
} }
@ -340,10 +335,6 @@ public class Role : Fun
{ {
Navigation.speedFactor *= num; Navigation.speedFactor *= num;
} }
/// <summary> /// <summary>
/// 单位更新buff /// 单位更新buff
/// </summary> /// </summary>
@ -465,13 +456,6 @@ public class Role : Fun
}); });
} }
// 升级逻辑
public virtual void Upgrade()
{
Debug.Log("父类的升级逻辑,空的,请在子类重写");
}
public void SetSelfInfo() 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之间的随机数 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); //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) public virtual void SlowDown(float slowFactor, float duration)