9cddcac247
* stache stuff (still needs more work but yeah) * new icon (TEMPORARY ICON!!!) * some placeholder animations * more two two jank fixed, almost there * superscroll + fixing early misses * made a few temporary changes to superscroll.cs, i will be modifying it further for ease of use but for now it isn't permanent * made real progress on stopping repeat inputs -game is basically broken for the time being, but i wanna push this so nothing theoretically breaks. ill fix it all tomorrow when im less tired * it's been a while since i've committed my changes * modifiers work again (idk if i broke that in this commit or it was already broken) * stacking logic is here!!! it always uses the latest objects' hit/miss/early function so it should be perfect. i might be able to improve on efficiency tho -FollowHand animation is broken again unfortunately :( * dumplings can now be individually colored, and are assigned their colors in Start(). the smear's colors are defined on Hit() (HitFunction() to be specific) , so that even when there are multiple stacked dumplings, they'll all be accurate. maybe some other stuff but i cannot remember * clean-up + integral fixes onto Monk Move and SingleSuperScroll i think ill add some more comments too * fixed some missing/early stuff + a check for whether you can hit or not * fixed FollowHand animation and the squishing/dumpling on top * cleaned up a ton of unused variables + checks + anims * added unused sound sequences -ig if somebody knows how to use them they can implement them but idk how to and it's not worth figuring out rn * more work on superscroll; there seems to be too many changes to the structure of the script to keep the single scrolling in with the tile scrolling, will combine if necessary tho * fanClub/arisa_dab * monk move!! still working on singlesuperscroll 😭 but i got the monk moving!! * a few optimizations + starting on new singlesuperscroll * ok ScrollObject is usable now oh my GOD i need to optimize how it looks and functions but rn it works like it will when it's done (theoretically) ev do ur work * a few things + new icon!! * scroll speeds are good now * finished except for the stache bop 😭 😭 😭 😭 😭 why isn't it working * im pring this now --------- Co-authored-by: ev <85412919+evdial@users.noreply.github.com>
77 lines
2.1 KiB
C#
77 lines
2.1 KiB
C#
using UnityEngine;
|
|
|
|
namespace HeavenStudio.Common
|
|
{
|
|
public class SuperScroll : MonoBehaviour
|
|
{
|
|
#region Private
|
|
|
|
[SerializeField] private Material _shader;
|
|
|
|
[SerializeField]
|
|
private Renderer _renderer;
|
|
|
|
[SerializeField]
|
|
private Sprite _sprite;
|
|
|
|
#endregion
|
|
|
|
#region Public
|
|
|
|
public float NormalizedX = 0.0f;
|
|
public float NormalizedY = 0.0f;
|
|
public Vector2 Normalized { get { return new Vector2(NormalizedX, NormalizedY); } set { NormalizedX = value.x; NormalizedY = value.y; } }
|
|
public bool AutoScroll;
|
|
public float AutoScrollX;
|
|
public float AutoScrollY;
|
|
|
|
public float TileX = 1.0f;
|
|
public float TileY = 1.0f;
|
|
public Vector2 Tile { get { return new Vector2(TileX, TileY); } set { TileX = value.x; TileY = value.y; } }
|
|
|
|
public Material Material => _renderer.material;
|
|
|
|
#endregion
|
|
|
|
#region MonoBehaviour
|
|
|
|
private void Start()
|
|
{
|
|
_renderer.material = _shader;
|
|
|
|
var spriteRect = _sprite.rect;
|
|
var tex = CropTexture(_sprite.texture, new Rect(spriteRect.x, spriteRect.y, spriteRect.width, spriteRect.height));
|
|
tex.wrapMode = TextureWrapMode.Repeat;
|
|
Material.mainTexture = tex;
|
|
}
|
|
|
|
public void LateUpdate()
|
|
{
|
|
_renderer.material.mainTextureScale = Tile;
|
|
_renderer.material.mainTextureOffset = new Vector2(NormalizedX, -NormalizedY) * Tile;
|
|
|
|
if (AutoScroll) {
|
|
float songPos = Conductor.instance.songPositionInBeats/100;
|
|
NormalizedX = songPos*AutoScrollX;
|
|
NormalizedY = songPos*AutoScrollY;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Custom
|
|
|
|
private Texture2D CropTexture(Texture2D original, Rect rect)
|
|
{
|
|
var colors = original.GetPixels((int)rect.x, (int)rect.y, (int)rect.width, (int)rect.height);
|
|
var newTex = new Texture2D((int)rect.width, (int)rect.height);
|
|
|
|
newTex.SetPixels(colors);
|
|
newTex.Apply();
|
|
|
|
return newTex;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |