那Unity3D中摄像机能有多少种用法呢?就小弟目前掌握的大概列举下:
1.静态的照射某个区域
2.第一人称跟随
3.第三人称跟随
4.通过滚轮来实现摄像机的拉远拉近效果
5.通过鼠标的左右滑动来实现摄像机在显示器上左右移动
6.在同一场景中多个摄像机切换的问题
1.第一种静态照射某个区域不用细说,在Scene视图中放置好摄像机的位置即可。
2.第一人称跟随,第三人称跟随在u3d中自带有脚本,如下图所示,只要把资源导入添加即可。
下面着重说下4,5,6点
3.通过滚轮来实现摄像机的拉远拉近效果
上代码
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.通过鼠标的左右滑动来实现摄像机在显示器上左右移动
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.在同一场景中多个摄像机切换的问题
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;
}
1.静态的照射某个区域
2.第一人称跟随
3.第三人称跟随
4.通过滚轮来实现摄像机的拉远拉近效果
5.通过鼠标的左右滑动来实现摄像机在显示器上左右移动
6.在同一场景中多个摄像机切换的问题
1.第一种静态照射某个区域不用细说,在Scene视图中放置好摄像机的位置即可。
2.第一人称跟随,第三人称跟随在u3d中自带有脚本,如下图所示,只要把资源导入添加即可。
下面着重说下4,5,6点
3.通过滚轮来实现摄像机的拉远拉近效果
上代码
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.通过鼠标的左右滑动来实现摄像机在显示器上左右移动
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.在同一场景中多个摄像机切换的问题
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;
}