حرکت آرام دوبین به دنبال پلیر _دنبال کردن پلیر توسط دوربین دو بعدی در یونیتی _تعقیب پلیر دو بعدی توسط دوربین
پنجشنبه, ۱۷ دی ۱۳۹۴، ۰۷:۵۶ ق.ظ
منبع:gameover.blog.ir
using UnityEngine; using System.Collections; //Smooth camera for 2d platforms //Author:Sajjad3011 //unity 5 public class camera2d : MonoBehaviour { public Transform target; private float smooth=1f; void FixedUpdate () { transform.position = Vector3.Lerp(transform.position, target.position, smooth * Time.deltaTime)-new Vector3(0,0,0.4f); } }نکته: طبق کد حتما باید توی FixedUpdate کار کنید. اگه توی Update بذارید صحنه لرزش پیدا کرده یا پرک پرک می زنه.
طبق کد ما از متد یا تابع Lerp برای حرکت نرم دوربین بین دو نقطه شروع (پوزیشن فعلی دوربین) و پایان(پوزیشن player) استفاده کردیم و سرعت حرکت هم در پارامتر smooth انجام دادیم و در تایم ضرب کردیم. smooth به معنی فاکتور نرمی هست و اگه زیادش کنیم سرعت حرکت بیشتر خواهد بود.
وکتور 3 هم که ایجاد کردیم برای این بود که موقعیت دقیقا می افتاد روی پلیر و زوم میشد روش و ما به اندازه ی 0.4 در واحد float از محور z کم کردیم تا فاصله بگیره و عقب بره ولی توی بردار x و y همون هست و هیچی ازش کم نکردیم .
روش دوم :
using UnityEngine; using System.Collections; public class SmoothFollow2D : MonoBehaviour { private Vector3 velocity = Vector3.zero; public Transform target; // Update is called once per frame void Update () { if (target) { Vector3 point = GetComponent<Camera>().WorldToViewportPoint(target.position); Vector3 delta = target.position - GetComponent<Camera>().ViewportToWorldPoint(new Vector3(0.2f, 0.5f, point.z)); //(new Vector3(0.5, 0.5, point.z)); Vector3 destination = transform.position + delta; transform.position = Vector3.SmoothDamp(transform.position, destination, ref velocity, 0); } } }