// 方式1:通过主角和场景中的所有敌人比较
private void AtkCondition1(float _range,float _angle)
{
// 搜索所有敌人列表(在动态创建敌人时生成的)
// 列表存储的并非敌人的GameObject而是自定义的Enemy类
// Enemy类的一个变量mGameObject则用来存储实例出来的敌人实例
foreach (var go in GameManager.GetInstance.gMonsterDict)
{
// 敌人的坐标向量减去Player的坐标向量的长度(使用magnitude)
float tempDis1 = (go.Value.mGameObject.transform.position - mGameObject.transform.position).magnitude;
// 敌人向量减去Player向量就能得到Player指向敌人的一个向量
Vector3 v3 = go.Value.mGameObject.transform.position - mGameObject.transform.position;
// 求出Player指向敌人和Player指向正前方两向量的夹角,其实就是Player和敌人的夹角(不分左右)
float angle = Vector3.Angle( v3, mGameObject.transform.forward);
if (tempDis1 < _range && angle < _angle)
{
// 距离和角度条件都满足了
}
}
}
// 方式2:通过主角和射线检测到的敌人比较
private void AtkCondition2(float _range,float _angle)
{
// 球形射线检测周围怪物,不用循环所有怪物类列表,无法获取“Enemy”类
Collider[] colliderArr = Physics.OverlapSphere(mGameObject.transform.position, _range, LayerMask.GetMask("Enemy"));
for (int i = ; i < colliderArr.Length; i++)
{
Vector3 v3 = colliderArr[i].gameObject.transform.position - mGameObject.transform.position;
float angle = Vector3.Angle(v3, mGameObject.transform.forward);
if (angle < _angle)
{
// 距离和角度条件都满足了
}
}
}

参考:https://blog.csdn.net/chy_xfn/article/details/52512343

最新文章

  1. Android应用开发中半透明效果实现方案
  2. 理解Memcached的分布式
  3. js,html,css注释大集合
  4. Server.UrlEncode()方法 空格转换成了+而非%20
  5. Harris角点检测
  6. 修改dll版本号处理未能加载“******”,或找不到动态链接库依赖的项
  7. 实例分析ELF文件动态链接
  8. 【转载】《Ext JS 4 First Look》翻译之一:新特性
  9. MX记录
  10. 王家林的81门一站式云计算分布式大数据&amp;移动互联网解决方案课程第14门课程:Android软硬整合设计与框架揭秘: HAL&amp;Framework &amp;Native Service &amp;App&amp;HTML5架构设计与实战开发
  11. 【WPF】 打开本地的文件或者文件夹
  12. js动态添加id
  13. spring配置和注解事务同时存在导致的事务嵌套
  14. windows NLB实现MSSQL读写分离--从数据库集群读负载均衡
  15. HDU 3341 Lost&#39;s revenge AC自动机+dp
  16. 结合JDK源码看设计模式——桥接模式
  17. NRF51822模块无法识别问题解决办法
  18. flask-sqlalchemy中Datetime的创建时间、修改时间,default,server_default,onupdate
  19. android HttpClient将数据提交到服务器
  20. 阿里云centos安装docker-engine实践

热门文章

  1. epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
  2. Nginx:论高并发,在座各位都是渣渣
  3. python简说(六)判断
  4. 鼠标滑轮事件QWheelEvent
  5. Android 系统(64)---Android中m、mm、mmm、mma、mmma的区别【转】
  6. 我的互联网30年。永远的8U8 永远的Y365
  7. centos6.8下源码编译安装tmux
  8. macOS搭建开发环境
  9. sqlserver 触发器的运行关键字
  10. Shiro学习笔记四(Shiro集成WEB)