mirror of
https://github.com/RHeavenStudio/HeavenStudio.git
synced 2025-06-13 18:57:38 +02:00
Totem Climb (#660)
* setup * scroll stuff * tons of stuff * totem bop * bopping and new assets * soem more * frog fit * fixed order of operation issue * triple proto * wow i love super curves * TRIPLE JUMP * frog fall * the spinny * dragon initial * functional dragon * fixed un bug * the deets * the deets have been fixed * miss stuff * smol fix * no log * fixed some issues * switch to next state * particle * remove useless logic * zoomed out * sound and line fix * new bg sheet * minor tweaks * pillar tops * background objects * background tweak * triple sound tweak * background rework * frog wings and new jump anim * fix * birds * disable pillars * landing end * fix again * minor fix * fixes and icon * background scroll logic rework * put in fixed sheet * fixed sounds
This commit is contained in:
84
Assets/Scripts/Games/TotemClimb/TCBackgroundManager.cs
Normal file
84
Assets/Scripts/Games/TotemClimb/TCBackgroundManager.cs
Normal file
@ -0,0 +1,84 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace HeavenStudio.Games.Scripts_TotemClimb
|
||||
{
|
||||
public class TCBackgroundManager : MonoBehaviour
|
||||
{
|
||||
private const int BACKGROUND_OBJECT_AMOUNT = 18;
|
||||
|
||||
[SerializeField] private Transform _objectsParent;
|
||||
[SerializeField] private List<BackgroundScrollPair> _objects;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
foreach (var o in _objects)
|
||||
{
|
||||
o.InitClones(_objectsParent);
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
foreach (var o in _objects)
|
||||
{
|
||||
o.ScrollClones();
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
private class BackgroundScrollPair
|
||||
{
|
||||
public Transform first;
|
||||
public Transform second;
|
||||
public float moveSpeed = 1.0f;
|
||||
|
||||
private List<Transform> _objects = new();
|
||||
private List<float> _objectOffsets = new();
|
||||
private float _xDistance;
|
||||
|
||||
private float GetDistance()
|
||||
{
|
||||
return second.localPosition.x - first.localPosition.x;
|
||||
}
|
||||
|
||||
public void InitClones(Transform parent)
|
||||
{
|
||||
_xDistance = GetDistance();
|
||||
_objects.Add(first);
|
||||
_objectOffsets.Add(first.localPosition.x);
|
||||
_objects.Add(second);
|
||||
_objectOffsets.Add(second.localPosition.x);
|
||||
|
||||
for (int i = 0; i < BACKGROUND_OBJECT_AMOUNT; i++)
|
||||
{
|
||||
Transform spawnedObject = Instantiate(first, parent);
|
||||
spawnedObject.localPosition = new Vector3(second.localPosition.x + (_xDistance * (i + 1)), first.localPosition.y, first.localPosition.z);
|
||||
_objects.Add(spawnedObject);
|
||||
_objectOffsets.Add(spawnedObject.localPosition.x);
|
||||
}
|
||||
}
|
||||
|
||||
public void ScrollClones()
|
||||
{
|
||||
for (int i = 0; i < _objects.Count; i++)
|
||||
{
|
||||
var b = _objects[i];
|
||||
var bOffset = _objectOffsets[i];
|
||||
float songPos = Conductor.instance.songPosition;
|
||||
|
||||
b.localPosition = new Vector3(bOffset - (songPos * moveSpeed), b.localPosition.y);
|
||||
|
||||
float fullDistance = (BACKGROUND_OBJECT_AMOUNT + 2) * _xDistance;
|
||||
|
||||
if (b.localPosition.x <= -fullDistance / 2)
|
||||
{
|
||||
_objectOffsets[i] = bOffset + fullDistance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user