Unity随机镜头切换,可旋转,可拉近拉远

Unity的脚本发现自己还真是薄弱哇,现在还有一个问题没有解决,就是摄像机旋转时,不能低于地表 ,我考虑是可以用本地坐标的欧拉角y的绝对值小于90度,但是迫于好多东西不是很懂,只能放弃先,有会得小伙伴可以留言哦,下面帖一下代
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Third_Camera_Controller : MonoBehaviour
{
    public float speed=10;//镜头旋转的速度

    private float _distance_away_player = 4;
    private float _distance_away_ground = 2;
    private float _smooth = 1;
    private bool _change_away = false;
    private bool _change_height = false;
    private GameObject player;
    public GameObject temp;


    private bool _Lock_Camera_Rot=false;//判断是否锁死摄像头视角
    private float _x=0f;
    private float _y=10f;

    private bool _change_distance = false;
    private float distance = 5;
    


    private Vector3 _Carmera_Target_Position;
    // Use this for initialization
    void Start()
    {
        player = GameObject.FindWithTag("Player");
      
    }
    Quaternion qt;
    Vector3 dirction;

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.P)){
            _change_distance = !_change_distance;
        
        }//控制是否锁屏的bool变化

        if (_change_distance)
        {
            distance += Input.GetAxis("Mouse ScrollWheel") * 5f;
     
        }
        distance = Mathf.Clamp(distance, 3, 7);//更改距离大小,并限定变化范围

        if (Input.GetKey(KeyCode.O))
        {
            _Lock_Camera_Rot = !_Lock_Camera_Rot;
   
        }//管理是否锁死镜头bool

        if (!_Lock_Camera_Rot)
        {
            _x += Input.GetAxis("Mouse X") * speed * Time.deltaTime;
         
           

            _y += Input.GetAxis("Mouse Y") * speed * Time.deltaTime;
            _y = Mathf.Clamp(_y, 100f, 1000000000f);
            print(_y);
        }//改变旋转角度,xyzhou的
        

        qt = Quaternion.Euler(-_y, -_x, 0);//得到四元组
        dirction = qt * Vector3.forward;//得到旋转角度

        _Carmera_Target_Position = player.transform.position + dirction * distance;//得到当前镜头位置
     
     //    transform.position = Vector3.Lerp(transform.position, _Carmera_Target_Position, Time.deltaTime * _smooth);//差值旋转到目标位置
         transform.LookAt(temp.transform);//镜头始终看向player


   
        


    }
}

码’图就不上了,靴靴
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值