diff --git a/Assets/Audio/MainMixer.mixer b/Assets/Audio/MainMixer.mixer index 546b8a3..9dac38e 100644 --- a/Assets/Audio/MainMixer.mixer +++ b/Assets/Audio/MainMixer.mixer @@ -1,5 +1,24 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!243 &-8030293084440089681 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: EnvHits + m_AudioMixer: {fileID: 24100000} + m_GroupID: f58915c82845f9b47a322aeefeaf0116 + m_Children: [] + m_Volume: 8bee47ecf1719a34c9a4509adc3d7f50 + m_Pitch: 3d4dde8cdd48f044b9280d72a780b260 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: 4401202656874143845} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 --- !u!244 &-3601797963847308308 AudioMixerEffectController: m_ObjectHideFlags: 3 @@ -55,6 +74,7 @@ AudioMixerController: - a1145e9de5e1d9d4980fbfb98ac09640 - c95b70575255b7444a07837f795dda0c - 3a0a85f42d9d34f45a8e1b38e73db35a + - f58915c82845f9b47a322aeefeaf0116 name: View m_CurrentViewIndex: 0 m_TargetSnapshot: {fileID: 24500006} @@ -118,6 +138,20 @@ AudioMixerEffectController: m_SendTarget: {fileID: 0} m_EnableWetMix: 0 m_Bypass: 0 +--- !u!244 &4401202656874143845 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 723bb9b90d69394469bde81e0fff9a9f + m_EffectName: Attenuation + m_MixLevel: 00c73b77a6f0a9d4584f2133fcbfa019 + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 --- !u!243 &6277318630853483794 AudioMixerGroupController: m_ObjectHideFlags: 0 @@ -163,6 +197,7 @@ AudioMixerGroupController: m_Children: - {fileID: -1410552352759146441} - {fileID: 6277318630853483794} + - {fileID: -8030293084440089681} m_Volume: 1a91e250aa8fec749b1861a5c8e7ff48 m_Pitch: c21e265de00bfe64eba2868212c34fa2 m_Send: 00000000000000000000000000000000 diff --git a/Assets/Audio/Sfx/ZapSplat/ChainLinkFenceImpact1.mp3 b/Assets/Audio/Sfx/ZapSplat/ChainLinkFenceImpact1.mp3 new file mode 100644 index 0000000..5f8f30f Binary files /dev/null and b/Assets/Audio/Sfx/ZapSplat/ChainLinkFenceImpact1.mp3 differ diff --git a/Assets/Audio/Sfx/ZapSplat/ChainLinkFenceImpact1.mp3.meta b/Assets/Audio/Sfx/ZapSplat/ChainLinkFenceImpact1.mp3.meta new file mode 100644 index 0000000..e461dba --- /dev/null +++ b/Assets/Audio/Sfx/ZapSplat/ChainLinkFenceImpact1.mp3.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 21a10f39053eed742bc40e3d3a79d3b0 +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/Audio/Sfx/ZapSplat/ChainLinkFenceImpact2.mp3 b/Assets/Audio/Sfx/ZapSplat/ChainLinkFenceImpact2.mp3 new file mode 100644 index 0000000..eccbffa Binary files /dev/null and b/Assets/Audio/Sfx/ZapSplat/ChainLinkFenceImpact2.mp3 differ diff --git a/Assets/Audio/Sfx/ZapSplat/ChainLinkFenceImpact2.mp3.meta b/Assets/Audio/Sfx/ZapSplat/ChainLinkFenceImpact2.mp3.meta new file mode 100644 index 0000000..25aea04 --- /dev/null +++ b/Assets/Audio/Sfx/ZapSplat/ChainLinkFenceImpact2.mp3.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 730cd0a8b458ea549b2f23af563b7b36 +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/GameObjects/Prefabs/Player.prefab b/Assets/GameObjects/Prefabs/Player.prefab index 8069412..0cf8aa5 100644 --- a/Assets/GameObjects/Prefabs/Player.prefab +++ b/Assets/GameObjects/Prefabs/Player.prefab @@ -1714,6 +1714,9 @@ MonoBehaviour: BulletHitLayer: serializedVersion: 2 m_Bits: 823 + BulletPassLayer: + serializedVersion: 2 + m_Bits: 8192 Cooldown: 1 Lerpables: - {fileID: 6585337033203946896} diff --git a/Assets/GameObjects/Scenes/TestScene.unity b/Assets/GameObjects/Scenes/TestScene.unity index fb17f68..45ef53c 100644 --- a/Assets/GameObjects/Scenes/TestScene.unity +++ b/Assets/GameObjects/Scenes/TestScene.unity @@ -151,7 +151,6 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 1782355448} - - {fileID: 1901268757} - {fileID: 315509112} m_Father: {fileID: 0} m_RootOrder: 7 @@ -463,6 +462,10 @@ PrefabInstance: propertyPath: m_Name value: DeadScreen objectReference: {fileID: 0} + - target: {fileID: 5471352474105955327, guid: 118c1cf390ce96243b1b8b147ae99885, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 5752193893751936224, guid: 118c1cf390ce96243b1b8b147ae99885, type: 3} propertyPath: Crosshair value: @@ -558,6 +561,133 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 8861545984823841015, guid: 118c1cf390ce96243b1b8b147ae99885, type: 3} m_PrefabInstance: {fileID: 360197056} m_PrefabAsset: {fileID: 0} +--- !u!1 &422830293 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 422830294} + - component: {fileID: 422830295} + m_Layer: 13 + m_Name: Audio Source + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &422830294 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 422830293} + 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_Children: [] + m_Father: {fileID: 1782355448} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &422830295 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 422830293} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: -8030293084440089681, guid: ff7bf5284859d9f45a64971a67bb173a, type: 2} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 0 + 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: 1 + 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 &529416811 GameObject: m_ObjectHideFlags: 0 @@ -1444,6 +1574,10 @@ PrefabInstance: propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} + - target: {fileID: 9081539380605237274, guid: e32cf25e03a88b04d929cd6fbf906421, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: e32cf25e03a88b04d929cd6fbf906421, type: 3} --- !u!224 &816236546 stripped @@ -2595,6 +2729,7 @@ GameObject: - component: {fileID: 1782355451} - component: {fileID: 1782355450} - component: {fileID: 1782355449} + - component: {fileID: 1782355452} m_Layer: 13 m_Name: WindowSideA m_TagString: Untagged @@ -2612,7 +2747,9 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000029653306} m_LocalPosition: {x: -28, y: 3, z: 0} m_LocalScale: {x: 2, y: 2, z: 1} - m_Children: [] + m_Children: + - {fileID: 1901268757} + - {fileID: 422830294} m_Father: {fileID: 21404627} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} @@ -2678,6 +2815,22 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1782355447} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1782355452 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1782355447} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 03f421a8b121f76468bdf7a1961dcbda, type: 3} + m_Name: + m_EditorClassIdentifier: + Source: {fileID: 422830295} + Clips: + - {fileID: 8300000, guid: 21a10f39053eed742bc40e3d3a79d3b0, type: 3} + - {fileID: 8300000, guid: 730cd0a8b458ea549b2f23af563b7b36, type: 3} --- !u!1 &1901268756 GameObject: m_ObjectHideFlags: 0 @@ -2689,7 +2842,6 @@ GameObject: - component: {fileID: 1901268757} - component: {fileID: 1901268760} - component: {fileID: 1901268759} - - component: {fileID: 1901268758} m_Layer: 13 m_Name: WindowSideB m_TagString: Untagged @@ -2704,26 +2856,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1901268756} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -28, y: 3, z: 0} - m_LocalScale: {x: 2, y: 2, z: 1} + m_LocalRotation: {x: -0, y: -1, z: -0, w: 0.0000029653306} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] - m_Father: {fileID: 21404627} - m_RootOrder: 1 + m_Father: {fileID: 1782355448} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!65 &1901268758 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1901268756} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 6.1232336e-17} - m_Center: {x: 0, y: 0, z: 0} --- !u!23 &1901268759 MeshRenderer: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Audio.meta b/Assets/Scripts/Audio.meta new file mode 100644 index 0000000..65fa73e --- /dev/null +++ b/Assets/Scripts/Audio.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c5a68b9cb00447b4081c62dbe2768b50 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Audio/ImpactSound.cs b/Assets/Scripts/Audio/ImpactSound.cs new file mode 100644 index 0000000..4225835 --- /dev/null +++ b/Assets/Scripts/Audio/ImpactSound.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace NeonTea.Quakeball.Audio { + public class ImpactSound : MonoBehaviour { + public AudioSource Source; + public AudioClip[] Clips; + + public void PlayAt(Vector3 position) { + transform.position = position; + Source.PlayOneShot(GetRandomClip()); + } + + private AudioClip GetRandomClip() { + return Clips[Random.Range(0, Clips.Length)]; + } + } +} diff --git a/Assets/Scripts/Audio/ImpactSound.cs.meta b/Assets/Scripts/Audio/ImpactSound.cs.meta new file mode 100644 index 0000000..881c18a --- /dev/null +++ b/Assets/Scripts/Audio/ImpactSound.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03f421a8b121f76468bdf7a1961dcbda +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Networking/Instances/Client.cs b/Assets/Scripts/Networking/Instances/Client.cs index 4e5b564..7d3d2da 100644 --- a/Assets/Scripts/Networking/Instances/Client.cs +++ b/Assets/Scripts/Networking/Instances/Client.cs @@ -101,7 +101,6 @@ namespace NeonTea.Quakeball.Networking.Instances { } else if (packet is SpawnPckt) { SpawnPckt spawn = (SpawnPckt)packet; if (spawn.IsInitial) { - Debug.Log("Got spawn!"); if (spawn.PlayerId == LocalPlayer.Id) { HandlePlayerRespawn(spawn.PlayerId, spawn.Location); } else { diff --git a/Assets/Scripts/Players/Player.cs b/Assets/Scripts/Players/Player.cs index 515124a..0fd9d06 100644 --- a/Assets/Scripts/Players/Player.cs +++ b/Assets/Scripts/Players/Player.cs @@ -6,6 +6,7 @@ using NeonTea.Quakeball.Networking.Instances; using NeonTea.Quakeball.Combat; using NeonTea.Quakeball.Interface; using NeonTea.Quakeball.Animation; +using NeonTea.Quakeball.Audio; namespace NeonTea.Quakeball.Players { /// The central glue class for players (both local and remote). @@ -31,6 +32,7 @@ namespace NeonTea.Quakeball.Players { public Transform CameraRoot; public Transform BulletSourcePoint; public LayerMask BulletHitLayer; + public LayerMask BulletPassLayer; public float Cooldown; [Header("Visuals")] @@ -165,7 +167,7 @@ namespace NeonTea.Quakeball.Players { Vector3 From = CameraRoot.position; Vector3 Direction = CameraRoot.forward; - RaycastHit[] Hits = Physics.RaycastAll(From, Direction, 1000f, BulletHitLayer); + RaycastHit[] Hits = Physics.RaycastAll(From, Direction, 1000f, BulletHitLayer | BulletPassLayer); System.Array.Sort(Hits, (a, b) => { return a.distance.CompareTo(b.distance); }); foreach (RaycastHit Hit in Hits) { ShotDelta = Hit.point - GunPoint; @@ -173,6 +175,13 @@ namespace NeonTea.Quakeball.Players { if (Player == this) { continue; } + if (((1 << Hit.collider.gameObject.layer) & BulletPassLayer) != 0) { + ImpactSound ImpactSound = Hit.collider.GetComponent(); + if (ImpactSound != null) { + ImpactSound.PlayAt(Hit.point); + } + continue; + } if (Player != null) { if (Net.Singleton.Instance is Server) { ((Server)Net.Singleton.Instance).SendHit(NetId, Player.NetId);