From ae1269876f62e92a8d7d0317744f3eb1fd1b40c3 Mon Sep 17 00:00:00 2001 From: Rapandrasmus <78219215+Rapandrasmus@users.noreply.github.com> Date: Thu, 25 Jan 2024 19:30:47 +0100 Subject: [PATCH] birds --- Assets/Resources/Games/totemClimb.prefab | 338 ++++++++++++++++++ .../Scripts/Games/TotemClimb/TCBirdManager.cs | 67 ++++ .../Games/TotemClimb/TCBirdManager.cs.meta | 11 + Assets/Scripts/Games/TotemClimb/TotemClimb.cs | 26 ++ 4 files changed, 442 insertions(+) create mode 100644 Assets/Scripts/Games/TotemClimb/TCBirdManager.cs create mode 100644 Assets/Scripts/Games/TotemClimb/TCBirdManager.cs.meta diff --git a/Assets/Resources/Games/totemClimb.prefab b/Assets/Resources/Games/totemClimb.prefab index 337ae88ce..2e9b224dd 100644 --- a/Assets/Resources/Games/totemClimb.prefab +++ b/Assets/Resources/Games/totemClimb.prefab @@ -569,6 +569,57 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1103197251499395603 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2061358964934971870} + - component: {fileID: 2184219085709983617} + m_Layer: 0 + m_Name: BirdManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2061358964934971870 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1103197251499395603} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8952014673230657950} + - {fileID: 8113023065913069144} + m_Father: {fileID: 4304513864755659316} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2184219085709983617 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1103197251499395603} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 91d6e7654abbb4c4699731e94d8fd77e, type: 3} + m_Name: + m_EditorClassIdentifier: + _speedX: 3.838 + _speedY: 1.45 + _birdRef: {fileID: 8952014673230657950} + _deathThresholdPoint: {fileID: 8113023065913069144} + _penguinSprite: {fileID: -1297142145, guid: 22580b5add5c70f4f81c7733a7798be2, type: 3} --- !u!1 &1435018870899465386 GameObject: m_ObjectHideFlags: 0 @@ -16539,6 +16590,7 @@ Transform: m_Children: - {fileID: 6484058324431055017} - {fileID: 2025892949459409451} + - {fileID: 2061358964934971870} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -16560,6 +16612,7 @@ MonoBehaviour: _scrollTransform: {fileID: 7036195930893080952} _jumper: {fileID: 879795961227326402} _totemManager: {fileID: 1758579984411066365} + _birdManager: {fileID: 2184219085709983617} _scrollSpeedX: 3.838 _scrollSpeedY: 1.45 --- !u!1 &4543646023735205506 @@ -17510,6 +17563,92 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &6013957128925600612 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8952014673230657950} + - component: {fileID: 7284338174098516025} + m_Layer: 0 + m_Name: BirdRef + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &8952014673230657950 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6013957128925600612} + m_LocalRotation: {x: 0, y: 0, z: 0.17364816, w: 0.9848078} + m_LocalPosition: {x: 18.56, y: 11.31, z: 0} + m_LocalScale: {x: 0.6, y: 0.6, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 876873006105371079} + - {fileID: 2096113391182167851} + m_Father: {fileID: 2061358964934971870} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 20} +--- !u!212 &7284338174098516025 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6013957128925600612} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1000 + m_Sprite: {fileID: -126723542, guid: 22580b5add5c70f4f81c7733a7798be2, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 5.11, y: 3.11} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &6066020027537218953 GameObject: m_ObjectHideFlags: 0 @@ -18528,6 +18667,90 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &7930678209591720750 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2096113391182167851} + - component: {fileID: 2282958176055563981} + m_Layer: 0 + m_Name: BirdRef (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &2096113391182167851 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7930678209591720750} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 6.22, y: -1.02, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8952014673230657950} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 20} +--- !u!212 &2282958176055563981 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7930678209591720750} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1000 + m_Sprite: {fileID: -126723542, guid: 22580b5add5c70f4f81c7733a7798be2, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 5.11, y: 3.11} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &7975288217203254000 GameObject: m_ObjectHideFlags: 0 @@ -18612,6 +18835,37 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &8021145269124036296 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8113023065913069144} + m_Layer: 0 + m_Name: Death + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8113023065913069144 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8021145269124036296} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -21.37, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2061358964934971870} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &8179438239472708414 GameObject: m_ObjectHideFlags: 0 @@ -19304,3 +19558,87 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &9092134826543552732 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 876873006105371079} + - component: {fileID: 8805762870769778127} + m_Layer: 0 + m_Name: BirdRef (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &876873006105371079 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9092134826543552732} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3.85, y: 2.38, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8952014673230657950} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 20} +--- !u!212 &8805762870769778127 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9092134826543552732} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1000 + m_Sprite: {fileID: -126723542, guid: 22580b5add5c70f4f81c7733a7798be2, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 5.11, y: 3.11} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 diff --git a/Assets/Scripts/Games/TotemClimb/TCBirdManager.cs b/Assets/Scripts/Games/TotemClimb/TCBirdManager.cs new file mode 100644 index 000000000..cffc4e4ac --- /dev/null +++ b/Assets/Scripts/Games/TotemClimb/TCBirdManager.cs @@ -0,0 +1,67 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace HeavenStudio.Games.Scripts_TotemClimb +{ + public class TCBirdManager : MonoBehaviour + { + [SerializeField] private float _speedX; + [SerializeField] private float _speedY; + + [SerializeField] private Transform _birdRef; + [SerializeField] private Transform _deathThresholdPoint; + + [SerializeField] private Sprite _penguinSprite; + + private List _birds = new(); + + private void Update() + { + foreach (var bird in _birds) + { + if (bird.birdTransform == null) continue; + bird.birdTransform.localPosition -= new Vector3(_speedX * bird.speed * Time.deltaTime, _speedY * bird.speed * Time.deltaTime); + if (bird.birdTransform.localPosition.x <= _deathThresholdPoint.localPosition.x) + { + Destroy(bird.birdTransform.gameObject); + } + } + + _birds.RemoveAll(x => x.birdTransform == null); + } + + public void AddBird(float speed, bool penguin, int amount) + { + amount = Mathf.Clamp(amount, 1, 3); + + Transform spawnedBird = Instantiate(_birdRef, transform); + + if (penguin) + { + spawnedBird.GetComponent().sprite = _penguinSprite; + spawnedBird.GetChild(0).GetComponent().sprite = _penguinSprite; + spawnedBird.GetChild(1).GetComponent().sprite = _penguinSprite; + } + + spawnedBird.gameObject.SetActive(true); + if (amount >= 2) spawnedBird.GetChild(0).gameObject.SetActive(true); + if (amount == 3) spawnedBird.GetChild(1).gameObject.SetActive(true); + + _birds.Add(new Bird(speed, spawnedBird)); + } + + private struct Bird + { + public float speed; + public Transform birdTransform; + + public Bird(float mSpeed, Transform mBirdTransform) + { + speed = mSpeed; + birdTransform = mBirdTransform; + } + } + } +} + diff --git a/Assets/Scripts/Games/TotemClimb/TCBirdManager.cs.meta b/Assets/Scripts/Games/TotemClimb/TCBirdManager.cs.meta new file mode 100644 index 000000000..4872e712d --- /dev/null +++ b/Assets/Scripts/Games/TotemClimb/TCBirdManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 91d6e7654abbb4c4699731e94d8fd77e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Games/TotemClimb/TotemClimb.cs b/Assets/Scripts/Games/TotemClimb/TotemClimb.cs index 247791646..18a04aa60 100644 --- a/Assets/Scripts/Games/TotemClimb/TotemClimb.cs +++ b/Assets/Scripts/Games/TotemClimb/TotemClimb.cs @@ -40,6 +40,20 @@ namespace HeavenStudio.Games.Loaders }, defaultLength = 4f }, + new("bird", "Bird") + { + function = delegate + { + var e = eventCaller.currentEntity; + TotemClimb.instance.SpawnBird(e["speed"], (TotemClimb.BirdType)e["type"] == TotemClimb.BirdType.Penguin, e["amount"]); + }, + parameters = new List() + { + new("speed", new EntityTypes.Float(1, 100, 3), "Speed Multiplier"), + new("type", TotemClimb.BirdType.KingFisher, "Type"), + new("amount", new EntityTypes.Integer(1, 3, 1), "Amount") + } + }, new("above", "Pillar End") { @@ -63,11 +77,18 @@ namespace HeavenStudio.Games { public class TotemClimb : Minigame { + public enum BirdType + { + KingFisher, + Penguin + } + [Header("Components")] [SerializeField] private Transform _cameraTransform; [SerializeField] private Transform _scrollTransform; [SerializeField] private TCJumper _jumper; [SerializeField] private TCTotemManager _totemManager; + [SerializeField] private TCBirdManager _birdManager; [Header("Properties")] [SerializeField] private float _scrollSpeedX = 3.838f; @@ -92,6 +113,11 @@ namespace HeavenStudio.Games instance = this; } + public void SpawnBird(float speed, bool penguin, int amount) + { + _birdManager.AddBird(speed, penguin, amount); + } + public override void OnGameSwitch(double beat) { CalculateStartAndEndBeat(beat);