Unity 判断物体是否是在相机视野内
你玩吃鸡游戏有没有这样的经历,往往只有当枪在你的视野内时,才可以捡起,而如果你背对枪,就算距离很近时,也没有办法捡起。如何用Unity来实现类似的功能呢,来学习吧!
Mesh Renderer:
Mesh Renderer
即网格渲染器,如果在游戏中,相机可以捕捉到物体,则会通过Mesh Renderer
对物体进行渲染,因此我们可以通过Mesh Renderer
来判断物体是否在相机视野中,从而做出判断
实现方式:
首先确保物体上面具有Mesh Renderer
,然后通过脚本生命周期的OnBecameVisible()
和OnBecameInvisible()
,类似于碰撞体检测,可以通过这两个方法来实现对于物体是否在视野内的判断
OnBecameVisibale():
- 当物体进入任何相机的视野内时,触发一次该方法,并且方法是挂载在物体上,与相机无关
OnBecameInvisible():
- 当物体离开任何相机的视野内时,触发一次该方法,并且方法是挂载在物体上,与相机无关
具体实例:
当角色接近某物体并且在视野内时,弹出提示按钮(模拟捡取物体过程):
首先确保物体具有Mesh Renderer,然后为物体挂载脚本,并添加相关的代码:
然后开始为物体添加脚本,首先利用一个布尔类型来对状态来进行判断:
public bool isplay;void OnBecameVisible() //当物体进入相机视野{isplay = true; } void OnBecameInvisible() //当物体离开相机视野{isplay = false; }
然后再次通过对于物体与角色之间的距离的判断来完成是否激发状态,角色命名为player
,而tigLcon为捡取提示,如图:
具体代码,首先通过距离判断和视野判断,若通过,则激发捡取状态并且弹出提示图片:
public Image tigLcon; //F按钮提示图
public bool pickUp=false; //角色是否可以捡取物体
private void Update()
{if (isplay&&Vector3.Distance(player.position, transform.position) <2.5f){ Debug.Log("Yes!");//在UI界面显示F按钮同时激发可以捡取物体的状态tigLcon.enabled = true; pickUp=true; }
}
最后通过pickUp可以实现后续的捡取物体的操作
总结:
OnBecameVisible()
和OnBecameInvisible()
是MonoBehaviour脚本生命周期的一个方法,使用比较简单,但可以帮助我们解决复杂的视野判断问题。
Unity 判断物体是否是在相机视野内相关推荐
- Unity判断物体相对位置
目录 一:点乘(Dot).叉乘(Cross) 1:点乘(Dot) 2:叉乘(Cross) 二:利用这个计算方位 1:点乘(Dot) 2:叉乘(Cross) 一:点乘(Dot).叉乘(Cross) 1: ...
- Unity 判断触碰点是否在UI内
本打算用EventTrigger组件实现的,但是它会导致父对象的事件被拦截 Canvas Render Mode = Screen Space的情况下,解决方案如下RectTransform.GetW ...
- Unity判断一个物体是否在相机范围内
Unity判断一个物体是否在相机范围内 思路 代码 注意点 思路 先说下思路,先把物体从世界坐标转到该相机的视口坐标viewPos, 如果满足这两个条件: 0<viewPos.x < 1 ...
- unity判断范围内有物体_Unity 检测物体是否在相机视野范围内
需求: 类似NPC血条,当NPC处于摄像机视野内,血条绘制,且一直保持在NPC头顶. 开始: 网上查找资料,然后编写代码: public RectTransform rectBloodPos; voi ...
- Unity 检测物体是否在相机视野范围内
摘要:本文原创,转载请注明出处:http://www.cnblogs.com/AdvancePikachu/p/6733620.html 需求: 类似NPC血条,当NPC处于摄像机视野内,血条绘制,且 ...
- Unity 判断两物体碰撞方向
Unity 判断两物体碰撞方向 问题描述:游戏玩家可以在两个平面之间不断进行跳跃,且出现玩家顶着上面平面飞着走的情况. 问题原因:玩家碰撞体与平面不断进行碰撞体检测,导致游戏玩家可以不断进行跳跃. 解 ...
- Unity某个物体始终朝向相机
1.Unity某个物体始终朝向相机 Quaternion q = Quaternion.identity;q.SetLookRotation(Camera.main.transform.forward ...
- 获取相机视口内物体在视线范围内某点的方法
我们在做HUD时经常使用物体的位置作为世界坐标点, 这在小物体的情况下没有问题, 但是在对于大型物体就有点麻烦, 因为我们的视角不一定能看到该点, 比如大楼, 大桥甚至公路等, 希望能在物体进入视线范 ...
- unity 陀螺仪 物体旋转和移动效果
unity 陀螺仪 物体旋转和移动效果 直接上码 带注释 public class SDKGyroController : MonoBehaviour {//陀螺仪是否存在class GyroGame ...
最新文章
- vue 动态修改后端请求_vue-element-admin实战 | 第二篇: 最小改动接入后台实现根据权限动态加载菜单...
- SQLSERVER使用CLR Stored Procedure导出数据到Excel
- Excel VBA开发中数字签名的管理
- 期末Java面向对象程序设计复习稳过不挂指南(更新中)
- k8s边缘节点_KubeEdge v0.2发布,全球首个K8S原生的边缘计算平台开放云端代码
- 基于JAVA+SpringMVC+MYSQL的鲜花销售平台
- AI人才有多贵?年薪三五十万美元起步,高校教授大量投身工业界
- lte 在网络覆盖方面应该注意哪些问题_TD-LTE网络深度覆盖三个受限因素及四大解决策略...
- python基础之流程控制(if判断和while、for循环)
- 广州地铁22号线将延伸至深圳,全线土建工程已完成57%
- 前端vue经典面试题78道(重点详细简洁)
- SageMath | Crypto Tool
- 陈顼oracle,一次视图合并引起的性能问题
- 为什么视频无法播放,视频无法播放的原因是什么
- C语言实现日历时间转换为秒(mktime)
- 《C程序员:从校园到职场》出版预告(3):从“阳春白雪”到“下里巴人”
- pycharm创建django项目时出错
- 回顾我的 2018 读书历程以及个人感悟,让我们一起期待更好的未来(本文耗时 8 个月。。。)
- 深度学习day05-利用TensorFlow搭建图像分类感知机模型,并使用模型进行图片分类
- JavaScript逆向调试记 —— defcon threefactooorx writeup
热门文章
- 企业招聘:UX设计师需要满足他们哪些期望?
- golang 防抖 debounce
- 同时运行多个Mac QQ的方法
- 免费皮肤控件的使用方法及效果测试——USkin v2.2
- JavaScript 数据类型——八种数据类型总结
- 国外国内网盘下载利器 Mipony (网盘下载器)
- LUA教程链表-43
- PHP 超全局变量详解 $GLOBALS $_SERVER $_GET $_POST $_COOKIE $_FILES $_ENV $_REQUEST $_SESSION
- 天玑810和骁龙695哪个好 天玑810和骁龙695差别
- 百度地图POI兴趣点查询