unity中玩家扇形攻击范围
在unity rpg游戏中,经常会有主角或者Boss什么的会发动技能攻击,除了有攻击的距离以外,肯定会有攻击的扇形范围。本篇博客就给大家简单的讲解一下范围。
这个是出来60度角的视线范围,在主角的60度角里面,可以去判断是否可以发动攻击,并且用射线来检测target是否在范围之内。
检测扇形角度
这里用了两条Debug.DrawLine来绘制两条红色的线,用来显示所在的区域。
//检测扇形角度
float distance = Vector3.Distance(target.transform.position, transform.position);
Quaternion right = transform.rotation * Quaternion.AngleAxis(30, Vector3.up);
Quaternion left = transform.rotation * Quaternion.AngleAxis(30, Vector3.down);
Vector3 n = transform.position + (Vector3.forward * distance);
Vector3 leftPoint = left * n;
Vector3 rightPoint = right * n;
Debug.DrawLine(transform.position, leftPoint, Color.red);
Debug.DrawLine(transform.position, rightPoint, Color.red);
攻击检测
检测的代码还是很少的,先贴出来
Vector3 targetDir = target.transform.position - transform.position;
Vector3 forward = transform.forward;
float angle = Vector3.Angle(targetDir, forward);
if (angle < 30.0f)
{
//攻击代码
}
targetDir 指的是目标方向, 而forward 是指的是玩家朝着的方向,在范围为30度的大小里面就可以发动攻击了。
把这段代码放在Update()里面调用就可以了,就可以出现主角攻击的范围在正向60度的样子了