雨谈老师塔防摄像头移动归位 围绕选定对象旋转

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("无法取得对象,请选择物体!");  
     }


}









}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值