您的位置:首页 > 移动开发 > Unity3D

unity中玩家扇形攻击范围

2017-03-30 14:08 3583 查看

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度的样子了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity 游戏 c#