Compare commits

...

4 Commits

Author SHA1 Message Date
5355effc23 Renamed GameController 2025-12-14 15:52:34 +01:00
1fd5eb1f44 Etc 2025-12-13 20:36:36 +01:00
a2779ab31b More sound stuff 2025-12-13 20:30:54 +01:00
42a32f5fe4 Sound updates 2025-12-13 17:27:04 +01:00
26 changed files with 1238 additions and 239 deletions

View File

@@ -2316,6 +2316,37 @@ Transform:
m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
m_PrefabInstance: {fileID: 1006088012}
m_PrefabAsset: {fileID: 0}
--- !u!1 &99960226
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 99960227}
m_Layer: 0
m_Name: Check if Elroy works correctly
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &99960227
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 99960226}
serializedVersion: 2
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: []
m_Father: {fileID: 106401850}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &100590570 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
@@ -2376,9 +2407,9 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 339867315}
- {fileID: 211342679}
- {fileID: 1483874449}
- {fileID: 1980948889}
- {fileID: 462995872}
- {fileID: 99960227}
- {fileID: 1804101362}
m_Father: {fileID: 1886023632}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &107806787
@@ -5289,37 +5320,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
m_PrefabInstance: {fileID: 1989589316}
m_PrefabAsset: {fileID: 0}
--- !u!1 &211342678
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 211342679}
m_Layer: 0
m_Name: Return sound does not end
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &211342679
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 211342678}
serializedVersion: 2
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: []
m_Father: {fileID: 106401850}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &213614170
GameObject:
m_ObjectHideFlags: 0
@@ -6253,7 +6253,7 @@ GameObject:
m_Component:
- component: {fileID: 234876909}
m_Layer: 0
m_Name: PacMan animation accuracy
m_Name: PacMan eating animation accuracy
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -12551,6 +12551,37 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
--- !u!1 &462995871
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 462995872}
m_Layer: 0
m_Name: Figure out RECORDING_DEMO flag in Ghost
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &462995872
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 462995871}
serializedVersion: 2
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: []
m_Father: {fileID: 106401850}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &465548780
PrefabInstance:
m_ObjectHideFlags: 0
@@ -19756,6 +19787,7 @@ Transform:
m_Children:
- {fileID: 1747271709}
- {fileID: 418715425}
- {fileID: 1036453363}
m_Father: {fileID: 1170168279}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &723443145
@@ -19805,8 +19837,9 @@ MonoBehaviour:
PrefabModifications: []
SerializationNodes: []
_udonSharpBackingUdonBehaviour: {fileID: 723443145}
audioSourcePlayer: {fileID: 1747271710}
audioSourcePacMan: {fileID: 1747271710}
audioSourceGhosts: {fileID: 418715426}
audioSourceExtraLife: {fileID: 1036453364}
pacStart: {fileID: 8300000, guid: 785e7b0273a31d944b0494c11d16c6e0, type: 3}
pacDot1: {fileID: 8300000, guid: 849983f9f45501b4a9cceb08a54571af, type: 3}
pacDot2: {fileID: 8300000, guid: fea5136a0bdc133499b59e680f5c98df, type: 3}
@@ -19814,9 +19847,14 @@ MonoBehaviour:
pacFruit: {fileID: 8300000, guid: 38b046b5cc294fe498cf3e0bd6682f98, type: 3}
pacCoin: {fileID: 8300000, guid: 77fe0b5680863514e8dadf65bbdae1ba, type: 3}
pacGhostEat: {fileID: 8300000, guid: b4d0f00ea7f448140b701a2cd61719f2, type: 3}
pacGhost1: {fileID: 8300000, guid: e2c9d17676b91b94dbc072b2d76090d2, type: 3}
pacGhostBlue: {fileID: 8300000, guid: 614583c8ee1ca744c942497b41bb917d, type: 3}
pacGhostRetreat: {fileID: 8300000, guid: 4c9f001814f4c8145a67b384905031b0, type: 3}
pacExtraLife: {fileID: 8300000, guid: 03ba6352816f6af44985ed4b321226f8, type: 3}
siren0: {fileID: 8300000, guid: 6436dd8a1e10b744aaa22ec56d84b213, type: 3}
siren1: {fileID: 8300000, guid: 47ab3d2cd7cb7c14d815192aac6200dd, type: 3}
siren2: {fileID: 8300000, guid: c5d97d1fa09a0fd47b82e31cbcec1011, type: 3}
siren3: {fileID: 8300000, guid: 1838962b5d88adb438fb3249be103caf, type: 3}
siren4: {fileID: 8300000, guid: 4a044a4155262b041a0b07392cd0f81b, type: 3}
--- !u!1001 &725915629
PrefabInstance:
m_ObjectHideFlags: 0
@@ -22138,6 +22176,8 @@ Transform:
- {fileID: 1835410441}
- {fileID: 2091228438}
- {fileID: 606557185}
- {fileID: 1101037633}
- {fileID: 2057945690}
m_Father: {fileID: 1886023632}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &808835976
@@ -23216,6 +23256,8 @@ Transform:
- {fileID: 1045119746}
- {fileID: 196434888}
- {fileID: 1959372908}
- {fileID: 1516731745}
- {fileID: 1387643237}
m_Father: {fileID: 1886023632}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &857863772
@@ -28072,6 +28114,134 @@ Transform:
m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
m_PrefabInstance: {fileID: 1547903860}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1036453362
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1036453363}
- component: {fileID: 1036453364}
m_Layer: 0
m_Name: Audio Source Extra Life
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1036453363
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1036453362}
serializedVersion: 2
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: []
m_Father: {fileID: 723443144}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!82 &1036453364
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1036453362}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!1 &1036776028
GameObject:
m_ObjectHideFlags: 0
@@ -29916,6 +30086,37 @@ Transform:
- {fileID: 1690662451}
m_Father: {fileID: 1170168279}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1101037632
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1101037633}
m_Layer: 0
m_Name: Reduce sound harshness
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1101037633
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1101037632}
serializedVersion: 2
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: []
m_Father: {fileID: 806746267}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1101791360 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 4099390335584803315, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
@@ -37499,6 +37700,37 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
--- !u!1 &1387643236
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1387643237}
m_Layer: 0
m_Name: Increasing pitch ghost sound
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1387643237
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1387643236}
serializedVersion: 2
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: []
m_Father: {fileID: 851913432}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &1388421355 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7828926860183371846, guid: 9f0d388d83fac3247aec4e68a300e53c, type: 3}
@@ -39790,37 +40022,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
m_PrefabInstance: {fileID: 654135149}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1483874448
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1483874449}
m_Layer: 0
m_Name: Blinky speed stays on demo
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1483874449
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1483874448}
serializedVersion: 2
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: []
m_Father: {fileID: 106401850}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1485745523 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 4099390335584803315, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
@@ -40384,6 +40585,37 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
--- !u!1 &1516731744
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1516731745}
m_Layer: 0
m_Name: Extra life sound
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1516731745
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1516731744}
serializedVersion: 2
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: []
m_Father: {fileID: 851913432}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1518047589 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 4099390335584803315, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
@@ -46149,7 +46381,7 @@ GameObject:
- component: {fileID: 1747271709}
- component: {fileID: 1747271710}
m_Layer: 0
m_Name: Audio Source Player
m_Name: Audio Source PacMan
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -47636,7 +47868,7 @@ Transform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1749838343
MonoBehaviour:
m_ObjectHideFlags: 0
m_ObjectHideFlags: 2
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
@@ -49154,6 +49386,37 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
--- !u!1 &1804101361
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1804101362}
m_Layer: 0
m_Name: Sometimes not changing direction when turned blue (elroy)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1804101362
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1804101361}
serializedVersion: 2
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: []
m_Father: {fileID: 106401850}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1805013752
PrefabInstance:
m_ObjectHideFlags: 0
@@ -53159,37 +53422,6 @@ Transform:
m_Children: []
m_Father: {fileID: 712073434}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1980948888
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1980948889}
m_Layer: 0
m_Name: Death sound plays on demo
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1980948889
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1980948888}
serializedVersion: 2
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: []
m_Father: {fileID: 106401850}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1981441952 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 4099390335584803315, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3}
@@ -54979,6 +55211,37 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
--- !u!1 &2057945689
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2057945690}
m_Layer: 0
m_Name: Move sequences out of GameController
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2057945690
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2057945689}
serializedVersion: 2
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: []
m_Father: {fileID: 806746267}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2058746900
GameObject:
m_ObjectHideFlags: 0

View File

@@ -10,7 +10,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3}
m_Name: GameController
m_Name: GameManager
m_EditorClassIdentifier:
serializedUdonProgramAsset: {fileID: 11400000, guid: ff2ee01d710668d489ec69b41b7dd764, type: 2}
udonAssembly:
@@ -1120,13 +1120,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: pelletCount
Data: pelletCountTotal
- Name: $v
Entry: 7
Data: 71|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: pelletCount
Data: pelletCountTotal
- Name: <UserType>k__BackingField
Entry: 9
Data: 52

View File

@@ -11,7 +11,7 @@ namespace Marro.PacManUdon
using VRC.Udon.Common.Interfaces;
using VRC.SDK3.Data;
public class GameController : UdonSharpBehaviour
public class GameManager : UdonSharpBehaviour
{
[Header("Static game components")]
[SerializeField] private Maze[] mazes;
@@ -39,7 +39,7 @@ namespace Marro.PacManUdon
private VRCObjectPool pelletPool;
private Animator mazeSpriteAnimator;
private int pelletCount;
private int pelletCountTotal;
private int pelletCountRemaining;
private GameObject[] attractScreenElements;
@@ -144,8 +144,8 @@ namespace Marro.PacManUdon
if (Networking.IsOwner(gameObject))
{
pelletCount = pelletPool.Pool.Length;
pelletCountRemaining = pelletCount;
pelletCountTotal = pelletPool.Pool.Length;
pelletCountRemaining = pelletCountTotal;
ghostManager.SetPelletsRemaining(pelletCountRemaining);
ghostManager.NewLevel();
@@ -181,7 +181,9 @@ namespace Marro.PacManUdon
soundManager.PlayPelletSound();
int pelletsConsumed = pelletCount - pelletCountRemaining;
soundManager.UpdatePelletCount(pelletCountRemaining);
int pelletsConsumed = pelletCountTotal - pelletCountRemaining;
if (pelletCountRemaining <= 0)
{
StartTimeSequence(PacManTimeSequence.BoardClear);
@@ -203,14 +205,14 @@ namespace Marro.PacManUdon
AddScore(50);
ghostManager.SetPowerPellet(true);
pacMan.SetPowerPellet(true);
soundManager.StartGhostSound(true);
soundManager.SetGhostBlue(true);
}
public void EndPowerPellet()
{
ghostManager.SetPowerPellet(false);
pacMan.SetPowerPellet(false);
soundManager.StartGhostSound(false);
soundManager.SetGhostBlue(false);
}
public void GotFruit()
@@ -237,9 +239,14 @@ namespace Marro.PacManUdon
StartTimeSequence(PacManTimeSequence.PacManCaught);
}
public void NoGhostsScared()
{
soundManager.SetGhostBlue(false);
}
public void NoGhostsRetreating()
{
soundManager.EndGhostRetreat();
soundManager.SetGhostRetreat(false);
}
void BoardClearAnimation()
@@ -328,7 +335,7 @@ namespace Marro.PacManUdon
if (this.score < scoreToExtraLife && this.score + score >= scoreToExtraLife)
{
IncrementLives();
BonusLifeReached();
}
SetScore(this.score + score);
@@ -379,6 +386,12 @@ namespace Marro.PacManUdon
statusDisplay.SetExtraLives(extraLives);
}
void BonusLifeReached()
{
IncrementLives();
soundManager.PlayExtraLifeSound();
}
public void SetFrozen(bool frozen, bool ghostIgnoreIfCaught = false, bool ghostKeepAnimating = false)
{
// Debug.Log($"{gameObject} Set Frozen: {frozen}");
@@ -481,6 +494,8 @@ namespace Marro.PacManUdon
return;
}
Debug.Log($"StartTimeSequence: {timeSequence}");
currentlyInTimeSequence = true;
currentTimeSequence = timeSequence;
timeSequenceProgress = 0;
@@ -553,7 +568,7 @@ namespace Marro.PacManUdon
private void TimeSequenceExecuteStep(int sequenceProgress)
{
Debug.Log($"{gameObject} Triggered time sequence step for sequence {currentTimeSequence} with progress {sequenceProgress}");
// Debug.Log($"{gameObject} Triggered time sequence step for sequence {currentTimeSequence} with progress {sequenceProgress}");
switch (currentTimeSequence)
{
default:
@@ -1252,7 +1267,7 @@ namespace Marro.PacManUdon
break;
case 6:
// Start game, end sequence
soundManager.StartGhostSound(false);
soundManager.StartGhostSound();
SetFrozen(false);
break;
}
@@ -1308,6 +1323,7 @@ namespace Marro.PacManUdon
RestartLevel();
SetMazeVisible(true);
statusDisplay.SetScoreDisplayVisible(true);
soundManager.SuppressSound(false);
break;
case 1:
// Increment level, show ready, show pellets, show lives indicators
@@ -1328,7 +1344,7 @@ namespace Marro.PacManUdon
case 4:
// Unfreeze
SetFrozen(false);
soundManager.StartGhostSound(false);
soundManager.StartGhostSound();
break;
}
}
@@ -1348,7 +1364,7 @@ namespace Marro.PacManUdon
SetPacManActive(true);
SetFrozen(false);
ghostManager.GhostCaughtContinue();
soundManager.StartGhostRetreat();
soundManager.SetGhostRetreat(true);
break;
}
}
@@ -1430,7 +1446,9 @@ namespace Marro.PacManUdon
case 5:
// Unfreeze
SetFrozen(false);
soundManager.StartGhostSound(false);
soundManager.SuppressSound(false);
soundManager.StartGhostSound();
soundManager.UpdatePelletCount(pelletCountRemaining);
break;
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 88e88d9bfa304c8448489e53fc031f74
guid: 501bd6c4adad10344a5e5dc0598e0b24
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -144,6 +144,7 @@ namespace Marro.PacManUdon
faceInStartingDirectionUntilUnfrozen = true;
UpdateAnimator();
RequestSerialization();
// animator.Play(0, -1, 0);
// Debug.Log($"{gameObject} reset with state: {state}, target: {target}, offGrid: {offGrid}");
}
@@ -768,6 +769,8 @@ namespace Marro.PacManUdon
return ghostState;
}
public bool IsScared => isScared;
public override Vector2 GetPosition()
{
return (Vector2)transform.localPosition;

View File

@@ -9,7 +9,7 @@
public class GhostManager : UdonSharpBehaviour
{
[NonSerialized] public GameController gameController;
[NonSerialized] public GameManager gameController;
private Ghost[] ghosts;
private Ghost blinky;
@@ -57,7 +57,7 @@
private bool frozen;
// This should be called once when the game is initialized
public void Initialize(GameObject[] ghostTargets, PacMan pacMan, GameController gameController)
public void Initialize(GameObject[] ghostTargets, PacMan pacMan, GameManager gameController)
{
this.gameController = gameController;
ghosts = transform.GetComponentsInChildren<Ghost>(true);
@@ -80,9 +80,9 @@
powerPelletActive = false;
scatterCounter = 0;
scatterPatternIndex = 0;
SetScattering(false, reverseDirection: false);
sharedPelletCounter = 0;
pelletTimeout = 0;
elroyLevel = 0;
foreach (Ghost ghost in ghosts)
{
@@ -90,6 +90,7 @@
}
SetScattering(true, reverseDirection: false);
RequestSerialization();
}
public void NewLevel()
@@ -226,16 +227,33 @@
public void GhostReturned()
{
bool noGhostsScared = true;
bool noGhostsRetreating = true;
foreach (var ghost in ghosts)
{
var state = ghost.GetGhostState();
if (ghost.IsScared)
{
noGhostsScared = false;
}
if (state == PacManGhostState.CaughtScore || state == PacManGhostState.Returning || state == PacManGhostState.Entering)
{
return;
noGhostsRetreating = false;
}
}
gameController.NoGhostsRetreating();
if (noGhostsScared)
{
gameController.NoGhostsScared();
}
if (noGhostsRetreating)
{
gameController.NoGhostsRetreating();
}
}
void SetGhostBlinking(bool blinking)

View File

@@ -9,7 +9,7 @@
public class PacMan : GridMover
{
private GameController gameController;
private GameManager gameController;
private PlayerInput input;
private float defaultSpeed;
private float powerPelletSpeed;
@@ -35,7 +35,7 @@
[UdonSynced] private bool frozen;
public void Initialize(PlayerInput input, VRCObjectPool pelletPool, GameController gameController)
public void Initialize(PlayerInput input, VRCObjectPool pelletPool, GameManager gameController)
{
this.gameController = gameController;
this.input = input;

View File

@@ -67,7 +67,7 @@
void SetPowerPelletsVisible(bool visible)
{
Debug.Log($"{gameObject} SetPowerPelletVisible {visible}, powerPellets.Length: {powerPellets.Length}");
// Debug.Log($"{gameObject} SetPowerPelletVisible {visible}, powerPellets.Length: {powerPellets.Length}");
foreach (Animator powerPellet in powerPellets)
{
powerPellet.SetBool("Visible", visible);

View File

@@ -10,7 +10,7 @@
public class PlayerInput : UdonSharpBehaviour
{
public bool active;
private GameController gameController;
private GameManager gameController;
Vector2 inputHorizontal;
Vector2 inputVertical;
float horizontalValue;
@@ -18,7 +18,7 @@
bool horizontalPriority;
VRCPlayerApi player;
public void Initialize(GameController gameController)
public void Initialize(GameManager gameController)
{
this.gameController = gameController;
inputHorizontal = Vector2.zero;

View File

@@ -43,19 +43,19 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 16
Data: 24
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: audioSourcePlayer
Data: audioSourcePacMan
- Name: $v
Entry: 7
Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: audioSourcePlayer
Data: audioSourcePacMan
- Name: <UserType>k__BackingField
Entry: 7
Data: 3|System.RuntimeType, mscorlib
@@ -163,25 +163,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: pacStart
Data: audioSourceExtraLife
- Name: $v
Entry: 7
Data: 9|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: pacStart
Data: audioSourceExtraLife
- Name: <UserType>k__BackingField
Entry: 7
Data: 10|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: UnityEngine.AudioClip, UnityEngine.AudioModule
- Name:
Entry: 8
Data:
Entry: 9
Data: 3
- Name: <SystemType>k__BackingField
Entry: 9
Data: 10
Data: 3
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -196,13 +190,13 @@ MonoBehaviour:
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 11|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 10|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 12|UnityEngine.SerializeField, UnityEngine.CoreModule
Data: 11|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -223,19 +217,25 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: pacDot1
Data: pacStart
- Name: $v
Entry: 7
Data: 13|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 12|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: pacDot1
Data: pacStart
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
Entry: 7
Data: 13|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: UnityEngine.AudioClip, UnityEngine.AudioModule
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -277,19 +277,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: pacDot2
Data: pacDot1
- Name: $v
Entry: 7
Data: 16|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: pacDot2
Data: pacDot1
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -331,19 +331,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: pacDie1
Data: pacDot2
- Name: $v
Entry: 7
Data: 19|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: pacDie1
Data: pacDot2
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -385,19 +385,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: pacFruit
Data: pacDie1
- Name: $v
Entry: 7
Data: 22|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: pacFruit
Data: pacDie1
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -439,19 +439,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: pacCoin
Data: pacFruit
- Name: $v
Entry: 7
Data: 25|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: pacCoin
Data: pacFruit
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -493,19 +493,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: pacGhostEat
Data: pacCoin
- Name: $v
Entry: 7
Data: 28|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: pacGhostEat
Data: pacCoin
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -547,19 +547,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: pacGhost1
Data: pacGhostEat
- Name: $v
Entry: 7
Data: 31|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: pacGhost1
Data: pacGhostEat
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -610,10 +610,10 @@ MonoBehaviour:
Data: pacGhostBlue
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -664,10 +664,10 @@ MonoBehaviour:
Data: pacGhostRetreat
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -709,19 +709,343 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _nextDotSound
Data: pacExtraLife
- Name: $v
Entry: 7
Data: 40|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: pacExtraLife
- Name: <UserType>k__BackingField
Entry: 9
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 41|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 42|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: siren0
- Name: $v
Entry: 7
Data: 43|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: siren0
- Name: <UserType>k__BackingField
Entry: 9
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 44|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 45|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: siren1
- Name: $v
Entry: 7
Data: 46|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: siren1
- Name: <UserType>k__BackingField
Entry: 9
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 47|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 48|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: siren2
- Name: $v
Entry: 7
Data: 49|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: siren2
- Name: <UserType>k__BackingField
Entry: 9
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 50|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 51|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: siren3
- Name: $v
Entry: 7
Data: 52|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: siren3
- Name: <UserType>k__BackingField
Entry: 9
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 53|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 54|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: siren4
- Name: $v
Entry: 7
Data: 55|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: siren4
- Name: <UserType>k__BackingField
Entry: 9
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 56|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 57|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _nextDotSound
- Name: $v
Entry: 7
Data: 58|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _nextDotSound
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SystemType>k__BackingField
Entry: 9
Data: 10
Data: 13
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -736,7 +1060,7 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 41|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 59|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
@@ -757,16 +1081,16 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _isRetreating
Data: _ghostRetreating
- Name: $v
Entry: 7
Data: 42|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 60|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _isRetreating
Data: _ghostRetreating
- Name: <UserType>k__BackingField
Entry: 7
Data: 43|System.RuntimeType, mscorlib
Data: 61|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Boolean, mscorlib
@@ -775,7 +1099,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 43
Data: 61
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -790,7 +1114,7 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 44|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 62|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
@@ -811,19 +1135,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _isBlue
Data: _ghostBlue
- Name: $v
Entry: 7
Data: 45|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 63|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _isBlue
Data: _ghostBlue
- Name: <UserType>k__BackingField
Entry: 9
Data: 43
Data: 61
- Name: <SystemType>k__BackingField
Entry: 9
Data: 43
Data: 61
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -838,7 +1162,109 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 46|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 64|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _ghostSoundLevel
- Name: $v
Entry: 7
Data: 65|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _ghostSoundLevel
- Name: <UserType>k__BackingField
Entry: 7
Data: 66|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Int32, mscorlib
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 66
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 67|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _currentlyPlayingSiren
- Name: $v
Entry: 7
Data: 68|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _currentlyPlayingSiren
- Name: <UserType>k__BackingField
Entry: 9
Data: 61
- Name: <SystemType>k__BackingField
Entry: 9
Data: 61
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 69|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
@@ -862,16 +1288,16 @@ MonoBehaviour:
Data: _suppress
- Name: $v
Entry: 7
Data: 47|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 70|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _suppress
- Name: <UserType>k__BackingField
Entry: 9
Data: 43
Data: 61
- Name: <SystemType>k__BackingField
Entry: 9
Data: 43
Data: 61
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -886,7 +1312,7 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 48|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 71|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0

View File

@@ -6,8 +6,9 @@ using VRC.Udon;
public class SoundManager : UdonSharpBehaviour
{
[SerializeField] private AudioSource audioSourcePlayer;
[SerializeField] private AudioSource audioSourcePacMan;
[SerializeField] private AudioSource audioSourceGhosts;
[SerializeField] private AudioSource audioSourceExtraLife;
[SerializeField] private AudioClip pacStart;
[SerializeField] private AudioClip pacDot1;
@@ -16,13 +17,21 @@ public class SoundManager : UdonSharpBehaviour
[SerializeField] private AudioClip pacFruit;
[SerializeField] private AudioClip pacCoin;
[SerializeField] private AudioClip pacGhostEat;
[SerializeField] private AudioClip pacGhost1;
[SerializeField] private AudioClip pacGhostBlue;
[SerializeField] private AudioClip pacGhostRetreat;
[SerializeField] private AudioClip pacExtraLife;
[SerializeField] private AudioClip siren0;
[SerializeField] private AudioClip siren1;
[SerializeField] private AudioClip siren2;
[SerializeField] private AudioClip siren3;
[SerializeField] private AudioClip siren4;
private AudioClip _nextDotSound;
private bool _isRetreating;
private bool _isBlue;
private bool _ghostRetreating;
private bool _ghostBlue;
private int _ghostSoundLevel;
private bool _currentlyPlayingSiren;
private bool _suppress;
@@ -33,10 +42,16 @@ public class SoundManager : UdonSharpBehaviour
public void Reset()
{
StopAllSound();
_nextDotSound = pacDot2;
_isRetreating = false;
_isBlue = false;
_suppress = false;
_ghostRetreating = false;
_ghostBlue = false;
_ghostSoundLevel = 0;
_currentlyPlayingSiren = false;
_suppress = true;
}
public void SuppressSound(bool suppress)
@@ -51,81 +66,104 @@ public class SoundManager : UdonSharpBehaviour
public void PlayGameStartSound()
{
PlaySound(audioSourcePlayer, pacStart);
PlaySound(audioSourcePacMan, pacStart);
}
public void PlayPelletSound()
{
PlaySound(audioSourcePlayer, _nextDotSound);
PlaySound(audioSourcePacMan, _nextDotSound);
_nextDotSound = _nextDotSound == pacDot1 ? pacDot2 : pacDot1;
}
public void PlayDeathSound()
{
PlaySound(audioSourcePlayer, pacDie1);
PlaySound(audioSourcePacMan, pacDie1);
}
public void PlayFruitSound()
{
PlaySound(audioSourcePlayer, pacFruit);
PlaySound(audioSourcePacMan, pacFruit);
}
public void PlayCoinSound()
{
PlaySound(audioSourcePlayer, pacCoin);
PlaySound(audioSourcePacMan, pacCoin);
}
public void PlayGhostEatSound()
{
PlaySound(audioSourcePlayer, pacGhostEat);
PlaySound(audioSourcePacMan, pacGhostEat);
}
public void StartGhostSound(bool isBlue)
public void PlayExtraLifeSound()
{
_isBlue = isBlue;
if (_isRetreating)
{
// Retreating overrides other ghost sound
return;
}
var sound = _isBlue ? pacGhostBlue : pacGhost1;
PlaySound(audioSourceGhosts, sound, true);
PlaySound(audioSourceExtraLife, pacExtraLife);
}
public void StartGhostRetreat()
public void StartGhostSound()
{
_isRetreating = true;
PlaySound(audioSourceGhosts, pacGhostRetreat, true);
UpdateGhostSound();
}
public void EndGhostRetreat()
public void SetGhostBlue(bool isBlue)
{
if (!_isRetreating)
{
return;
}
_ghostBlue = isBlue;
UpdateGhostSound();
}
_isRetreating = false;
StartGhostSound(_isBlue);
public void SetGhostRetreat(bool isRetreating)
{
_ghostRetreating = isRetreating;
UpdateGhostSound();
}
public void StopAllSound()
{
audioSourcePlayer.Stop();
audioSourcePacMan.Stop();
audioSourceGhosts.Stop();
// audioSourceExtraLife is not stopped on purpose, this sound is never interrupted
}
public void UpdatePelletCount(int pelletCount)
{
int level = 0;
if (pelletCount < 16)
{
level = 4;
}
else if (pelletCount < 32)
{
level = 3;
}
else if (pelletCount < 64)
{
level = 2;
}
else if (pelletCount < 220)
{
level = 1;
}
Debug.Log($"UpdatePelletCount: {pelletCount}, level: {level}");
if (_ghostSoundLevel >= level)
{
return;
}
_ghostSoundLevel = level;
UpdateGhostSound();
}
private void PlaySound(AudioSource audioSource, AudioClip audioClip, bool loop = false)
{
// Debug.Log($"PlaySound, audioSource: {audioSource}, audioClip: {audioClip}, loop: {loop}, suppress: {_suppress}");
if (_suppress)
{
return;
}
if (loop && audioSource.clip == audioClip)
if (loop && audioSource.clip == audioClip && audioSource.isPlaying)
{
// Don't restart a looping sound
return;
@@ -135,4 +173,76 @@ public class SoundManager : UdonSharpBehaviour
audioSource.Play();
audioSource.loop = loop;
}
private void SwitchSound(AudioSource audioSource, AudioClip audioClip, bool loop)
{
if (_suppress)
{
return;
}
if (audioSource.clip == audioClip)
{
// No need to switch
return;
}
if (!audioSource.isPlaying || audioSource.clip == null)
{
PlaySound(audioSource, audioClip, loop);
}
var newTimeSamples = (int)(audioSource.timeSamples / (double)audioSource.clip.samples * audioClip.samples);
audioSource.clip = audioClip;
audioSource.timeSamples = newTimeSamples;
audioSource.Play();
}
private void UpdateGhostSound()
{
if (_ghostRetreating)
{
PlaySound(audioSourceGhosts, pacGhostRetreat, true);
_currentlyPlayingSiren = false;
return;
}
if (_ghostBlue)
{
PlaySound(audioSourceGhosts, pacGhostBlue, true);
_currentlyPlayingSiren = false;
return;
}
var currentGhostLevelSound = GetSoundForGhostLevel(_ghostSoundLevel);
if (_currentlyPlayingSiren)
{
SwitchSound(audioSourceGhosts, currentGhostLevelSound, true);
}
else
{
PlaySound(audioSourceGhosts, currentGhostLevelSound, true);
}
_currentlyPlayingSiren = true;
}
private AudioClip GetSoundForGhostLevel(int ghostLevel)
{
switch (ghostLevel)
{
case 1:
return siren1;
case 2:
return siren2;
case 3:
return siren3;
case 4:
return siren4;
default:
return siren0;
};
}
}

Binary file not shown.

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 03ba6352816f6af44985ed4b321226f8
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Sounds/pacghost3.wav Normal file

Binary file not shown.

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: ee92fdc06c06f784a94df32751017393
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Sounds/siren0.wav Normal file

Binary file not shown.

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 6436dd8a1e10b744aaa22ec56d84b213
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Sounds/siren1.wav Normal file

Binary file not shown.

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 47ab3d2cd7cb7c14d815192aac6200dd
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Sounds/siren2.wav Normal file

Binary file not shown.

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: c5d97d1fa09a0fd47b82e31cbcec1011
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Sounds/siren3.wav Normal file

Binary file not shown.

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 1838962b5d88adb438fb3249be103caf
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Sounds/siren4.wav Normal file

Binary file not shown.

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 4a044a4155262b041a0b07392cd0f81b
AudioImporter:
externalObjects: {}
serializedVersion: 7
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant: