commit
66d70e50f0
@ -0,0 +1,83 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class ScrollingBackground : MonoBehaviour
|
||||
{
|
||||
public float backgroundSize;
|
||||
public float paralaxSpeed;
|
||||
public float depth;
|
||||
|
||||
public bool scrolling, paralax;
|
||||
|
||||
private Transform cameraTransform;
|
||||
private Transform[] layers;
|
||||
private float viewZone = 10;
|
||||
private int leftIndex;
|
||||
private int rightIndex;
|
||||
private float lastCameraX;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
|
||||
cameraTransform = Camera.main.transform;
|
||||
lastCameraX = cameraTransform.position.x;
|
||||
layers = new Transform[transform.childCount];
|
||||
for (int i = 0; i < transform.childCount; i++)
|
||||
{
|
||||
layers[i] = transform.GetChild(i);
|
||||
Debug.Log("Added Layer");
|
||||
}
|
||||
leftIndex = 0;
|
||||
rightIndex = layers.Length - 1;
|
||||
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
|
||||
if (paralax)
|
||||
{
|
||||
float deltaX = cameraTransform.position.x - lastCameraX;
|
||||
transform.position += Vector3.right * (deltaX * paralaxSpeed);
|
||||
}
|
||||
|
||||
lastCameraX = cameraTransform.position.x;
|
||||
|
||||
if (scrolling)
|
||||
{
|
||||
if (cameraTransform.position.x < (layers[leftIndex].transform.position.x + viewZone))
|
||||
{
|
||||
ScrollLeft();
|
||||
}
|
||||
if (cameraTransform.position.x > (layers[rightIndex].transform.position.x - viewZone))
|
||||
{
|
||||
ScrollRight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ScrollLeft()
|
||||
{
|
||||
int lastRight = rightIndex;
|
||||
layers[rightIndex].position = new Vector3(layers[leftIndex].position.x - backgroundSize, layers[leftIndex].position.y, depth);
|
||||
leftIndex = rightIndex;
|
||||
rightIndex--;
|
||||
if (rightIndex < 0)
|
||||
{
|
||||
rightIndex = layers.Length - 1;
|
||||
}
|
||||
}
|
||||
|
||||
private void ScrollRight()
|
||||
{
|
||||
int lastLeft = leftIndex;
|
||||
layers[leftIndex].position = new Vector3(layers[rightIndex].position.x + backgroundSize, layers[leftIndex].position.y, depth);
|
||||
rightIndex = leftIndex;
|
||||
leftIndex++;
|
||||
if (leftIndex == layers.Length)
|
||||
{
|
||||
leftIndex = 0;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 59431ea37093fa347b7089dcfd8f62b7
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Loading…
Reference in new issue