1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Unity算法——扇形和圆形技能伤害判断

Unity算法——扇形和圆形技能伤害判断

时间:2021-02-14 20:40:39

相关推荐

Unity算法——扇形和圆形技能伤害判断

扇形攻击范围

/// <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;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。