扇形攻击范围
/// <summary>/// 伞形攻击范围/// </summary>/// <param name="attacker">攻击方</param>/// <param name="attacked">被攻击方</param>/// <param name="angle">伞形角度</param>/// <param name="radius">伞形半径</param>/// <returns></returns>public bool UmbrellaAttact( Transform attacker ,Transform attacked ,float angle, float radius){Vector3 deltaA = attacked.position - attacker.position;float tmpAngle = Mathf.Acos(Vector3.Dot(deltaA.normalized, attacker.forward)) * Mathf.Rad2Deg;if (tmpAngle < angle * 0.5f && deltaA.magnitude < radius){return true;}return false;}
圆形攻击范围
圆形攻击范围有两种,以玩着荣耀的王昭君大招为例子,
第一种是制定位置施法:新版本的王昭君的大招是指定位置施法的,也就是说在玩家固定施法半径以内可随意放一个圆形的技能。在半径之内的敌人受伤。
第二种是固定位置施法:老版本的王昭君大招是在自身一定半径以内,敌人在这个范围内受伤。
其实两种判断都很简单,只需要判断敌人和SkillPosition之间的距离是否小于半径即可。
/// <summary>/// 不定点式圆形攻击/// </summary>/// <param name="attacked">被攻击方</param>/// <param name="skillPosition">技能释放位置</param>/// <param name="radius">半径</param>/// <returns></returns>public bool CircleAttack(Transform attacked,Transform skillPosition, float radius){float distance = Vector3.Distance(attacked.position, skillPosition.position);if (distance < radius){return true;}return false;}