想做一个伤害判定系统。比如一个敌人是水属性防御,玩家的火属性攻击只对敌人造成75%的伤害,但土属性攻击就会造成125%伤害,就是每个伤害属性对不同防御属性造成的伤害系数不同。
我知道大概的制作流程,但不知道具体如何实现,所有的疑问都写在代码里了。
public class damage : MonoBehaviour
{
public enum damageType { MENTAL, NATURE, WATER, HIRE, GROUND }
public damageType type; //伤害类型
private Enemy damageTarget; //伤害目标
public float damagepoint; //伤害值
public damage(int type, float point)
//通过new实例化伤害类型造成伤害?
{
this.type = (damageType)type;
damagepoint = point;
TakeDamage();
}
void TakeDamage()
{
//调用伤害目标的组件对其造成伤害
damageTarget = damageTarget.GetComponent<Enemy>();
damageTarget.GetDamage(传入伤害类型?, damagepoint);
}
}
public class defence : MonoBehaviour
{
public enum defenceType { MENTAL, NATURE, WATER, HIRE, GROUND } //所有防御类型
private defenceType Type;
public damageType(damage类里的属性怎么给敌人的防御类型赋值?);
// Start is called before the first frame update
// Update is called once per frame
public float CalculateDamage()
{
字典如何实现,该写在哪里(哪个文件,或者新写一个文件?如何调用此字典?)?
float damageCoefficient = Dictionary<(伤害类型,防御类型), 伤害系数>;
return (float)damageCoefficient;
}
}
public class Enemy : MonoBehaviour
{
public float hp;
public defence armor;
armor.Type = ??;
//如何添加一个防御类型?
public void GetDamage(传入伤害类型,float damagePoint)
{
hp -= damagePoint * 伤害系数 armor.CalculateDamage(传入伤害类型);
}
}
虽然我不懂这个,但是我知道一件事情,判断,打出的伤害可以做一个标记,火为1,水为2这样的,到时候用switch语句去判断这个攻击的属性相乘就行了
建议单独设一个枚举,由枚举值判断伤害类型