Unity API Camera摄像机的使用

Camera.main
返回主摄像机的Camera组件

第一个启用的标签为“MainCamera”的摄像机(只读)。

场景中的主要摄像机。如果场景中没有这样的摄像机,则返回null。此属性在内部使用FindGameObjectsWithTag,并且不缓存结果,建议缓存相机的返回值。

Camera.main等同于GameObject.Find("MainCamera").GetComponent<Camera>()

Camera.ScreenPointToRay
把屏幕上的点转换为一个射线

返回从摄像机通过屏幕点的射线。

得到的射线在世界空间中,从相机的近平面开始,经过屏幕上的(x,y)像素坐标(位置)。z是忽略)。

屏幕空间以像素为单位定义。屏幕左下角为(0,0);右上角是(像素宽度-1,像素高度-1)。

射线检测碰撞
public class API16Camera : MonoBehaviour {
    private Camera mainCamera;
    void Start () {
        //mainCamera= GameObject.Find("MainCamera").GetComponent<Camera>();//获取主摄像机的Camera组件
        mainCamera = Camera.main;//获取主摄像机的Camera组件
    }    
    void Update () {
        //Input.mousePosition是鼠标位置
        //mainCamera.ScreenPointToRay把屏幕上的点转换为射线
        Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;//射线碰撞到的游戏物体
        bool isCollider = Physics.Raycast(ray, out hit);//通过射线检测输出碰撞到的物体,并返回是否发生碰撞
        if (isCollider)//如果射线碰撞到物体
        {
            Debug.Log(hit.collider);//hit.collider是射线所碰撞到的 碰撞器
        }
    }
}
给射线添加颜色 
Ray ray = mainCamera.ScreenPointToRay(new Vector3(200, 200, 0));//将屏幕上的点转换为射线
//参数1:射线原点,参数2:射线方向,参数3:颜色
Debug.DrawRay(ray.origin, ray.direction * 10, Color.yellow);


Camera.backgroundColor
设置背景

关于Camera组件的作用和一些属性介绍 
Clipping Planes裁剪面
裁剪面最近


裁剪面最远


Field of View视野范围


Projection投射模式


Clear Flags清空


静态属性
allCameras

返回场景中所有的相机

allCamerasCount

获取场景中所有相机的数量

current

获取当前的相机

main

获取主相机

使用Camera把屏幕坐标转换成射线
方法
ScreenPointToRay

把屏幕坐标转换成射线

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class CameraTest : MonoBehaviour {
 
private Camera camera;
 
    void Start () {
        camera = Camera.main;//利用引用节省性能
    }
    
    void Update () {
        Ray ray = camera.ScreenPointToRay(Input.mousePosition);//通过屏幕坐标转换成射线
        Debug.DrawRay(ray.origin, ray.direction);//绘制射线
        Debug.DrawLine(ray.origin, ray.origin + ray.direction * 100);//绘制100米的射线
        RaycastHit hit;//碰撞信息
        bool isCollider = Physics.Raycast(ray, out hit);//射线检测
        Debug.Log(hit.collider);//输出碰撞信息
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity APIUnity提供的一组API,通过这些API可以访问Unity的各种功能和组件,包括游戏对象、场景管理、物理引擎、动画系统、UI系统等。下面是一些常用的Unity组件和API的介绍: 1. Transform组件:Transform组件是所有游戏对象都拥有的组件,它包含了游戏对象的位置、旋转和缩放信息,可以用来控制游戏对象在三维空间中的位置和方向。 2. Rigidbody组件:Rigidbody组件是物理引擎中的一个组件,用来控制游戏对象的物理行为,包括重力、碰撞、力和速度等。 3. Collider组件:Collider组件是物理引擎中的一个组件,用来检测游戏对象之间的碰撞,并触发相应的事件。 4. Animator组件:Animator组件是动画系统中的一个组件,用来播放游戏对象的动画,并控制动画的参数和状态。 5. AudioSource组件:AudioSource组件是声音系统中的一个组件,用来播放游戏对象的声音,并控制声音的音量、音调和循环等。 6. Camera组件:Camera组件是渲染系统中的一个组件,用来控制游戏对象的视角和视野,可以用来创建不同的摄像机效果。 7. UI组件:Unity的UI系统包括了一些常用的UI组件,如Text、Image、Button、Slider等,可以用来创建游戏中的UI界面。 8. Input类:Input类是Unity的输入系统,用来检测游戏输入设备(如键盘、鼠标、手柄)的输入,并触发相应的事件。 9. Time类:Time类是Unity的时间系统,用来控制游戏中的时间流逝,包括游戏帧率、时间缩放和游戏时间等。 10. SceneManager类:SceneManager类是Unity的场景管理系统,用来加载、卸载、切换和管理场景,包括场景的异步加载和卸载等。 以上是一些常用的Unity组件和API的介绍,这些组件和API可以帮助开发者更方便地创建和控制游戏对象,并实现各种不同的游戏功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值