簡單的實現兩個物體在攝像機視野內的代碼

這個方法是看視頻得到的,有些遊戲可能會用到,有點記錄意義。

首先說一下,這個方法適用於攝像機鏡頭角度相對於地面來說有了一定傾斜程度的情況下(如圖一),如果攝像機鏡頭接近於垂直地面(如圖二),

則不能保證兩個物體都在攝像機視野內,這個方法不奏效,





圖一


圖二

然後這個方法是用在攝像機的正交鏡頭,透視鏡頭則不適用,這裏用到的是正交的size屬性,大小和攝像機的視野範圍成正比。

最後如果渲染出現問題,可以調節下攝像機的ClippingPlane,

這裏控制攝像機的最近渲染距離和最遠渲染距離,在這之內的進行渲染,否則不渲染。

大體講下思路:

首先獲得兩個物體間的距離,然後調好攝像機的位置,讓攝像機視野中心正對兩者距離的正中間,然後到攝像機的Inspector面板找size屬性,然後將其和距離做個除法,得到一個比例。最後保持這個比例不變,

隨着物體的距離的增大而增大size。

下面是代碼:

using UnityEngine;
using System.Collections;
using UnityEngine;

public class FollowTarget : MonoBehaviour {



    public Transform player1, player2;
    Vector3 offset;
    Camera camera;

	// Use this for initialization
	void Start () {
        offset = transform.position - (player1.position + player2.position) / 2;
        camera = GetComponent<Camera>();

	}
	
	// Update is called once per frame
	void Update () {

        transform.position = (player1.position + player2.position) + offset;
        float distance = Vector3.Distance(player1.position, player2.position);
        float size = distance * 0.6f;
        camera.orthographicSize = size;
        

	}
}
將這個腳本託放在攝像機然後進行相應的賦值即可。



發佈了25 篇原創文章 · 獲贊 13 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章