init
This commit is contained in:
commit
78b901484a
323 changed files with 109774 additions and 0 deletions
144
Assets/Scripts/UI/RythmBarController.cs
Normal file
144
Assets/Scripts/UI/RythmBarController.cs
Normal file
|
@ -0,0 +1,144 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class RythmBarController : MonoBehaviour{
|
||||
|
||||
[SerializeField] bool canSpawn = true;
|
||||
bool hasMoved;
|
||||
Animator anim;
|
||||
bool destroyed;
|
||||
public bool difficlutySetted = true;
|
||||
bool hardTriggered;
|
||||
|
||||
[System.Serializable] public enum Difficulty {Easy, Hard}
|
||||
public Difficulty difficulty;
|
||||
|
||||
[Header("Hard Mode Speed")]
|
||||
[SerializeField] float speed;
|
||||
|
||||
[Header("Easy Mode PositionOffset")]
|
||||
[SerializeField] Vector3 offset = new Vector2(145, 0);
|
||||
Vector3 nextLeftPos;
|
||||
Vector3 nextRightPos;
|
||||
[Range(0, .3f)] [SerializeField] float timeToMove = .1f;
|
||||
Vector2 leftVelocity;
|
||||
Vector2 rightVelocity;
|
||||
|
||||
[Space]
|
||||
[SerializeField] GameObject defaultBar;
|
||||
[SerializeField] Transform leftBar;
|
||||
[SerializeField] Transform rightBar;
|
||||
|
||||
[Header("Wind")]
|
||||
[SerializeField] GameObject windBar;
|
||||
[SerializeField] Transform leftWindBar;
|
||||
[SerializeField] Transform rightWindBar;
|
||||
bool isWind;
|
||||
|
||||
CanvasManager canvas;
|
||||
|
||||
void Awake(){
|
||||
canvas = GetComponentInParent<CanvasManager>();
|
||||
}
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start(){
|
||||
anim = GetComponent<Animator>();
|
||||
FindObjectOfType<PlayerController>().onMove.AddListener(() => Move());
|
||||
|
||||
nextLeftPos = leftBar.localPosition;
|
||||
nextRightPos = rightBar.localPosition;
|
||||
|
||||
if (isWind){
|
||||
leftBar.gameObject.SetActive(false);
|
||||
rightBar.gameObject.SetActive(false);
|
||||
}else{
|
||||
leftWindBar.gameObject.SetActive(false);
|
||||
rightWindBar.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetDifficulty(){
|
||||
if (canvas.difficulty == CanvasManager.CanvasDifficulty.Easy){
|
||||
difficulty = Difficulty.Easy;
|
||||
}else{
|
||||
difficulty = Difficulty.Hard;
|
||||
}
|
||||
|
||||
difficlutySetted = true;
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update(){
|
||||
if (!difficlutySetted)
|
||||
return;
|
||||
|
||||
if(difficulty == Difficulty.Hard){
|
||||
if (!canvas.stopped){
|
||||
if (isWind){
|
||||
leftWindBar.transform.Translate(Vector2.right * speed * Time.deltaTime);
|
||||
rightWindBar.transform.Translate(Vector2.left * speed * Time.deltaTime);
|
||||
}else{
|
||||
leftBar.transform.Translate(Vector2.right * speed * Time.deltaTime);
|
||||
rightBar.transform.Translate(Vector2.left * speed * Time.deltaTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (difficulty == Difficulty.Easy){
|
||||
if (isWind){
|
||||
leftWindBar.localPosition = Vector2.SmoothDamp(leftWindBar.localPosition, nextLeftPos, ref leftVelocity, timeToMove);
|
||||
rightWindBar.localPosition = Vector2.SmoothDamp(rightWindBar.localPosition, nextRightPos, ref rightVelocity, timeToMove);
|
||||
}else{
|
||||
leftBar.localPosition = Vector2.SmoothDamp(leftBar.localPosition, nextLeftPos, ref leftVelocity, timeToMove);
|
||||
rightBar.localPosition = Vector2.SmoothDamp(rightBar.localPosition, nextRightPos, ref rightVelocity, timeToMove);
|
||||
}
|
||||
}
|
||||
|
||||
if(Vector2.Distance(leftBar.localPosition, rightBar.localPosition) < 175 && !hardTriggered || Vector2.Distance(leftWindBar.localPosition, rightWindBar.localPosition) < 175 && !hardTriggered){
|
||||
if(difficulty == Difficulty.Hard){
|
||||
canvas.onHardMoveIn.Invoke();
|
||||
}
|
||||
hardTriggered = true;
|
||||
}
|
||||
|
||||
if(Vector2.Distance(leftBar.localPosition, rightBar.localPosition) < 10 && !destroyed || Vector2.Distance(leftWindBar.localPosition, rightWindBar.localPosition) < 10 && !destroyed){
|
||||
if(difficulty == Difficulty.Hard){
|
||||
canvas.onHardMoveOut.Invoke();
|
||||
}
|
||||
if (isWind){
|
||||
canvas.onWind.Invoke();
|
||||
}
|
||||
destroyed = true;
|
||||
anim.SetTrigger("Fade");
|
||||
}
|
||||
}
|
||||
|
||||
public void IsWind(){
|
||||
isWind = true;
|
||||
windBar.SetActive(true);
|
||||
}
|
||||
|
||||
public void Destroy(){
|
||||
if(difficulty == Difficulty.Hard){
|
||||
canvas.SpawnFromPool(transform.position, transform.rotation);
|
||||
}
|
||||
Destroy(gameObject);
|
||||
}
|
||||
|
||||
public void IsNotWind(){
|
||||
windBar.SetActive(false);
|
||||
}
|
||||
|
||||
void Move(){
|
||||
if (difficulty == Difficulty.Easy){
|
||||
nextLeftPos += offset;
|
||||
nextRightPos -= offset;
|
||||
if (!hasMoved && canvas != null && canSpawn){
|
||||
canvas.SpawnFromPool(transform.position, transform.rotation);
|
||||
hasMoved = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue