HeavenStudioPlus/Assets/Scripts/Common/SuperScroll.cs
AstrlJelly 3a84c7c9bd Miscellaneous Tweaks + New Scroll Script (#350)
* meat grinder prefab + sprite cutting/naming done + icon

title :)

* Boss Bop, Miss, & Signal Anims

can you read

* Boss Call Anim

self-explanatory

* fix the z axis + new sprite

still working on getting those bops working. they're a bit weird (not the anim itself)

* Restored Meat Grinder Animations

i have no idea what just happened with github but the animations are back

* All Tack Animations Complete

just missing the meat anims

* Literally two lines changed

skull emoji (forgot to set the light meat for the miss anim to inactive by default)

* Meat Grinder Anims (should be) Done

Added the Meat Hit anims

* goodnight

* bopping every beat
* tons of sfx
* meat calls with their corresponding sfx/animations have been added
* prefunctions...

* inputs + sfx + prefunction

making swift progress here :)

* little commit

more cues and animation stuff so that i can have new animations

* Meat Toss Anims

also fixed up some of tack's hit anims to make the smear more consistent

* night night

* moved all the meat stuff to a new script
 -this should help with instantiating the meat
* animations are a bit more comprehensive
* man, barelies are way easier than i thought they were gonna be

* instantiating works now

committing to work on my pc instead of my laptop

but i have been getting a lot done with the meat! it's just that most of that stuff is learning what i can't do...

* Boss Animation Tweaks

Adjusted Boss' bop and miss animations

* woohoo animation!

hi sean this is for u. tell me anything to tweak :)

* Quick Meat Toss Anim Fix

Prevents meat from playing the toss animation twice

* meat hit animation works!

sometimes there's a frame where the first frame of its animation pops up but i should be able to fix that

also just general improvements + framework for different meats

* it's done! or at least out of wip!

* you can select which meat type is tossed (defaults to random)
* ghost meat has been busted (it looped back to its first frame of anim sometimes right before being destroyed; i just added a single frame idle.)
* overall just optimized code
* removed WIP from game name

* a few touch-ups

* change all sfx to ogg
 -also amplified toss.ogg by 4db, was hard to hear at the same time as hitting a cue
* fixed boss not bopping a beat after a signal
 -a very small bit hacky but it really works fine. will fix if any problems come up (but i added a check so that there shouldn't be)

* i have stashed changes :P

* new bg + remove references

title

* boss weird bopping fixed + game switches fixed

* final touch-ups

* random things just broke

* for whatever reason animation controller for boss got reverted, breaking an animation
* and we forgot to merge two spritesheets instead of just replacing one with the other. oops

* sfx volume lowerd

* ok cool commit time

* added superscroll (MADE BY STARPELLY)
* fixed dog ninja backwards compatibility
* fixed meat grinder's startinterval need
* added d pad controls to dog ninja and meat grinder

* oops forgot to add dpad for dog ninja

* remove d-pad from meat grinder 😢

---------

Co-authored-by: Seanski2 <seanbenedit@gmail.com>
2023-03-18 04:40:20 +00:00

66 lines
No EOL
1.8 KiB
C#

using UnityEngine;
namespace HeavenStudio.Common
{
public class SuperScroll : MonoBehaviour
{
#region Private
[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 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 = new Material(Shader.Find("Unlit/Transparent"));
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;
}
#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.x, (int)rect.height - (int)rect.y);
newTex.SetPixels(colors);
newTex.Apply();
return newTex;
}
#endregion
}
}