本文整理汇总了C#中Attack.getCritChance方法的典型用法代码示例。如果您正苦于以下问题:C# Attack.getCritChance方法的具体用法?C# Attack.getCritChance怎么用?C# Attack.getCritChance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Attack
的用法示例。
在下文中一共展示了Attack.getCritChance方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: calculateExpectedDamage
// Provides the expected damage resulting the attack.
private int calculateExpectedDamage(Unit atk, Unit def) {
float damage;
Attack simulator = new Attack(atk, def);
// Chance of hitting * (chance of normal damage * normal damage + chance of critical hit * cricical damage)
damage = simulator.getDamage() * (1 - simulator.getCritChance()) + 3 * simulator.getDamage() * simulator.getCritChance();
damage *= simulator.getHitChance();
return Mathf.RoundToInt(damage);
}
示例2: takeAttackFrom
// Takes the attack from an enemy unit, returning the counter-attack and attack results.
// TODO: fix this weird attack problem
// on counters it attacks itself?
public List<AttackResult> takeAttackFrom(Unit enemy, int distance, bool firstAttack)
{
Attack atk = new Attack(enemy, this);
List<AttackResult> attacks = new List<AttackResult>();
AttackResult result = new AttackResult(HitType.Miss, 0, false, atk);
AttackResult counter = new AttackResult(HitType.CannotCounter, 0, false);
string statStr = "stats1 this " + ident() + ", clay: " + clay + ", endurance: " + currentWater;
statStr += "\nstats1 enemy " + enemy.ident() + ", clay: " + enemy.clay + ", endurance: " + currentWater;
statStr += "\nAttack info: " + atk;
Debug.Log(statStr);
Debug.Log("taking attack from: " + ident() + ", enemy doing this: " + enemy.ident());
string playType = (isEnemy()) ? "enemy" : "player";
if (Random.value <= atk.getHitChance())
{
result.setType(HitType.Hit);
result.setDamageTaken(atk.getDamage());
Debug.Log(playType + " was Hit!");
if (Random.value <= atk.getCritChance())
{
clay -= (3 * atk.getDamage());
result.setType(HitType.Crit);
result.setDamageTaken(3 * atk.getDamage());
Debug.Log("Crit!");
}
else
clay -= atk.getDamage();
}
else
Debug.Log(playType + " was Missed!");
if(clay <= 0)
result.setKilled(true);
// Only counter if it is the first attack in a set and the enemy's range allows it
else if(firstAttack && enemy.getMinAttackRange() <= distance && enemy.getMaxAttackRange() >= distance)
counter = enemy.takeAttackFrom(this, distance, false)[0];
// Add this enemy's result first, then the counter result
attacks.Add(result);
attacks.Add(counter);
statStr = "\nstats2 this " + ident() + ", clay: " + clay + ", endurance: " + currentWater;
statStr += "\nstats2 enemy " + enemy.ident() + ", clay: " + enemy.clay + ", endurance: " + currentWater;
Debug.Log(statStr);
return attacks;
}