需求:

类似NPC血条,当NPC处于摄像机视野内,血条绘制,且一直保持在NPC头顶。

开始:

网上查找资料,然后编写代码:

public RectTransform rectBloodPos;

void Update ()

{

this.gameObject.transform.Translate (Input.GetAxis ("Horizontal") * * Time.deltaTime, , );

this.gameObject.transform.Translate (, , Input.GetAxis ("Vertical") * * Time.deltaTime);

Vector2 vec2 = Camera.main.WorldToScreenPoint (this.gameObject.transform.position);

rectBloodPos.anchoredPosition = new Vector2 (vec2.x - Screen.width / + , vec2.y - Screen.height / + );

}

实现效果图:

但是随后发现,若摄像机背对物体则如下图:

什么鬼,居然凭空出现UI,后来研究改进:

bool isRendering;

float curtTime=0f;

float lastTime=0f;

void OnWillRenderObject()

{

curtTime = Time.time;

}

void Update ()

{

isRendering = curtTime != lastTime?true:false;

Vector2 vec2 = Camera.main.WorldToScreenPoint (this.gameObject.transform.position);

if (isRendering)

{

rectBloodPos.gameObject.SetActive (true);

rectBloodPos.anchoredPosition = new Vector2 (vec2.x - Screen.width / + , vec2.y - Screen.height / + );

}

else

rectBloodPos.gameObject.SetActive (false);

lastTime = curtTime;

}

这种方法的原理是,当摄像机范围内出现挂有该脚本的物体,且该物体上存在Render组件的,则触发绘制UI。

虽然这个方法很好用,但是由于物体太多后,影响性能,故再次改进:

public bool IsInView(Vector3 worldPos)

{

Transform camTransform = Camera.main.transform;

Vector2 viewPos = Camera.main.WorldToViewportPoint (worldPos);

Vector3 dir = (worldPos - camTransform.position).normalized;

float dot = Vector3.Dot (camTransform.forward, dir);//判断物体是否在相机前面

if (dot > && viewPos.x >= && viewPos.x <= && viewPos.y >= && viewPos.y <= )

return true;

else

return false;

}

void Update ()

{

Vector2 vec2 = Camera.main.WorldToScreenPoint (this.gameObject.transform.position);

if (IsInView (transform.position))

{

rectBloodPos.gameObject.SetActive (true);

rectBloodPos.anchoredPosition = new Vector2 (vec2.x - Screen.width / + , vec2.y - Screen.height / + );

}

else

rectBloodPos.gameObject.SetActive (false);

}

这个方法是用Vector3.Dot()的方法判断摄像机与物体的朝向以及前后从而判定是否显示UI。

以上完美实现NPC血条跟随。

如果小伙伴们有更好的方法,一定要记得分享啊!!!

unity3d中检测一个物体是否在摄像机视野范围内

这个脚本最好是把模型对象的锚点设置在最低点.好了直接上脚本.可以直接复制代码,把CS文件拖到一个Camera上,然后把目标拖到targetTran中去就行了. using UnityEngine; u ...

R-FCN:基于区域的全卷积网络来检测物体

http://blog.csdn.net/shadow_guo/article/details/51767036 原文标题为“R-FCN: Object Detection via Region-ba ...

Unity 实现物体破碎效果(转)

unity判断范围内有物体_Unity 检测物体是否在相机视野范围内相关推荐

  1. Unity 检测物体是否在相机视野范围内

    摘要:本文原创,转载请注明出处:http://www.cnblogs.com/AdvancePikachu/p/6733620.html 需求: 类似NPC血条,当NPC处于摄像机视野内,血条绘制,且 ...

  2. vuforia的物体识别能识别大物体吗_衢州sensopart 物体识别检测视觉-灵测信息

    首页 > 新闻列表 > 浏览文章 发布时间:2020-11-03 12:07:00 浏览量: 6 导读:灵测信息为您提供衢州sensopart 物体识别检测视觉的相关知识与详情: 本文的关 ...

  3. Unity判断一个物体是否在相机范围内

    Unity判断一个物体是否在相机范围内 思路 代码 注意点 思路 先说下思路,先把物体从世界坐标转到该相机的视口坐标viewPos, 如果满足这两个条件: 0<viewPos.x < 1 ...

  4. Unity 判断两物体碰撞方向

    Unity 判断两物体碰撞方向 问题描述:游戏玩家可以在两个平面之间不断进行跳跃,且出现玩家顶着上面平面飞着走的情况. 问题原因:玩家碰撞体与平面不断进行碰撞体检测,导致游戏玩家可以不断进行跳跃. 解 ...

  5. Unity判断物体相对位置

    目录 一:点乘(Dot).叉乘(Cross) 1:点乘(Dot) 2:叉乘(Cross) 二:利用这个计算方位 1:点乘(Dot) 2:叉乘(Cross) 一:点乘(Dot).叉乘(Cross) 1: ...

  6. Unity 2D检测物体碰撞

    文章目录 添加物理脚本 使用脚本检测碰撞 添加物理脚本 Unity2D中,检测物体碰撞首相要给物体添加两个属性分别是: rigibody和collider,刚体和碰撞器. collider有不同的形状 ...

  7. 论文理解 R-FCN:基于区域的全卷积网络来检测物体

    本文转载自: http://blog.csdn.net/shadow_guo/article/details/51767036 原文标题为"R-FCN: Object Detection v ...

  8. VJ框架 与 人脸检测/物体检测 详解

    Viola-Jones Object Detection Framework 1. VJ Framework 1.1 Overview 本文详细阐述 Viola-Joines 人脸检测/物体检测 实时 ...

  9. 机器视觉实用工具集NO.16——指定监控区域运动物体闯入检测工具

    目录 前言 原理 Python实现源码 前言 在安防领域,很常见的一个机器视觉检测任务是区域闯入报警侦测,实现此功能,并不是非常困难,可以利用光流法对视频固定区域内的图像(相邻帧的)特征点变化情况进行 ...

最新文章

  1. qgis经纬度_数据养成系列--QGIS地理空间
  2. Facebook最新研究:配合AR眼镜使用的腕带,可将神经信号转化为动作
  3. 免费试用人数太多,微软Windows 365云电脑服务器炸了,官方紧急暂停
  4. python中组合框_PyQt 组合框
  5. 程序员之提升开发效率非常实用的十个工具网站分享
  6. java调用 火眼臻睛,连接创新,发现未来,臻识科技受邀CCF-GAIR,论道浪潮之巅...
  7. linux之nm命令
  8. c++生成光栅条纹程序_共享屋:一文让你认识光栅尺和编码器
  9. ChaiNext:市场短期内延续区间震荡
  10. 华为十年架构师实战经验总结:大规模分布式系统架构与设计实战
  11. David G. Lowe课题组 Fully Automatic Multi-target Tracking System
  12. UE4 虚幻引擎,处理PBR材质
  13. Scrapy爬虫代理IP的使用
  14. 教育培训行业的一些专有名词简称
  15. 一个通过添加本地分区索引提高SQL性能的案例
  16. 微信读书是看公众号文章的另一种选择
  17. js获取行内以及非行内样式
  18. Towards Two-Dimensional Sequence to Sequence Model和Two-Way Neural Machine Translation两篇论文简单分析
  19. 搭建harbor私库
  20. 近之则不逊;慈不掌兵

热门文章

  1. linux 命令:chown详解
  2. android 弹幕动画,实例解析如何在Android应用中实现弹幕动画效果
  3. 扯一扯 typescript中几种类型 (附带 环境安装)
  4. 吉安小吃,好多小时候喜欢的
  5. 竖排div+css导航栏菜单【转自懒人图库】
  6. ueditor php提交表单,ueditor在表单中的提交
  7. moto最新linux手机,MOTO卷土重来!全球独家实拍Linux智能新机A810
  8. word段落居中的快捷键_段落快捷键是什么-段落居中对齐快捷键-段落左对齐的快捷键...
  9. 算法笔记【二】DFS
  10. 基于知识图谱的医疗诊断系统论文