Unity3D如何实现攻击范围检测

  介绍

小编这次要给大家分享的是Unity3D如何实现攻击范围检测,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

<强>一、扇形攻击范围检测

;
  使用System.Collections;
  
  
  公开课AttackCHeck: MonoBehaviour
  {//要攻击的目标
  公共变换目标;//扇形距离攻击距离扇形的半径
  私人浮动SkillDistance=5;//扇形的角度也就是攻击的角度
  私人浮动SkillJiaodu=60;
  
  私人空间更新()
  {//与敌人的距离
  浮动距离=Vector3.Distance(变换。位置,Target.position);//玩家正前方的向量
  Vector3 norVec=变换。旋转* Vector3.forward;//玩家与敌人的方向向量
  Vector3 temVec=目标。位置- transform.position;//求两个向量的夹角
  浮动jiajiao=Mathf.Acos (Vector3.Dot (norVec。temVec.normalized)) * Mathf.Rad2Deg规范化;
  如果(距离& lt;SkillDistance)
  {
  如果(jiajiao & lt;=SkillJiaodu * 0.5度)
  {
  Debug.Log(“在扇形范围内“);
  }
  }
  }
  }

<强>二,长方形范围攻击检测

;
  使用System.Collections;
  
  
  公开课AttackCHeck: MonoBehaviour
  {//要攻击的目标
  公共变换目标;
  
  私人空间更新()
  {//计算玩家与敌人的距离
  浮动距离=Vector3.Distance(变换。位置,Target.position);//玩家与敌人的方向向量
  Vector3 temVec=目标。位置- transform.position;//与玩家正前方做点积
  forwardDistance=Vector3浮动。点(temVec transform.forward.normalized);
  如果(forwardDistance比;0,,forwardDistance & lt;=10)
  {
  rightDistance=Vector3浮动。点(temVec transform.right.normalized);
  
  如果(Mathf.Abs (rightDistance) & lt;=3)
  {
  Debug.Log(“进入攻击范围“);
  }
  }
  
  }
  }

<强>三、半圆形攻击范围检测

;
  使用System.Collections;
  
  
  公开课AttackCHeck: MonoBehaviour
  {//要攻击的目标
  公共变换目标;
  私人空间更新()
  {//计算玩家与敌人的距离
  浮动距离=Vector3.Distance(变换。位置,Target.position);//玩家与敌人的方向向量
  Vector3 temVec=目标。位置- transform.position;//与玩家正前方做点积
  forwardDistance=Vector3浮动。点(temVec transform.forward.normalized);
  如果(forwardDistance比;0,,forwardDistance & lt;=10)
  {
  如果(距离& lt;=5)
  {
  Debug.Log(“进入攻击范围“);
  }
  }
  }
  }

暂时就写三种吧!目前就遇到三种,以后遇到再更新。接下来介绍一下算法的核心知识点吧

其实这些小算法基本上用的全是向量的计算,向量的计算有两种

<强> 1。向量的点乘

→。B=| | * | | * cosθ
→点乘应用

1)。如果让一个等于单位向量| |==1 c点积等于B在A上的投影
2)。如果让B等于单位向量arccos (a.b)==夹角

<强> 2。向量的叉乘

→A * B=C C就是A和B的法向量
→叉乘应用

1)。c是有方向。通过左手定则可以知道c的方向
2)。所以叉乘一般是用来计算方向的
3)。A和B都是单位向量arcsin (A * B | |)等于夹角

看完这篇关于Unity3D如何实现攻击范围检测的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。

Unity3D如何实现攻击范围检测