Unity3D中摄像机的用法归类:
1.静态的照射某个区域
2.第一人称跟随
3.第三人称跟随
4.通过滚轮来实现摄像机的拉远拉近效果
5.通过鼠标的左右滑动来实现摄像机在显示器上左右移动
6.在同一场景中多个摄像机切换的问题
本帖中将会综合以上的6种特例来分别讲述实现的方法。。。很激动有木有。。(*^__^*) 嘻嘻……接着往下看吧。。
1. 第一种静态照射某个区域不用细说,在Scene视图中放置好摄像机的位置即可。
2. 第一人称跟随,第三人称跟随在u3d中自带有脚本,如下图所示,只要把资源导入添加即可。
下面着重说下4,5,6点
3.通过滚轮来实现摄像机的拉远拉近效果
上代码
Mathf.Clamp的作用是将fov的数值限定在minFov和maxFov之间。
Camera.main.fieldOfView是用来设置摄像机视野的大小
4.通过鼠标的左右滑动来实现摄像机在显示器上左右移动
Input.GetAxis("Mouse X")得到鼠标移动的距离,只是这个数值比较小,所以增加一个roate_Speed
5.在同一场景中多个摄像机切换的问题
1.静态的照射某个区域
2.第一人称跟随
3.第三人称跟随
4.通过滚轮来实现摄像机的拉远拉近效果
5.通过鼠标的左右滑动来实现摄像机在显示器上左右移动
6.在同一场景中多个摄像机切换的问题
本帖中将会综合以上的6种特例来分别讲述实现的方法。。。很激动有木有。。(*^__^*) 嘻嘻……接着往下看吧。。

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

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;
}
}
|
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));
}
}
|
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
;
}
|