Unity Parallax Background

Unity Parallax Background

ParallaxBackground adında bir script dosyası oluşturuyoruz;

using UnityEngine;

public class ParallaxBackground : MonoBehaviour
{
    private float length, startPos;
    public GameObject cam;
    public float parallaxEffect;
    
    private void Start()
    {
        startPos = transform.position.x;
        length = GetComponent().bounds.size.x;
    }
    
    private void FixedUpdate()
    {
        float temp = (cam.transform.position.x * (1 - parallaxEffect));
        float dist = (cam.transform.position.x * parallaxEffect);
        
        transform.position = new Vector3(startPos + dist, transform.position.y, transform.position.z);
        
        if (temp > startPos + length) startPos += length;
        else if (temp < startPos - length) startPos -= length;
    }
}

Sonra Camera objesinin altında arka planlarımızı tutacak bir parent objesi oluşturup içerisine arka planlarımızı atıyoruz.

Örnekte 5 tane olduğundan en yakında duracak olanın Additional Settings>Order in Layer değerlerini sırasıyla 5, 4, 3, 2, 1 şeklinde ayarladım.

5 arka planın hepsini seçip Duplicate edip X değerini 18 yaptım ardından tekrar Duplicate edip bu sefer X değerini -18 yaptım.

Her kopyayı ana objenin altında topladım;

Ana objelere oluşturduğumuz ParallaxBackground scriptini atadım. Cam alanına kamerayı atadım Parallax Effect kısmına ise;

  1. close için: 0
  2. mid için: 0.3
  3. far mid için: 0.45
  4. far için: 0.5
  5. real far için: 0.7

değerlerini verdim.

 

Oyunu başlatıp kameramızı x ekseninde hareket ettirirsek göreceğimiz sonuç;

bu yazıda ki görseller penusbmic tarafından hazırlanmıştır.