TO SQUASH: Fixed issue with yummy missed sound playing multiple times.

This commit is contained in:
2026-08-10 22:58:50 -04:00
parent 1b10a2f144
commit 14aa42696e
14 changed files with 336 additions and 50 deletions
+53 -1
View File
@@ -1,5 +1,31 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1102 &-9069940211912870391
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: YummyTransparent
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 136176123f6cc3007b0a4f39eefb4a00, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1107 &-4520202781878639822
AnimatorStateMachine:
serializedVersion: 7
@@ -15,6 +41,9 @@ AnimatorStateMachine:
- serializedVersion: 1
m_State: {fileID: -3649881718396374124}
m_Position: {x: 538, y: 60.5, z: 0}
- serializedVersion: 1
m_State: {fileID: -9069940211912870391}
m_Position: {x: 700, y: 250, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
@@ -35,7 +64,8 @@ AnimatorState:
m_Name: YummyKeyMiss
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_Transitions:
- {fileID: 2368477872874752379}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@@ -105,6 +135,28 @@ AnimatorController:
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
m_EvaluateTransitionsOnStart: 1
--- !u!1101 &2368477872874752379
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -9069940211912870391}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &8884990661533227216
AnimatorState:
serializedVersion: 6
+1 -8
View File
@@ -91,11 +91,4 @@ AnimationClip:
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events:
- time: 0.8
functionName: DestroyYummy
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
m_Events: []
@@ -42,6 +42,9 @@ AnimatorStateMachine:
- serializedVersion: 1
m_State: {fileID: 3045375717937126488}
m_Position: {x: 584, y: 50.5, z: 0}
- serializedVersion: 1
m_State: {fileID: 2259880169987401022}
m_Position: {x: 740, y: 200, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
@@ -52,6 +55,28 @@ AnimatorStateMachine:
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -8844275775214021049}
--- !u!1101 &-2173092474212085878
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 2259880169987401022}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
@@ -106,6 +131,32 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &2259880169987401022
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: YummyTransparent
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 136176123f6cc3007b0a4f39eefb4a00, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &3045375717937126488
AnimatorState:
serializedVersion: 6
@@ -116,7 +167,8 @@ AnimatorState:
m_Name: YummyLaserMiss
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_Transitions:
- {fileID: -2173092474212085878}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@@ -97,11 +97,4 @@ AnimationClip:
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events:
- time: 0.8
functionName: DestroyYummy
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
m_Events: []
@@ -1,5 +1,53 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1102 &-6545313961321648107
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: YummyTransparent
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 136176123f6cc3007b0a4f39eefb4a00, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-5705082485832391116
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -6545313961321648107}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-4949974239878761578
AnimatorState:
serializedVersion: 6
@@ -37,7 +85,8 @@ AnimatorState:
m_Name: YummyLigthningMiss
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_Transitions:
- {fileID: -5705082485832391116}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@@ -97,6 +146,9 @@ AnimatorStateMachine:
- serializedVersion: 1
m_State: {fileID: -1853721100706032753}
m_Position: {x: 563, y: 8.5, z: 0}
- serializedVersion: 1
m_State: {fileID: -6545313961321648107}
m_Position: {x: 720, y: 160, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
@@ -104,7 +156,7 @@ AnimatorStateMachine:
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ExitPosition: {x: 820, y: 90, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -4949974239878761578}
--- !u!1101 &9167902146132135040
@@ -94,11 +94,4 @@ AnimationClip:
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events:
- time: 0.8
functionName: DestroyYummy
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
m_Events: []
@@ -66,7 +66,8 @@ AnimatorState:
m_Name: YummyMagnetMiss
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_Transitions:
- {fileID: 5603974221548383080}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@@ -96,7 +97,10 @@ AnimatorStateMachine:
m_Position: {x: 279, y: 242, z: 0}
- serializedVersion: 1
m_State: {fileID: 679893021304721713}
m_Position: {x: 550, y: 240, z: 0}
m_Position: {x: 500, y: 80, z: 0}
- serializedVersion: 1
m_State: {fileID: 4221053959861897625}
m_Position: {x: 690, y: 240, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
@@ -107,6 +111,54 @@ AnimatorStateMachine:
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -710635540647452494}
--- !u!1102 &4221053959861897625
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: YummyTransparent
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 136176123f6cc3007b0a4f39eefb4a00, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &5603974221548383080
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 4221053959861897625}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &6066366224202908235
AnimatorStateTransition:
m_ObjectHideFlags: 1
@@ -94,11 +94,4 @@ AnimationClip:
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events:
- time: 0.8
functionName: DestroyYummy
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
m_Events: []
@@ -0,0 +1,73 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: YummyTransparent
serializedVersion: 8
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves:
- serializedVersion: 2
curve:
- time: 0
value: {fileID: 9122294262205109509, guid: b634b1f944e581cbeb43efe97e96ec62, type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
flags: 2
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
isIntCurve: 0
isSerializeReferenceCurve: 0
metaData: 0
pptrCurveMapping:
- {fileID: 9122294262205109509, guid: b634b1f944e581cbeb43efe97e96ec62, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.016666668
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 136176123f6cc3007b0a4f39eefb4a00
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:
+2
View File
@@ -356,6 +356,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 95d73a7ad911de521a39ec73860fe954, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::SharkSpawner
sharkPrefab: {fileID: 1185323843861964289, guid: 4bb45ba16a3bbd351a45d39c3f0b62f9, type: 3}
gameBoardSpriteRenderer: {fileID: 297740151}
--- !u!1 &118530397
GameObject:
m_ObjectHideFlags: 0
+14 -2
View File
@@ -13,6 +13,10 @@ public class Shark : MonoBehaviour
public Player player;
public SpriteRenderer gameBoardSpriteRenderer;
private Bounds gameBoardBounds;
private AudioSource audioSource;
private Animator animator;
@@ -33,12 +37,14 @@ public class Shark : MonoBehaviour
private static int sharkKillPoints = 100;
private bool spawnFinished = false;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
audioSource = GetComponent<AudioSource>();
animator = GetComponent<Animator>();
gameBoardBounds = gameBoardSpriteRenderer.bounds;
bool spawnLeft = Random.Range(0, 2) == 0;
angle = spawnLeft ? 90 : 270;
@@ -49,12 +55,18 @@ public class Shark : MonoBehaviour
// Update is called once per frame
void FixedUpdate()
{
// Do stuff only if the spawn animation is finished
// Check if the spawn animation has finished.
if (
(animator.GetCurrentAnimatorStateInfo(0).IsName("SharkSpawnRight") ||
animator.GetCurrentAnimatorStateInfo(0).IsName("SharkSpawnLeft")) &&
animator.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1.0f
)
{
spawnFinished = true;
}
// Do stuff only if the spawn animation has finished.
if (spawnFinished)
{
// TODO: Check if the shark was killed.
+12 -7
View File
@@ -6,8 +6,6 @@ public class SharkSpawner : MonoBehaviour
public SpriteRenderer gameBoardSpriteRenderer;
private Bounds sharkBounds;
private Bounds gameBoardBounds;
private float spawnTimer = 0f;
@@ -22,7 +20,6 @@ public class SharkSpawner : MonoBehaviour
void Start()
{
gameBoardBounds = gameBoardSpriteRenderer.bounds;
sharkBounds = sharkPrefab.GetComponent<SpriteRenderer>().bounds;
Reset();
}
@@ -37,6 +34,9 @@ public class SharkSpawner : MonoBehaviour
if (Random.value < spawnProbability)
{
GameObject shark = Instantiate(sharkPrefab, spawnPosition, Quaternion.identity);
Shark sharkScript = shark.GetComponent<Shark>();
sharkScript.gameBoardSpriteRenderer = gameBoardSpriteRenderer;
sharkScript.player = FindAnyObjectByType<Player>();
isActive = false;
}
}
@@ -46,14 +46,19 @@ public class SharkSpawner : MonoBehaviour
{
isActive = true;
spawnTimer = 0f;
Vector2 boardCenter = gameBoardBounds.center;
Vector2 spawnAreaSize = gameBoardBounds.size * (2f / 3f);
Vector2 halfSpawnArea = spawnAreaSize * 0.5f;
spawnPosition = new Vector2(
Random.Range(
gameBoardBounds.min.x + sharkBounds.extents.x,
gameBoardBounds.max.x - sharkBounds.extents.x
boardCenter.x - halfSpawnArea.x,
boardCenter.x + halfSpawnArea.x
),
Random.Range(
gameBoardBounds.min.y + sharkBounds.extents.y,
gameBoardBounds.max.y - sharkBounds.extents.y
boardCenter.y - halfSpawnArea.y,
boardCenter.y + halfSpawnArea.y
)
);
}
+9 -3
View File
@@ -1,4 +1,5 @@
using UnityEngine;
using System.Collections;
public abstract class YummyBase : MonoBehaviour
{
@@ -20,6 +21,8 @@ public abstract class YummyBase : MonoBehaviour
private float missedTimer = 0f;
private bool isMissed = false;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
@@ -32,7 +35,7 @@ public abstract class YummyBase : MonoBehaviour
// Update is called once per frame
void FixedUpdate()
{
if (isObtained)
if (isObtained || isMissed)
{
return;
}
@@ -41,10 +44,12 @@ public abstract class YummyBase : MonoBehaviour
missedTimer += Time.fixedDeltaTime;
if (missedTimer >= 5f)
if (missedTimer >= 5f && !isMissed)
{
isMissed = true;
audioSource.PlayOneShot(missedSound);
animator.SetTrigger("missed");
StartCoroutine(DestroyYummy());
}
}
@@ -85,8 +90,9 @@ public abstract class YummyBase : MonoBehaviour
}
}
public void DestroyYummy()
public IEnumerator DestroyYummy()
{
yield return new WaitForSeconds(1.5f);
Destroy(gameObject);
}