diff --git a/Assets/Resources/Games/animalAcrobat.prefab b/Assets/Resources/Games/animalAcrobat.prefab index 6084bc78f..0fa9931d1 100644 --- a/Assets/Resources/Games/animalAcrobat.prefab +++ b/Assets/Resources/Games/animalAcrobat.prefab @@ -1036,21 +1036,7 @@ MonoBehaviour: SoundSequences: [] EligibleHits: [] scheduledInputs: [] - firstEnable: 0 - startCameraMoveLength: 3 - elephantRef: {fileID: -5564384145903586768, guid: b3040fc162a3d6342971f82026e4335f, type: 3} - elephantDistance: 10.304 - elephantStart: 0.004 - elephantHangCameraMoveLength: 2 - elephantHangMaxDip: 1 - elephantReleaseMoveLength: 8.304 - giraffeRef: {fileID: 5248028064811562821, guid: 72e69b6337a6bc04f86ffcf5bcedab92, type: 3} - giraffeDistance: 20 - giraffeStart: 10 - afterGiraffeExtraDistance: 25.04 - monkeysRef: {fileID: -3114631264593203074, guid: f52ef60e472be3047bb77f54d5a3229d, type: 3} - monkeysDistance: 20 - monkeysStart: 10 - oneMonkeyRef: {fileID: 7370747047491091311, guid: 0dfca7cb5fedf0d40aa26ffd9b4595ae, type: 3} - oneMonkeyDistance: 10.304 - oneMonkeyStart: 0.004 + _elephant: {fileID: -5564384145903586768, guid: b3040fc162a3d6342971f82026e4335f, type: 3} + _giraffe: {fileID: 5248028064811562821, guid: 72e69b6337a6bc04f86ffcf5bcedab92, type: 3} + _monkeysLong: {fileID: -3114631264593203074, guid: f52ef60e472be3047bb77f54d5a3229d, type: 3} + _monkeysShort: {fileID: 7370747047491091311, guid: 0dfca7cb5fedf0d40aa26ffd9b4595ae, type: 3} diff --git a/Assets/Resources/Prefabs/Games/AnimalAcrobat/Elephant.prefab b/Assets/Resources/Prefabs/Games/AnimalAcrobat/Elephant.prefab index 807f707b8..85f33e3e6 100644 --- a/Assets/Resources/Prefabs/Games/AnimalAcrobat/Elephant.prefab +++ b/Assets/Resources/Prefabs/Games/AnimalAcrobat/Elephant.prefab @@ -1,5 +1,36 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &1961063600439490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2131794628642567477} + m_Layer: 0 + m_Name: Grip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2131794628642567477 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1961063600439490} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2.014, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2616646720197201304} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &74792210795109364 GameObject: m_ObjectHideFlags: 0 @@ -113,6 +144,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3049806664453001319} + - {fileID: 2131794628642567477} m_Father: {fileID: 6285390310926959546} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -526,11 +558,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 2f9ee457016acdc4eb5dbfdc03be0d6f, type: 3} m_Name: m_EditorClassIdentifier: - holdLength: 2 - fullRotateAngle: 160 - anim: {fileID: 6198430257364661693} - type: 0 - rotatePivot: {fileID: 2616646720197201304} + _fullRotRange: 120 + _spawnDistance: 2.602 + _holdLength: 2 + _ease: 4 + _rotateRoot: {fileID: 2616646720197201304} + _gripPoint: {fileID: 2131794628642567477} --- !u!1 &7805847212563886084 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Games/AnimalAcrobat/AcrobatObstacle.cs b/Assets/Scripts/Games/AnimalAcrobat/AcrobatObstacle.cs index 5668cec9c..4cbe2af66 100644 --- a/Assets/Scripts/Games/AnimalAcrobat/AcrobatObstacle.cs +++ b/Assets/Scripts/Games/AnimalAcrobat/AcrobatObstacle.cs @@ -7,7 +7,56 @@ namespace HeavenStudio.Games.Scripts_AnimalAcrobat { public class AcrobatObstacle : MonoBehaviour { + [Header("Values")] + [SerializeField] private float _fullRotRange; + [SerializeField] private float _spawnDistance; + [SerializeField] private double _holdLength; + [SerializeField] private EasingFunction.Ease _ease = EasingFunction.Ease.EaseInOutQuad; + private double _startBeat; + private float _halfRotRange; + private EasingFunction.Function _func; + + public float SpawnDistance => _spawnDistance; + + [Header("Components")] + [SerializeField] private Transform _rotateRoot; + [SerializeField] private Transform _gripPoint; + + private void Awake() + { + _halfRotRange = _fullRotRange * 0.5f; + _func = EasingFunction.GetEasingFunction(_ease); + } + + public void SetStartBeat(double beat) + { + _startBeat = beat; + Update(); + } + + public float GetRotationDistance() + { + float result = Mathf.Cos((_fullRotRange + 180) * Mathf.Deg2Rad) * _gripPoint.localPosition.y; + return Mathf.Abs(result * 2); + } + + private void Update() + { + var cond = Conductor.instance; + if (!cond.isPlaying) return; + + float normalNoMod = cond.GetPositionFromBeat(_startBeat, _holdLength); + + float normalizedBeat = normalNoMod % 1; + if (Mathf.Floor(normalNoMod) % 2 != 0) + { + normalizedBeat = 1 - normalizedBeat; + } + + float newAngleZ = _func(-_halfRotRange, _halfRotRange, normalizedBeat); + _rotateRoot.localEulerAngles = new Vector3(0, 0, newAngleZ); + } } } diff --git a/Assets/Scripts/Games/AnimalAcrobat/AnimalAcrobat.cs b/Assets/Scripts/Games/AnimalAcrobat/AnimalAcrobat.cs index c461eb300..0a56c807d 100644 --- a/Assets/Scripts/Games/AnimalAcrobat/AnimalAcrobat.cs +++ b/Assets/Scripts/Games/AnimalAcrobat/AnimalAcrobat.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using Jukebox; +using HeavenStudio.Util; namespace HeavenStudio.Games.Loaders { @@ -39,11 +40,18 @@ namespace HeavenStudio.Games.Loaders namespace HeavenStudio.Games { - using HeavenStudio.Games.Scripts_AnimalAcrobat; - using HeavenStudio.Util; + using Scripts_AnimalAcrobat; + public class AnimalAcrobat : Minigame { - + [Header("Animal Prefabs")] + [SerializeField] private AcrobatObstacle _elephant; + [SerializeField] private AcrobatObstacle _giraffe, _monkeysLong, _monkeysShort; + + private void Awake() + { + Instantiate(_elephant, transform); + } } }