Long hair rhythm tweezers but very buggy (read desc)

Hair plucking is a bit weird a beat after a long pull.

The tweezers don't automatically skip to the beat they're supposed to be when pulling since it can put things out of sync.

You can't pull two long hairs at a time for some reason.

The long hair doesn't rotate correctly towards the tweezers.

I'm very tired if someone could go in and clean some of this up that would be great.
This commit is contained in:
Braedon
2022-02-10 21:14:09 -05:00
parent cbc2ecef72
commit a65a6c012c
12 changed files with 2021 additions and 34 deletions

View File

@ -2,14 +2,23 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using RhythmHeavenMania.Util;
namespace RhythmHeavenMania.Games.RhythmTweezers
{
public class LongHair : PlayerActionObject
{
public float createBeat;
public GameObject hairSprite;
public GameObject stubbleSprite;
private RhythmTweezers game;
private Tweezers tweezers;
private bool isHolding = false;
private float holdBeat = 0f;
public GameObject holder;
private void Awake()
{
game = RhythmTweezers.instance;
@ -25,13 +34,42 @@ namespace RhythmHeavenMania.Games.RhythmTweezers
{
if (state.perfect)
{
Ace();
Jukebox.PlayOneShotGame($"rhythmTweezers/longPull{UnityEngine.Random.Range(1, 5)}");
isHolding = true;
holdBeat = Conductor.instance.songPositionInBeats;
}
}
if (isHolding && Conductor.instance.songPositionInBeats >= holdBeat + 0.5f)
{
Destroy(holder.transform.GetChild(0).gameObject);
isHolding = false;
Ace();
}
if (isHolding)
{
holder.transform.eulerAngles = new Vector3(0, 0, tweezers.transform.eulerAngles.z * 1.056f);
holder.transform.GetChild(0).transform.localScale = Vector2.one / holder.transform.localScale;
float normalizedBeat = Conductor.instance.GetPositionFromBeat(holdBeat, 0.5f);
GetComponent<Animator>().Play("LoopPull", 0, normalizedBeat);
tweezers.anim.Play("Tweezers_LongPluck", 0, normalizedBeat);
// float angleBetweenTweezersAndHair = angleBtw2Points(tweezers.transform.position, holder.transform.position);
// holder.transform.rotation = Quaternion.Euler(new Vector3(0, 0, angleBetweenTweezersAndHair));
}
}
float angleBtw2Points(Vector3 a, Vector3 b)
{
return Mathf.Atan2(a.y - b.y, a.x - b.x) * Mathf.Rad2Deg;
}
public void Ace()
{
Jukebox.PlayOneShotGame("rhythmTweezers/longPullEnd");
tweezers.LongPluck(true, this);
tweezers.hitOnFrame++;