سبد خرید0

هیچ محصولی در سبد خرید نیست.

آموزش ساخت دوربین دنبال کردن ماشین در یونیتی

آموزش ساخت دوربین دنبال کردن ماشین در یونیتی

با استفاده از نمونه اسکریپتی که در زیر براتون قرار دادیم به راحتی میتونید کارکتر بازیتون رو دنبال کنید

این اسکریپت بیشتر مختص بازی ماشین هست چرا که با جلو و عقب رفتن ماشین جهت دوربین عوض میشه


یک اسکریپ جدید با اسم دلخواه ایجاد کنید در اینجا ما از CarCameraFollow استفاده کردیم

سپس اسکریپت رو به دوربین محیط بازیتون اضافه کنید

و حالا اسکریپت رو باز کنید و کد های زیر رو بهش اضافه کنید

				
					using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CarCameraFollow  : MonoBehaviour {

	public Transform car;
	public float distance = 6.4f;
	public float height = 1.4f;
	public float rotationDamping = 3.0f;
	public float heightDamping = 2.0f;
	public float zoomRatio = 0.5f;
	public float defaultFOV = 60f;

	private Vector3 rotationVector;
//qmarsdev.com
	void LateUpdate(){
		float wantedAngle = rotationVector.y;
		float wantedHeight = car.position.y + height;
		float myAngle = transform.eulerAngles.y;
		float myHeight = transform.position.y;

		myAngle = Mathf.LerpAngle(myAngle, wantedAngle, rotationDamping*Time.deltaTime);
		myHeight = Mathf.Lerp(myHeight, wantedHeight, heightDamping*Time.deltaTime);

		Quaternion currentRotation = Quaternion.Euler(0, myAngle, 0);
		transform.position = car.position;
		transform.position -= currentRotation * Vector3.forward*distance;
		Vector3 temp = transform.position; //temporary variable so Unity doesn't complain
		temp.y = myHeight;
		transform.position = temp;
		transform.LookAt(car);
	}

	void FixedUpdate(){
		Vector3 localVelocity = car.InverseTransformDirection(car.GetComponent<Rigidbody>().velocity);
		if (localVelocity.z < -0.1f){
			Vector3 temp = rotationVector; //because temporary variables seem to be removed after a closing bracket "}" we can use the same variable name multiple times.
			temp.y = car.eulerAngles.y + 180;
			rotationVector = temp;
		}
		else{
			Vector3 temp = rotationVector;
			temp.y = car.eulerAngles.y;
			rotationVector = temp;
		}
		float acc = car.GetComponent<Rigidbody>().velocity.magnitude;
		GetComponent<Camera>().fieldOfView = defaultFOV + acc * zoomRatio * Time.deltaTime;  //he removed * Time.deltaTime but it works better if you leave it like this.
	}
}
				
			

حالا کاراکتر رو به اسکریپت روی دوربین بدید و اجرا رو بزنید

دیدگاهتان را بنویسید