برای اجرای این کار ابتدا یک GameObject خالی و یک سکریپت به اسم CameraMovement بسازید و سکریپت رو اضافه کنید به GameObject. در مرحلهی بعدی یک GameObject دیگه ایجاد کنید و اسمش رو بزارید cameraTarget و اون رو در مرکز موضوعی که قراره دوربین دورش بچرخه قرار بدید.
با دابل کلیک کردن سکریپت رو داخل ویژوال ستودیو باز کنید و کد زیر رو جایگزین کنید:
using UnityEngine;
public class CameraMovement : MonoBehaviour
{
[SerializeField] private Camera cam;
[SerializeField] private Transform target;
[SerializeField] private float distanceToTarget = 10;
private Vector3 previousPosition;
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
previousPosition = cam.ScreenToViewportPoint(Input.mousePosition);
}
else if (Input.GetMouseButton(0))
{
Vector3 newPosition = cam.ScreenToViewportPoint(Input.mousePosition);
Vector3 direction = previousPosition - newPosition;
float rotationAroundYAxis = -direction.x * 180; // camera moves horizontally
float rotationAroundXAxis = direction.y * 180; // camera moves vertically
cam.transform.position = target.position;
cam.transform.Rotate(new Vector3(1, 0, 0), rotationAroundXAxis);
cam.transform.Rotate(new Vector3(0, 1, 0), rotationAroundYAxis, Space.World);
cam.transform.Translate(new Vector3(0, 0, -distanceToTarget));
previousPosition = newPosition;
}
}
}
حالا فایل رو ذخیره و به یونیتی برگردید و مطابق تصویر زیر دوربین اصلی رو به گزینهی Cam و cameraTarget رو به Target وصل کنید. فراموش نکنید که زاویهی دوربین اصلی رو تنظیم کنید تا در زمان اجرا محتوا از آن زاویه به کاربر نمایش داده بشه به عبارتی نقطهی شروع محتوا خواهد بود.
برای توضیحات مربوط به پروژهی بالا و دیدن ویدئوی دمو اینجا کلیک کنید.