位置: 编程技术 - 正文
推荐整理分享当摄像机被墙挡住后,墙消失,相反则出现(三维坐标到二维坐标的转换实例Camera.main.WorldToScreenPoint)(摄像头挡住了),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:当摄像机被墙挡住怎么办,当摄像机被墙挡住怎么办,当摄像机被墙挡住会怎样,当摄像机被墙挡住会怎样,摄像头被遮挡会报警吗,摄像头挡住了,摄像头挡住了,当摄像机被墙挡住会怎样,内容如对您有帮助,希望把文章链接给更多的朋友!
//首先,不好意思,可能标题的描述并不是很清楚
//我们现在的场景是这样的,一个摄像机在高处,场景中间有一面高墙,墙的后面有一个球形物体
//高度够高的时候我们可以看到球形物体,当摄像机的y轴下降的时候,就只能看到墙,看不到球形物体
//而我们现在的需求是,当球形物体被墙挡住的时候,我们想让墙消失,y轴够高的时候,又让墙出现
//好了,接下来看我们的代码吧~
using UnityEngine;
using System.Collections;// 首先这个脚本放到我们的球身上public class NewBehaviourScript : MonoBehaviour { public GameObject Wall;void Update () {
// 这行代码并没神马用,只是为了方便观察,在球形物体和摄像机之间画一条线
Debug.DrawLine(Camera.mainCamera.transform.position,gameObject.transform.position, Color.red);
// 把球体的三维坐标转成屏幕的二维坐标,因为如果使用空间的三维坐标来计算,摄像机发射的射线很有可能是不会被墙挡住的
// 但是我们在屏幕上显示就不一样了,屏幕是二维坐标,它不管你三维空间有没有挡住啊,反正在二维坐标看起来球体就是被挡住了
// 所以我们需要进行一个三维到二维坐标的转换
Vector3 a = Camera.main.WorldToScreenPoint(gameObject.transform.position);
// 现在我们把以前常用的鼠标输入的二维坐标换成上面的a(大家原谅我简介不明了的命名规范吧 - -!)
Ray ray = Camera.main.ScreenPointToRay(a);
// 定义一个打击信息
RaycastHit hit;
// 如果射线打击到了物体
if (Physics.Raycast(ray, out hit) ){
// 这里的Wall是我给墙那个物体起的名字,如果打击到的物体名字是Wall的话
if (hit.transform.name == "Wall") { // 让墙的网渲染器不激活 Wall.transform.GetComponent<MeshRenderer>().enabled = false; } else { // 如果射线打击到的物体不是墙,就让墙的网渲染器激活 Wall.transform.GetComponent<MeshRenderer>().enabled = true; } } }}人物的方向跟随鼠标的方向 voidTurning(){//创建一个物理射线,获取鼠标的坐标RaycamRay=Camera.main.ScreenPointToRay(Input.mousePosition);//我这里判断的是射线打击到地面RaycastHitfloorHit;//如果射
Unity+NGUI性能优化方法总结 一共9招。1资源分离打包与加载游戏中会有很多地方使用同一份资源。比如,有些界面会共用同一份字体、同一张图集,有些场景会共用同一张贴图,有
[Unity3D]Stencil buffer失效了怎么办 摘要在unity4.6.5f1这个版本中,shader中使用stencilbuffer时候,出现了stencil无效的情况,怎么办。正文在unity4.6.5f1这个版本中,shader中使用stencilbuffer时候,
标签: 摄像头挡住了
本文链接地址:https://www.jiuchutong.com/biancheng/369252.html 转载请保留说明!友情链接: 武汉网站建设