parent
eeb2d82fc0
commit
3334b0a369
@ -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