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

Лучший способ помочь другим, поделиться своими находками.

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

Сообщение waruiyume 30 ноя 2016, 04:34

Отодвигает камеру от точки между двумя трансформами, так чтобы те касались фрустума.
Синтаксис:
Используется 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;
        }
}

 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Вернуться в Исходники (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1