using UnityEngine;
using System.Collections;
public class CameraContorl : MonoBehaviour {
public float minFov=15.0f;
public float maxFov=150.0f;
public float sensitivity = 10f;
private Transform target_transform=null;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//检测鼠标左键是否按下 没down down只一次
bool press_left= Input.GetMouseButton (0);
//检测鼠标右键键是否按下
bool press_right = Input.GetMouseButton (1);
//检测鼠标中轮是否按下
bool ScrollWheel= Input.GetMouseButton (2);
//检测Alt是否按下
bool alt = Input.GetKey (KeyCode.LeftAlt);
//获得鼠标在水平、垂直方向的移动距离
float mx = Input.GetAxis ("Mouse X");
float my = Input.GetAxis ("Mouse Y");
//按住鼠标滚轮调整角度
if(ScrollWheel){
transform.Rotate(my*2.0f,mx*2.0f,0);
}
//alt+左键按下移动场景
if(press_left & alt ){
transform.Translate(-mx*5.0f,0,-my*5.0f);
}
//alt+右键按下摄像机按Y轴移动
if(press_right & alt ){
transform.Translate(0,-my*5.0f,0);
}
//拉近拉远效果
//Input.GetAxis("Mouse ScrollWheel")----鼠标转轮滚动距离
float fov = Camera.main.fieldOfView;
fov += Input.GetAxis("Mouse ScrollWheel") * sensitivity;
fov = Mathf.Clamp(fov, minFov, maxFov);
Camera.main.fieldOfView = fov;
//归位设置摄像机
if(Input.GetKeyDown (KeyCode.H)){
//test场景摄像机,步冲突。
if(gameObject.name=="test_camer"){return;}
//切换相机
if(Camera.main.depth==1){
//实现跟随效果
Camera.main.depth=-1;
Camera.main.fieldOfView = 77.0f;
Camera.main.transform.localPosition= new Vector3(-0.528f,3.2393f,-4.507f);
Camera.main.transform.localEulerAngles=new Vector3(11.723f,1.8464f,359f);
}else{
//实现远离主角效果
Camera.main.depth=1;
Camera.main.fieldOfView = 77.0f;
Camera.main.transform.position= new Vector3(229.082f,47.7411f,42.4572f);
Camera.main.transform.eulerAngles=new Vector3(11.7237f,359.0f,359.0f);
}
}
//让摄像机围绕选定对象旋转
if(Input.GetKey(KeyCode.A) & press_left){
Vector3 mouse_posion=Input.mousePosition;
Ray rayObj = Camera.main.ScreenPointToRay(mouse_posion);
RaycastHit hitObj;
if (Physics.Raycast(rayObj, out hitObj))
{
if(hitObj.collider.gameObject.tag=="terrain"){
//Debug.Log("射线得到的对象名称:" + hitObj.collider.name);
target_transform = null; }else{target_transform=hitObj.transform;}
}
if (target_transform != null)
{
//Debug.Log("射线取得对象");
//float mousX = Input.GetAxis("Mouse X") * 2.0f;//得到鼠标移动距离
//旋转选定的对象
//target_transform.transform.Rotate(new Vector3(0, -mousX, 0));
transform.RotateAround (target_transform.transform.position, Vector3.up, 20 * Time.deltaTime);
}else{
//transform.RotateAround (mouse_posion, Vector3.up, 20 * Time.deltaTime);
Debug.Log("无法取得对象,请选择物体!");
}
}
}
}
using System.Collections;
public class CameraContorl : MonoBehaviour {
public float minFov=15.0f;
public float maxFov=150.0f;
public float sensitivity = 10f;
private Transform target_transform=null;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//检测鼠标左键是否按下 没down down只一次
bool press_left= Input.GetMouseButton (0);
//检测鼠标右键键是否按下
bool press_right = Input.GetMouseButton (1);
//检测鼠标中轮是否按下
bool ScrollWheel= Input.GetMouseButton (2);
//检测Alt是否按下
bool alt = Input.GetKey (KeyCode.LeftAlt);
//获得鼠标在水平、垂直方向的移动距离
float mx = Input.GetAxis ("Mouse X");
float my = Input.GetAxis ("Mouse Y");
//按住鼠标滚轮调整角度
if(ScrollWheel){
transform.Rotate(my*2.0f,mx*2.0f,0);
}
//alt+左键按下移动场景
if(press_left & alt ){
transform.Translate(-mx*5.0f,0,-my*5.0f);
}
//alt+右键按下摄像机按Y轴移动
if(press_right & alt ){
transform.Translate(0,-my*5.0f,0);
}
//拉近拉远效果
//Input.GetAxis("Mouse ScrollWheel")----鼠标转轮滚动距离
float fov = Camera.main.fieldOfView;
fov += Input.GetAxis("Mouse ScrollWheel") * sensitivity;
fov = Mathf.Clamp(fov, minFov, maxFov);
Camera.main.fieldOfView = fov;
//归位设置摄像机
if(Input.GetKeyDown (KeyCode.H)){
//test场景摄像机,步冲突。
if(gameObject.name=="test_camer"){return;}
//切换相机
if(Camera.main.depth==1){
//实现跟随效果
Camera.main.depth=-1;
Camera.main.fieldOfView = 77.0f;
Camera.main.transform.localPosition= new Vector3(-0.528f,3.2393f,-4.507f);
Camera.main.transform.localEulerAngles=new Vector3(11.723f,1.8464f,359f);
}else{
//实现远离主角效果
Camera.main.depth=1;
Camera.main.fieldOfView = 77.0f;
Camera.main.transform.position= new Vector3(229.082f,47.7411f,42.4572f);
Camera.main.transform.eulerAngles=new Vector3(11.7237f,359.0f,359.0f);
}
}
//让摄像机围绕选定对象旋转
if(Input.GetKey(KeyCode.A) & press_left){
Vector3 mouse_posion=Input.mousePosition;
Ray rayObj = Camera.main.ScreenPointToRay(mouse_posion);
RaycastHit hitObj;
if (Physics.Raycast(rayObj, out hitObj))
{
if(hitObj.collider.gameObject.tag=="terrain"){
//Debug.Log("射线得到的对象名称:" + hitObj.collider.name);
target_transform = null; }else{target_transform=hitObj.transform;}
}
if (target_transform != null)
{
//Debug.Log("射线取得对象");
//float mousX = Input.GetAxis("Mouse X") * 2.0f;//得到鼠标移动距离
//旋转选定的对象
//target_transform.transform.Rotate(new Vector3(0, -mousX, 0));
transform.RotateAround (target_transform.transform.position, Vector3.up, 20 * Time.deltaTime);
}else{
//transform.RotateAround (mouse_posion, Vector3.up, 20 * Time.deltaTime);
Debug.Log("无法取得对象,请选择物体!");
}
}
}
}