Страница 1 из 1

Вписать 2 объекта в перспективную камеру

СообщениеДобавлено: 30 ноя 2016, 04:34
waruiyume
Отодвигает камеру от точки между двумя трансформами, так чтобы те касались фрустума.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

[RequireComponent(typeof (Camera))]
public class CameraController : MonoBehaviour
{
    public Transform tarFirst;
    public Transform tarSecond;
    public float targetRadius = 3;
    public float cameraElevation = 1.5f;
    public float centerPointElevation = 1;

    private Camera cam;

    void Start()
    {
        cam = GetComponent<Camera>();
    }
   
        void Update()
        {
            Vector3 firstPos = tarFirst.position;
            Vector3 secondPos = tarSecond.position;
            firstPos.y = 0;
            secondPos.y = 0;

            float bc = Vector3.Distance(firstPos, secondPos)/2/cam.aspect + targetRadius;
            float ac = bc/Mathf.Tan(cam.fieldOfView/2*Mathf.Deg2Rad);
            Vector3 toFirstVect = tarFirst.position - tarSecond.position;
            Vector3 center = tarSecond.position+(toFirstVect)/2;
            Vector3 cross = Vector3.Cross(toFirstVect.normalized, Vector3.up);
            cross = center + cross.normalized*ac;
            cam.transform.position = cross+Vector3.up*cameraElevation;
            cam.transform.forward = center+Vector3.up*centerPointElevation - cam.transform.position;
        }
}