Unity(2022.3.41LTS) - 摄像机

目录

一、基本概念

二、重要属性

三、摄像机模式

四、脚本控制

五、渲染设置

六. 组件详细介绍



一、基本概念

  1. 作用:摄像机决定了玩家在游戏中能够看到的内容。它就像是玩家的眼睛,从特定的位置和角度观察场景,并将场景中的物体渲染到屏幕上。
  2. 类型:
    • 主摄像机(Main Camera):每个场景通常都有一个主摄像机,它是默认的观察视角。主摄像机的设置对游戏的整体视觉效果起着关键作用。
    • 附加摄像机:可以在场景中添加多个附加摄像机,用于实现特定的效果,如分屏显示、小地图等。

二、重要属性

  1. 位置和旋转:
    • 位置决定了摄像机在场景中的坐标。可以通过在编辑器中直接拖动摄像机或者在脚本中修改其 Transform 组件的 position 属性来调整位置。
    • 旋转决定了摄像机的观察方向。可以通过在编辑器中旋转摄像机或者在脚本中修改其 Transform 组件的 rotation 属性来调整旋转。
  2. 视野(Field of View):
    • 对于透视摄像机,视野决定了摄像机的观察范围。较大的视野会显示更多的场景,但可能会导致物体变形。较小的视野则会聚焦在较小的区域,适用于需要特写或瞄准的场景。
    • 可以在 Inspector 面板中直接调整视野的值,也可以在脚本中通过修改 Camera 组件的 fieldOfView 属性来动态改变视野。
  3. 清除标志(Clear Flags):
    • 用于指定摄像机在渲染画面之前如何清除屏幕。有以下几种选项:
      • Skybox:使用天空盒来清除屏幕。这是默认选项,适用于大多数 3D 场景。
      • Solid Color:使用单一颜色来清除屏幕。可以在 Inspector 面板中设置清除的颜色。
      • Depth Only:只清除深度缓冲区,不清除颜色缓冲区。适用于多个摄像机叠加的场景,以避免画面重叠。
      • Don't Clear:不清除屏幕,保留上一帧的画面。这种选项很少使用,可能会导致画面混乱。
  4. 深度(Depth):
    • 摄像机的深度决定了它在渲染顺序中的优先级。深度值较小的摄像机将先渲染,深度值较大的摄像机将在其后渲染。
    • 可以在 Inspector 面板中设置摄像机的深度值,也可以在脚本中通过修改 Camera 组件的 depth 属性来动态改变深度。

三、摄像机模式

  1. 透视模式(Perspective):
    • 模拟人眼的视觉效果,物体近大远小。适用于大多数 3D 游戏,能够营造出立体感和深度感。
    • 可以调整视野、近裁剪平面和远裁剪平面等参数来控制透视效果。
  2. 正交模式(Orthographic):
    • 没有透视效果,物体在各个方向上的大小相同。适用于 2D 游戏或需要精确尺寸显示的场景,如策略游戏、模拟经营游戏等。
    • 可以调整大小(Size)参数来控制正交摄像机的观察范围。

四、脚本控制

可以通过编写脚本来控制摄像机的行为,实现各种动态效果。以下是一些常见的脚本控制方法:

  1. 摄像机跟随:
    • 使摄像机跟随一个特定的目标物体移动,如玩家角色。可以通过计算目标物体的位置和摄像机的位置之间的差值,然后逐渐移动摄像机来实现平滑的跟随效果。
    • 以下是一个简单的摄像机跟随脚本示例
using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    public Transform target;
    public float smoothSpeed = 0.125f;
    public Vector3 offset;

    void LateUpdate()
    {
        Vector3 desiredPosition = target.position + offset;
        Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed);
        transform.position = smoothedPosition;
        transform.LookAt(target);
    }
}
  1. 摄像机切换:
    • 在不同的场景或情况下切换不同的摄像机视角。可以通过激活和禁用不同的摄像机来实现切换效果。
    • 例如,可以在游戏中设置多个摄像机,分别用于主视角、第三人称视角和小地图视角,然后根据玩家的操作或游戏状态切换不同的摄像机。
    • oldCamera.enable = false;
    • newCamera.enable=true
    • using UnityEngine;
      
      public class ExampleScript : MonoBehaviour {
          public Camera firstPersonCamera;
          public Camera overheadCamera;
      
          // Call this function to disable FPS camera,
          // and enable overhead camera.
          public void ShowOverheadView() {
              firstPersonCamera.enabled = false;
              overheadCamera.enabled = true;
          }
          
          // Call this function to enable FPS camera,
          // and disable overhead camera.
          public void ShowFirstPersonView() {
              firstPersonCamera.enabled = true;
              overheadCamera.enabled = false;
          }
      }

  2. 摄像机震动:
    • 模拟摄像机的震动效果,如爆炸、撞击等。可以通过在脚本中随机改变摄像机的位置和旋转来实现震动效果。
    • 以下是一个简单的摄像机震动
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一然明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值