Unity3D中摄像机的用法

Unity3D中摄像机的用法归类:
1.静态的照射某个区域
2.第一人称跟随
3.第三人称跟随
4.通过滚轮来实现摄像机的拉远拉近效果
5.通过鼠标的左右滑动来实现摄像机在显示器上左右移动
6.在同一场景中多个摄像机切换的问题

本帖中将会综合以上的6种特例来分别讲述实现的方法。。。很激动有木有。。(*^__^*) 嘻嘻……接着往下看吧。。



1. 第一种静态照射某个区域不用细说,在Scene视图中放置好摄像机的位置即可。
2. 第一人称跟随,第三人称跟随在u3d中自带有脚本,如下图所示,只要把资源导入添加即可。

下面着重说下4,5,6点

3.通过滚轮来实现摄像机的拉远拉近效果

上代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using UnityEngine;
using System.Collections;
  
public class camera : MonoBehaviour {
  
public float minFov = 15f;
     public float maxFov = 90f;
     public float sensitivity = 10f;
  
     void Update()
     {
       float fov = Camera.main.fieldOfView;
       fov += -Input.GetAxis( "Mouse ScrollWheel" ) * sensitivity;
       fov = Mathf.Clamp(fov, minFov, maxFov);
       Camera.main.fieldOfView = fov;
     }
}
Mathf.Clamp的作用是将fov的数值限定在minFov和maxFov之间。
Camera.main.fieldOfView是用来设置摄像机视野的大小

4.通过鼠标的左右滑动来实现摄像机在显示器上左右移动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using UnityEngine;
using System.Collections;
  
public class camera : MonoBehaviour
{
  
      public float roate_Speed=2f; //旋转速度
      void Update()
      {
           float mousX = Input.GetAxis( "Mouse X" ) * roate_Speed; //得到鼠标移动距离
           transform.Rotate( new Vector3(0, mousX, 0));
      }
  
}
Input.GetAxis("Mouse X")得到鼠标移动的距离,只是这个数值比较小,所以增加一个roate_Speed

5.在同一场景中多个摄像机切换的问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var camera1:GameObject;
var camera2:GameObject;
var camera3:GameObject;
  
function Update ()
{
         if (Input.GetKeyUp(KeyCode.Alpha1))
         {
                 onActiveFalse();
                 camera1.active= true ;
         } else if (Input.GetKeyUp(KeyCode.Alpha2))
         {
                 onActiveFalse();
                 camera2.active= true ;
          
         } else if (Input.GetKeyUp(KeyCode.Alpha3))
         {
                 onActiveFalse();
                 camera3.active= true ;
         }
}
function onActiveFalse()
{
         camera1.active= false ;
         camera2.active= false ;
         camera3.active= false ;
}

你可能感兴趣的:(unity)