diff --git a/Assets/ParallaxBackground.cs b/Assets/ParallaxBackground.cs index 17dc4f0..a79546e 100644 --- a/Assets/ParallaxBackground.cs +++ b/Assets/ParallaxBackground.cs @@ -4,24 +4,37 @@ using UnityEngine; public class ParallaxBackground : MonoBehaviour { - public Camera camera; - public SpriteRenderer renderer; + [SerializeField] Camera baseCamera; + [SerializeField] SpriteRenderer baseRenderer; public Vector2 scrollRate = Vector2.one * .4f; + Vector2 tileSize; + Vector2 offset = new Vector2(8f, 7.5f); + // Start is called before the first frame update void Start() { - + baseRenderer.transform.position = new Vector3( + baseCamera.transform.position.x - offset.x, + baseCamera.transform.position.y - offset.y, + baseRenderer.transform.position.z); + + tileSize = baseRenderer.size; + + baseRenderer.size = new Vector2( + (Mathf.Ceil(tileSize.x / (offset.x * 2f)) + 2f) * tileSize.x, + (Mathf.Ceil(tileSize.y / (offset.y * 2f)) + 2f) * tileSize.y); } // Update is called once per frame void Update() { - //var currentPos = - - //var offset = new Vector3(8f, -7.5f, 0f); - - //renderer.transform.position = camera.transform.position + ((camera.transform.position * new Vector3(scrollRate.x, scrollRate.y, 0f)) - offset); + var depth = baseRenderer.transform.position.z; + var basePosition = (Vector2)baseCamera.transform.position - (offset * new Vector2(1f, -1f)); + var scrollOffset = baseCamera.transform.position * scrollRate; + scrollOffset = new Vector2(scrollOffset.x % tileSize.x, scrollOffset.y % tileSize.y); + var position = basePosition - scrollOffset - tileSize * new Vector2(1, -1); + baseRenderer.transform.position = new Vector3(position.x, position.y, depth); } } diff --git a/Assets/Resources/Audio/Eat.ogg b/Assets/Resources/Audio/Eat.ogg new file mode 100644 index 0000000..96d4581 Binary files /dev/null and b/Assets/Resources/Audio/Eat.ogg differ diff --git a/Assets/Resources/Audio/Eat.ogg.meta b/Assets/Resources/Audio/Eat.ogg.meta new file mode 100644 index 0000000..aee8605 --- /dev/null +++ b/Assets/Resources/Audio/Eat.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 969fb43c02f3e464c8e0907e44dc946c +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Audio/GameOver.wav b/Assets/Resources/Audio/GameOver.wav new file mode 100644 index 0000000..92065e3 Binary files /dev/null and b/Assets/Resources/Audio/GameOver.wav differ diff --git a/Assets/Resources/Audio/GameOver.wav.meta b/Assets/Resources/Audio/GameOver.wav.meta new file mode 100644 index 0000000..4740015 --- /dev/null +++ b/Assets/Resources/Audio/GameOver.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: ed52247b51db5b942a636c14f0b4290c +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Audio/HardPunch.ogg b/Assets/Resources/Audio/HardPunch.ogg new file mode 100644 index 0000000..992a534 Binary files /dev/null and b/Assets/Resources/Audio/HardPunch.ogg differ diff --git a/Assets/Resources/Audio/HardPunch.ogg.meta b/Assets/Resources/Audio/HardPunch.ogg.meta new file mode 100644 index 0000000..4252a56 --- /dev/null +++ b/Assets/Resources/Audio/HardPunch.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 3095e099213c73c4182d9feeae77ebbd +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Audio/HardSlap.ogg b/Assets/Resources/Audio/HardSlap.ogg new file mode 100644 index 0000000..45be628 Binary files /dev/null and b/Assets/Resources/Audio/HardSlap.ogg differ diff --git a/Assets/Resources/Audio/HardSlap.ogg.meta b/Assets/Resources/Audio/HardSlap.ogg.meta new file mode 100644 index 0000000..7f9b79d --- /dev/null +++ b/Assets/Resources/Audio/HardSlap.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 292f0e8e04642864daaf315efade99c7 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Audio/Punch.ogg b/Assets/Resources/Audio/Punch.ogg new file mode 100644 index 0000000..9c8b8b7 Binary files /dev/null and b/Assets/Resources/Audio/Punch.ogg differ diff --git a/Assets/Resources/Audio/Punch.ogg.meta b/Assets/Resources/Audio/Punch.ogg.meta new file mode 100644 index 0000000..5877632 --- /dev/null +++ b/Assets/Resources/Audio/Punch.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 33e618f5ded88f7449cf8c6b88e71c8f +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Audio/Slap.ogg b/Assets/Resources/Audio/Slap.ogg new file mode 100644 index 0000000..d0169ab Binary files /dev/null and b/Assets/Resources/Audio/Slap.ogg differ diff --git a/Assets/Resources/Audio/Slap.ogg.meta b/Assets/Resources/Audio/Slap.ogg.meta new file mode 100644 index 0000000..36a929d --- /dev/null +++ b/Assets/Resources/Audio/Slap.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: aafb1c137c5574744b6c2c5b7d5e7055 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Audio/Win.ogg b/Assets/Resources/Audio/Win.ogg new file mode 100644 index 0000000..f9392b6 Binary files /dev/null and b/Assets/Resources/Audio/Win.ogg differ diff --git a/Assets/Resources/Audio/Win.ogg.meta b/Assets/Resources/Audio/Win.ogg.meta new file mode 100644 index 0000000..2a26161 --- /dev/null +++ b/Assets/Resources/Audio/Win.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 528e0f9bceff67a4e98ab441ac65acde +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/LevelOne.unity b/Assets/Scenes/LevelOne.unity index 47ec9f1..b651ea2 100644 --- a/Assets/Scenes/LevelOne.unity +++ b/Assets/Scenes/LevelOne.unity @@ -47896,6 +47896,84 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!4 &1727766209 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727766208} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -7.8, y: 7.65, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1146013793} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1727766210 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727766208} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + 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: 1067504601 + m_SortingLayer: -1 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: e33008ddf5593464c90eced40f3f28e8, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 2 + m_Size: {x: 16, y: 16} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &1727766211 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1727766208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af4fa3c5d20488d4fa39fb11819d3f97, type: 3} + m_Name: + m_EditorClassIdentifier: + baseCamera: {fileID: 1337282922} + baseRenderer: {fileID: 1727766210} + scrollRate: {x: 0.4, y: 0.4} --- !u!1 &1895829829 GameObject: m_ObjectHideFlags: 0 @@ -48086,12 +48164,12 @@ PrefabInstance: - target: {fileID: 8554420466772133694, guid: f859e1c9214db2c4eaaeff51febb3222, type: 3} propertyPath: m_LocalPosition.x - value: 42.01 + value: 54.1 objectReference: {fileID: 0} - target: {fileID: 8554420466772133694, guid: f859e1c9214db2c4eaaeff51febb3222, type: 3} propertyPath: m_LocalPosition.y - value: 22.76 + value: 32.6 objectReference: {fileID: 0} - target: {fileID: 8554420466772133694, guid: f859e1c9214db2c4eaaeff51febb3222, type: 3} diff --git a/Assets/Scripts/EventControls.cs b/Assets/Scripts/EventControls.cs index c76cdc6..959337a 100644 --- a/Assets/Scripts/EventControls.cs +++ b/Assets/Scripts/EventControls.cs @@ -9,6 +9,7 @@ public class EventControls : MonoBehaviour { [SerializeField] private Player player; [SerializeField] private Camera camera; + [SerializeField] private GameObject music; [SerializeField] private List tiles; [SerializeField] private List successTiles; [SerializeField] private List failTiles; @@ -159,6 +160,17 @@ public class EventControls : MonoBehaviour .GetValueOrDefault(); } + IEnumerator PlayVictoryMusic() + { + music = GameObject.Find("Music"); + var audioSrc = music.GetComponent(); + audioSrc.Pause(); + SoundManagerScript.PlaySound("win"); + var clipSeconds = SoundManagerScript.audioSrc.clip.length; + yield return new WaitForSeconds(clipSeconds); + audioSrc.Play(); + } + private void PerformControlEvent() { nextControlAccumalator = 0; @@ -185,6 +197,7 @@ public class EventControls : MonoBehaviour // Destroy(currentEnemyCollider.gameObject); // currentEnemyCollider = null; hasFailed = false; + StartCoroutine(PlayVictoryMusic()); } } @@ -274,7 +287,7 @@ public class EventControls : MonoBehaviour // var offset = camera.transform.position.x - (int)camera.transform.position.x; // transform.position = new Vector3(transform.position.x + offset, transform.position.y, 0); //} - + private EventControlTile GenerateEventControlTile(Vector3Int position) { var randomNumber = Random.Range(0, TileToKeyMappings.TileToKey.Count); diff --git a/Assets/Scripts/Player.cs b/Assets/Scripts/Player.cs index cda9383..abe2d1c 100644 --- a/Assets/Scripts/Player.cs +++ b/Assets/Scripts/Player.cs @@ -32,6 +32,8 @@ public class Player : MonoBehaviour private bool isMovementEnabled = true; private bool isFighting = false; + private bool isPlayerHurt = false; + private void Start() { rigidBody = GetComponent(); @@ -129,7 +131,7 @@ public class Player : MonoBehaviour Run(); FlipSprite(); } - + PlayFightSound(); HandleAnimations(); } @@ -234,20 +236,38 @@ public class Player : MonoBehaviour animator.SetBool("IsFighting", isFighting); } + private void PlayFightSound() + { + if (isFighting && !isPlayerHurt) + { + SoundManagerScript.PlaySound(GetRandomFightClipName()); + } + } + + private string GetRandomFightClipName() + { + var fightClipNames = new List { "punch", "hard punch", "slap", "hard slap" }; + var randomNumber = UnityEngine.Random.Range(0, fightClipNames.Count); + return fightClipNames[randomNumber]; + } + public void StartEncounter() { + isPlayerHurt = false; isFighting = true; isMovementEnabled = false; } public void EndEncounter() { + isPlayerHurt = false; isFighting = false; isMovementEnabled = true; } public void ThrowUserInTheAirHurt() - { + { + isPlayerHurt = true; GetComponent().velocity += new Vector2(Mathf.Sign(transform.localScale.x) * -1 * hurtVelocity, hurtVelocity); isFighting = false; } diff --git a/Assets/Scripts/SoundManagerScript.cs b/Assets/Scripts/SoundManagerScript.cs index 8964c0f..91d6ce5 100644 --- a/Assets/Scripts/SoundManagerScript.cs +++ b/Assets/Scripts/SoundManagerScript.cs @@ -5,8 +5,10 @@ using UnityEngine; public class SoundManagerScript : MonoBehaviour { - public static AudioClip jumpSound, screamSound, wrongButtonSound, bugLaughSound, drinkSound; - static AudioSource audioSrc; + public static AudioClip jumpSound, screamSound, wrongButtonSound, + bugLaughSound, drinkSound, eatSound, punchSound, hardPunchSound, + slapSound, hardSlapSound, winSound; + public static AudioSource audioSrc; // Start is called before the first frame update void Start() @@ -16,6 +18,12 @@ public class SoundManagerScript : MonoBehaviour wrongButtonSound = Resources.Load("Audio/WrongButton"); bugLaughSound = Resources.Load("Audio/BugLaugh"); drinkSound = Resources.Load("Audio/Drink"); + eatSound = Resources.Load("Audio/Eat"); + punchSound = Resources.Load("Audio/Punch"); + hardPunchSound = Resources.Load("Audio/HardPunch"); + slapSound = Resources.Load("Audio/Slap"); + hardSlapSound = Resources.Load("Audio/HardSlap"); + winSound = Resources.Load("Audio/Win"); audioSrc = GetComponent(); } @@ -45,6 +53,26 @@ public class SoundManagerScript : MonoBehaviour case "drink": audioSrc.PlayOneShot(drinkSound); break; + case "eat": + audioSrc.PlayOneShot(eatSound); + break; + case "punch": + audioSrc.PlayOneShot(punchSound); + break; + case "hard punch": + audioSrc.PlayOneShot(hardPunchSound); + break; + case "slap": + audioSrc.PlayOneShot(slapSound); + break; + case "hard slap": + audioSrc.PlayOneShot(hardSlapSound); + break; + case "win": + audioSrc.clip = winSound; + audioSrc.PlayOneShot(winSound); + break; + } } }