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

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

using UnityEngine;
using System.Collections;

public class CameraT3 : MonoBehaviour
{
    // public
    public Transform targetTran;

    // private
    private Rect screenRect;
    private Camera camera;

    void Start ()
    {
        screenRect = new Rect(0, 0, Screen.width, Screen.height);
        camera = GetComponent<Camera>();
    }

    void Update ()
    {
        if (screenRect.Contains(camera.WorldToScreenPoint(targetTran.position)))
        {
            Debug.Log("进入摄像机范围!");
        }
        if (!screenRect.Contains(camera.WorldToScreenPoint(targetTran.position)))
        {
            Debug.Log("不在摄像机范围!");
        }
    }
}
时间: 2024-10-29 02:50:33

unity3d中检测一个物体是否在摄像机视野范围内的相关文章

【Unity Shaders】Reflecting Your World —— 在Unity3D中创建一个简单的动态Cubemap系统

本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源(当然你也可以从官网下载). ========================================== 分割线 ========================================== 写在前面 我们已经学了很多关于反射的内容,但是我们现在的反射并不能实时反射,即当反射物体移动时它们不

javascript中检测一个变量的类型

1 /** 2 * 怎么检测一个变量的类型? 3 * 在js中检测对象类型主要有三种:typeof, instanceof, constructor, 这几种都可以检测对象的类型. 4 * 另外还可以适应jQuery来检测类型. 5 * */ 6 7 8 /** 9 * 1.使用typeof检测对象类型 10 * typeof作为最常用的检测类型方法,返回字符串类型; 11 * */ 12 function testType(value) { 13 var str = typeof(value)

unity中判断渲染物体是否在摄像机内渲染

1.先声明我们的变量: <span style="font-size:14px;">/// <summary> /// isRender 为true则表示在摄像机内,为false则相反 /// </summary> private bool isRender; private float lastTime; private float currentTime; /// <summary> /// controlUpdate 控制updat

如何检测一个圆在多个圆内?

问题定义: 存在多个半径相同的圆,和一个半径不同的圆,如何判断半径不同的圆完全在一群圆内.下图演示了几种情况,左边是完全在圆内,右边不是. 解决方法之一: 对于红圆在某个黑圆之内或者在所有黑圆之外等的特例情形,可以用简单的圆圆之间的几何判断算法得到结果,对于其余部分相交的一般情形,如果同时满足以下两个条件则红圆在黑圆内: 1. 红圆与所有黑圆的交点都在黑圆内: 2. 黑圆之间的交点如果在红圆内,则其也必然在黑圆内. 否则,红圆不在黑圆内.

tp5 view模板中 判断一个值是否在某个数组内 复选框用到了

{foreach $serviceInfo as $v} <div style="display: inline-block;margin-right: 10px;"> <input type="checkbox" value="{$v.service_item}" id="checkbox-{$v.id}" {in name="$v.id"value="$arr" }

Unity3D中自带事件函数的执行顺序(转)

原文:http://www.jianshu.com/p/1d93ece664e2 在Unity3D脚本中,有几个Unity3D自带的事件函数按照预定的顺序执行作为脚本执行.其执行顺序如下: 编辑器(Editor) Reset:Reset函数被调用来初始化脚本属性当脚本第一次被附到对象上,并且在Reset命令被使用时也会调用.编者注:Reset是在用户点击Inspector面板上Reset按钮或者首次添加该组件时被调用.Reset最常用于在见识面板中给定一个默认值. 第一次场景加载(First S

Unity3D中自带事件函数的执行顺序

在Unity3D脚本中,有几个Unity3D自带的事件函数按照预定的顺序执行作为脚本执行.其执行顺序如下: 编辑器(Editor) Reset:Reset函数被调用来初始化脚本属性当脚本第一次被附到对象上,并且在Reset命令被使用时也会调用.编者注:Reset是在用户点击Inspector面板上Reset按钮或者首次添加该组件时被调用.Reset最常用于在见识面板中给定一个默认值. 第一次场景加载(First Scene Load)这些函数会在一个场景开始(场景中每个物体只调用一次)时被调用.

Unity3D中的shader基础知识

1.Unity中配备了强大的阴影和材料的语言工具称为ShaderLab,以程式语言来看,它类似于CgFX和Direct3D的效果框架语法,它描述了材质所必须要的一切咨询,而不仅仅局限于平面顶点/像素着色. 2.在Unity3D中创建一个Shader:Assets -> Create -> Shader 3.创建了Shader就可以应用到各个材质Material中,创建材质:Assets -> Create -> Material.然后就可以在材质的Inspector面板中,shad

Unity3D中播放序列帧动画

[狗刨学习网] class FrameAnimation { private float fps = 10.0f; private Rect drawPos; private float time = 0; private int currentIndex = 0; public void DrawFrameAnimation(Texture[] frameTex) { int length = frameTex.Length; GUI.DrawTexture(drawPos, frameTex