Unity API 解析(2)—— Camera 类方法

RenderToCubemap  —— 生成Cubemap 静态贴图

RenderWithShader —— 使用其他Shader渲染

使用指定的shader来代替当前物体的shader渲染一帧。当replacementTag为空时会替换视口中所有物体的shader

setReplacementShader与此方法相近,但不是只渲染一帧

ScreenPointToRay

近视口到屏幕的射线。参考点position用实际像素值的方式来决定Ray到屏幕的位置。参考点position的X轴分量或Y轴分量从0增长到最大值时,ray从屏幕一边移动到另一边

using UnityEngine;
using System.Collections;

public class ScreenPointToRay_ts : MonoBehaviour
{
    Ray ray;
    RaycastHit hit;
    Vector3 v3 = new Vector3(Screen.width / 2.0f, Screen.height / 2.0f, 0.0f);
    Vector3 hitpoint = Vector3.zero;
    void Update()
    {
        // 射线沿着屏幕x轴从左向右循环扫描
        v3.x = v3.x >= Screen.width ? 0.0f : v3.x + 1.0f;
        // 生成射线
        ray = camera.ScreenPointToRay(v3);
        if (Physics.Raycast(ray, out hit, 100.0f))
        {
            // 绘制线,在scene试图中可见
            Debug.DrawLine(ray.origin, hit.point, Color.green);
            // 输出射线探测到物体的名称
            Debug.Log("é???ì?2aμ?μ???ì???3?£o" + hit.transform.name);
        }
    }
}

ScreenToViewportPoint —— 实现坐标点position从屏幕坐标系向摄像机视口单位化坐标系转换,单位为像素

ScreenToWorldPoint —— 将参考点position从屏幕坐标系转换到世界坐标系,实际单位

SetTargetBuffers —— 重设摄像机到TargetTexture的渲染

ViewportPointToRay —— 近视口到屏幕的射线

ViewportToWorldPoint —— 实现从camera视口坐标点向世界坐标点转换

此方法的返回值大小受当前camera在世界坐标系中的位置camera的fieldOfView值以及参考点的position共同影响

WorldToScreenPoint

从世界坐标点向屏幕坐标点转换,即坐标点position投射到屏幕上的坐标值,返回值的x和y分量是以屏幕左下角为(0,0)点,以向上为y轴,向右为x轴来计算的

using UnityEngine;
using System.Collections;

public class WorldToScreenPoint_ts : MonoBehaviour
{
    public Transform cb, sp;
    public Texture2D t2;
    Vector3 v3 = Vector3.zero;
    float sg;
    void Start()
    {
        // 记录屏幕高度
        sg = Screen.height;
    }
    void Update()
    {
        // sp 绕着cb的y轴旋转
        sp.RotateAround(cb.position, cb.up, 30.0f * Time.deltaTime);
        // 获取sp在屏幕上的坐标点
        v3 = camera.WorldToScreenPoint(sp.position);
    }
    void OnGUI()
    {
        // 绘制纹理
        GUI.DrawTexture(new Rect(0.0f, sg - v3.y, v3.x, sg), t2);
    }
}

WorldToViewportPoint

把三维坐标点position从世界坐标系转换到屏幕的单位化坐标系中,即世界坐标点position投射到屏幕上的坐标点的x,y分量所占屏幕宽高的比例大小。

 

camera 视口用来记录当前摄像机能看到场景中的哪些内容,其大小及位置是可以改变的

屏幕视口是指当前硬件的屏幕,对于一个固定的硬件(如手机),它的屏幕视口大小(分辨率)是固定的

camera视口的内容不一定可以完全显示在屏幕上,屏幕可能只显示其一部分内容

 

Game面板的aspect选项是用来模拟硬件屏幕的,可分为3类:全屏显示,固定比例显示和固定分辨率显示

时间: 2024-10-10 06:43:20

Unity API 解析(2)—— Camera 类方法的相关文章

Unity API 解析(2)—— Camera 类属性

aspect属性 -- 摄像机视口比例 public float aspect {get ; set ;} 用于获取或设置camera适口的宽高比例值 aspect 只处理摄像机可以看到的试图的宽高比例,而硬件显示屏的作用只是把摄像机的内容显示出来,当硬件显示屏的宽高比例与aspect的比例值不同时,视图将发生变形 using UnityEngine; using System.Collections; public class Aspect_ts : MonoBehaviour { void

Unity API 解析 学习

1 Application类 2 Camera类 3 GameObject类 4 HideFlags类 5 Mathf类 6 Matrix4x4类 7 Object类 8 Quaternion类 9 Random类 10 Rigidbody类 11 Time类 12 Transform类 13 Vector2类 14 Vector3类 1 Application类 1 using UnityEngine; 2 using System.Collections; 3 4 public class

Unity API 解析(3)—— GameObject 类

GameObject 类是Unity场景中所有实体的积累.一个GameObject对象通常由多个组件component组成,且至少含有一个transform组件.   activeSelf 属性 -- GameObject的Active标识 activeInHierarchy 属性的功能是返回GameObject实例在程序运行时的激活状态,它只有当GameObect实例的状态被激活时才会返回true.而且它会受父类对象激活状态的影响.如果其父类至最顶层的对象中有一个对象未被激活,activeIn

Unity API 解析(7)—— Object 类

Object 类是Unity中所有对象的基类   GetInstanceID -- Object 对象ID 每个对象在工程中都有唯一的ID,并且从程序开始运行到结束,除非对象被销毁,否则每个实例对应的ID都不会改变 从GameObject.CreatePrimitive() 或 Object.Instantiate() 中创建或克隆的每个名字相同的GameObject对象都有唯一的ID using UnityEngine; using System.Collections; public cla

Unity API解析

别想着一步到位,这个是渐进的,以点带面,写点小纸条,放到显眼处,方便随时记忆 第一部分: 游戏三要素: 1.游戏循环 处理输入,更新世界,响应输出 Application 2.游戏时间Time 3.游戏对象 静态对象,动态对象,物体运动(矢量放下,角度,) ObjectGameObjectMaxtrix4 CameraRagidbody Mathf Vector2Vector3 Qualxxx 角度 Transform

Unity API 解析(9)—— Rigidbody 类

模拟 GameObject 对象在现实世界中的物理特性(重力,阻力,质量,速度) 对Rigidbody 对象属性的赋值代码通常放在脚本的OnFixedUpdate 方法中   collisonDetectionMode 属性 -- 碰撞检测模式 刚体的碰撞检测模式有3种 Discrete -- 静态离散检测模式 Continuous -- 静态连续监测模式 ,一般用在高速运动刚体的目标碰撞体上 ContinousDynamic -- 最强的连续动态检测模式 drag 属性 -- 刚体阻力 dra

Unity API 解析(6)—— Matrix4x4 类

通常用在如摄像机的非标准投影变换等   MultiplyPoint 方法 -- 投影矩阵变换 对点v进行投影矩阵变换 主要用于Camera的投影变换,对于一般物体的矩阵变换用MultiplyPoint3x4方法,不涉及投影变换,计算速度更快 MultiplyPoint3x4 -- 矩阵变换 MultiplyVector 方法 -- 矩阵变换 对方向向量v进行矩阵变换 using UnityEngine; using System.Collections; public class Multipl

Unity API 解析(1)

Application 类 Application 类不含实例属性和实例方法,在脚本中通过直接调用Application类的静态属性和静态方法来控制程序的运行时数据 dataPath 属性 -- 数据文件路径 -- 返回程序的数据文件所在文件夹的路径(只读),返回路径为相对路径,不同游戏平台的数据文件保存路径不同 public  static  string  dataPath { get; } dataPath 和 streamingAssetsPath 的路径位置一般是相对程序的安装目录位置

Unity API 解析(10)—— Time 类

realtimeSinceStartup 属性 -- 程序运行实时时间   smoothDeltaTime 属性 -- 平滑时间间隔 主要用在 FixedUpdate 方法中需要平滑过渡的计算   time 属性 -- 程序运行时间 从游戏启动到现在