• 相机跟随


    几次的相机跟随的练习让我发现我还是需要记录一下不同的相机跟随的实现

    相机跟随的移动一般写在LateUpdate里,这样不会造成一些失真现象。

    1.在固定位置的相机跟随

    public class FollowTarget : MonoBehaviour {
    
        public Transform character;  //摄像机要跟随的人物
        private Camera mainCamera;//主摄像机
    
        void Awake()
        {
            mainCamera = Camera.main;
        }
    
        void FixedUpdate()
        {
            transform.position = character.TransformPoint(new Vector3(0, 4, -5));
            transform.LookAt(character);
        }
    }
    2.有鼠标滚轮缩进的相机跟随

    using UnityEngine;
    
    public class FollowTarget : MonoBehaviour {
    	public Transform target;
    	Vector3 offset;
    
    	void Update()  
    	{
    		transform.position = target.position + offset;
    		Rotate();
    		Scale();
    	}
    
    
    	// Use this for initialization
    	void Start()
    	{
    		offset = transform.position - target.position;
    	}
    
    	// Update is called once per frame
    
    	//缩放
    	private void Scale()
    	{
    		float dis = offset.magnitude;
    		dis += Input.GetAxis("Mouse ScrollWheel") * 5;
    		Debug.Log("dis=" + dis);
    		if (dis < 10 || dis > 40)
    		{
    			return;
    		}
    		offset = offset.normalized * dis;
    	}
    	//左右上下移动
    	private void Rotate()
    	{
    		if (Input.GetMouseButton(1))
    		{
    			Vector3 pos = transform.position;
    			Vector3 rot = transform.eulerAngles;
    
    			//围绕原点旋转,也可以将Vector3.zero改为 target.position,就是围绕观察对象旋转
    			transform.RotateAround(Vector3.zero, Vector3.up, Input.GetAxis("Mouse X") * 10);
    			transform.RotateAround(Vector3.zero, Vector3.left, Input.GetAxis("Mouse Y") * 10);
    			float x = transform.eulerAngles.x;
    			float y = transform.eulerAngles.y;
    			Debug.Log("x=" + x);
    			Debug.Log("y=" + y);
    			//控制移动范围
    			if (x < 20 || x > 45 || y < 0 || y > 40)
    			{
    				transform.position = pos;
    				transform.eulerAngles = rot;
    			}
    			//  更新相对差值
    			offset = transform.position - target.position;
    		}
    	}
    }
    



  • 相关阅读:
    独立思考模型与经验-仅供参考
    独立思考与输入、吸收
    基于事实和全方位思考
    独立思考有四个层次-知识体系
    思维框架
    阅读、思考与吸收
    思考与阅读
    博学之,审问之,慎思之,明辨之,笃行之:思考与成长
    如何成为有想法的人?如何培养独立思考的能力?
    人的本质--以人为本--思考-认识世界、改造世界
  • 原文地址:https://www.cnblogs.com/AlinaL/p/12852165.html
Copyright © 2020-2023  润新知