From aeea9359af8f6c3e6495e4754fcae710565398f3 Mon Sep 17 00:00:00 2001 From: Toomas Tamm Date: Sun, 28 Mar 2021 19:02:41 +0300 Subject: [PATCH] Fix Vive controllers, add repeating game loop to breakout --- .../Doors/Indoor Door Right.prefab | 2 +- .../Objects (Prefabs)/XR/Breakout/Ball.prefab | 2 +- .../XR/Breakout/Paddle.prefab | 6 +- Assets/Samples.meta | 8 - Assets/Scenes/Main_scene.unity | 228 +++++++++++++++--- Assets/Scripts/Breakout/BreakableCube.cs | 17 +- Assets/Scripts/Breakout/BreakoutBall.cs | 9 + Assets/Scripts/Breakout/BreakoutManager.cs | 87 ++++--- .../Scripts/Breakout/DestroyBallForcefield.cs | 16 ++ .../Breakout/DestroyBallForcefield.cs.meta | 11 + Assets/Scripts/Events.cs | 11 +- .../{Samples => }/XR Interaction Toolkit.meta | 0 .../XR Interaction Toolkit/1.0.0-pre.1.meta | 0 .../1.0.0-pre.1/Default Input Actions.meta | 0 .../Default Input Actions/.sample.json | 0 .../XRI Default Continuous Move.preset | 0 .../XRI Default Continuous Move.preset.meta | 0 .../XRI Default Continuous Turn.preset | 0 .../XRI Default Continuous Turn.preset.meta | 0 .../XRI Default Input Actions.inputactions | 2 +- ...RI Default Input Actions.inputactions.meta | 0 .../XRI Default Left Controller.preset | 0 .../XRI Default Left Controller.preset.meta | 0 .../XRI Default Right Controller.preset | 0 .../XRI Default Right Controller.preset.meta | 0 .../XRI Default Snap Turn.preset | 0 .../XRI Default Snap Turn.preset.meta | 0 ProjectSettings/DynamicsManager.asset | 2 +- ProjectSettings/TagManager.asset | 4 +- 29 files changed, 319 insertions(+), 86 deletions(-) delete mode 100644 Assets/Samples.meta create mode 100644 Assets/Scripts/Breakout/DestroyBallForcefield.cs create mode 100644 Assets/Scripts/Breakout/DestroyBallForcefield.cs.meta rename Assets/{Samples => }/XR Interaction Toolkit.meta (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1.meta (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions.meta (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/.sample.json (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Move.preset (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Move.preset.meta (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Turn.preset (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Turn.preset.meta (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Input Actions.inputactions (99%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Input Actions.inputactions.meta (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Left Controller.preset (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Left Controller.preset.meta (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Right Controller.preset (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Right Controller.preset.meta (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Snap Turn.preset (100%) rename Assets/{Samples => }/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Snap Turn.preset.meta (100%) diff --git a/Assets/Objects (Prefabs)/Doors/Indoor Door Right.prefab b/Assets/Objects (Prefabs)/Doors/Indoor Door Right.prefab index 58f71369..870ac88f 100644 --- a/Assets/Objects (Prefabs)/Doors/Indoor Door Right.prefab +++ b/Assets/Objects (Prefabs)/Doors/Indoor Door Right.prefab @@ -354,7 +354,7 @@ GameObject: - component: {fileID: 6830999020486091146} - component: {fileID: 8579609115951157415} - component: {fileID: 8606222079484180125} - m_Layer: 0 + m_Layer: 31 m_Name: VR-door m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Objects (Prefabs)/XR/Breakout/Ball.prefab b/Assets/Objects (Prefabs)/XR/Breakout/Ball.prefab index 05869155..a28a6ef6 100644 --- a/Assets/Objects (Prefabs)/XR/Breakout/Ball.prefab +++ b/Assets/Objects (Prefabs)/XR/Breakout/Ball.prefab @@ -14,7 +14,7 @@ GameObject: - component: {fileID: 8722459144436683749} - component: {fileID: 8722459144436683745} - component: {fileID: 8722459144436683744} - m_Layer: 0 + m_Layer: 19 m_Name: Ball m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Objects (Prefabs)/XR/Breakout/Paddle.prefab b/Assets/Objects (Prefabs)/XR/Breakout/Paddle.prefab index f782c928..ac901628 100644 --- a/Assets/Objects (Prefabs)/XR/Breakout/Paddle.prefab +++ b/Assets/Objects (Prefabs)/XR/Breakout/Paddle.prefab @@ -29,7 +29,7 @@ Transform: m_GameObject: {fileID: 683641809410680648} m_LocalRotation: {x: 0.5, y: 0.5, z: -0.5, w: 0.5} m_LocalPosition: {x: 0.050354015, y: 2.664, z: -0.050353996} - m_LocalScale: {x: 10, y: 0.4999999, z: 5} + m_LocalScale: {x: 12, y: 0.5, z: 5} m_Children: [] m_Father: {fileID: 683641811316564866} m_RootOrder: 0 @@ -133,7 +133,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 683641810726029905} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 176.99866, y: -15.076772, z: 23.519966} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: @@ -171,7 +171,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 683641811316564867} m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} - m_LocalPosition: {x: -153.767, y: 19.684, z: -23.217} + m_LocalPosition: {x: -153.767, y: 19.684, z: -23.389} m_LocalScale: {x: 0.02, y: 0.15, z: 0.02} m_Children: - {fileID: 683641809410680631} diff --git a/Assets/Samples.meta b/Assets/Samples.meta deleted file mode 100644 index ecc45c7b..00000000 --- a/Assets/Samples.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b10b65f998c66784c914dc3f22b0ca09 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scenes/Main_scene.unity b/Assets/Scenes/Main_scene.unity index d861ec9f..e09525f7 100644 --- a/Assets/Scenes/Main_scene.unity +++ b/Assets/Scenes/Main_scene.unity @@ -73196,7 +73196,7 @@ Transform: - {fileID: 34859688} - {fileID: 861502100} m_Father: {fileID: 1772291665} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &278670420 PrefabInstance: @@ -138466,6 +138466,114 @@ Transform: type: 3} m_PrefabInstance: {fileID: 519196612} m_PrefabAsset: {fileID: 0} +--- !u!1 &520108848 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 520108849} + - component: {fileID: 520108853} + - component: {fileID: 520108852} + - component: {fileID: 520108851} + - component: {fileID: 520108850} + m_Layer: 20 + m_Name: Wall Back (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &520108849 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520108848} + m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} + m_LocalPosition: {x: 22.201, y: 4.547095, z: -0.23943138} + m_LocalScale: {x: 2, y: 2, z: 0.10000002} + m_Children: [] + m_Father: {fileID: 615924707} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!114 &520108850 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520108848} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9028d8e31a1966540aff16d72263c97d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!65 &520108851 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520108848} + m_Material: {fileID: 13400000, guid: 2d5b273ec9081ca4684e185030431ebf, type: 2} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &520108852 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520108848} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9e16357c77c1b754c9c1244356e3682f, type: 2} + 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &520108853 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520108848} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1001 &520669751 PrefabInstance: m_ObjectHideFlags: 0 @@ -165546,8 +165654,9 @@ Transform: - {fileID: 985893360} - {fileID: 1090764316} - {fileID: 747981557} + - {fileID: 520108849} m_Father: {fileID: 1772291665} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &617173121 GameObject: @@ -222247,18 +222356,18 @@ MonoBehaviour: m_AudioClipForOnHoverEntered: {fileID: 0} m_PlayAudioClipOnHoverExited: 0 m_AudioClipForOnHoverExited: {fileID: 0} - m_PlayHapticsOnSelectEntered: 0 - m_HapticSelectEnterIntensity: 0 - m_HapticSelectEnterDuration: 0 - m_PlayHapticsOnSelectExited: 0 - m_HapticSelectExitIntensity: 0 - m_HapticSelectExitDuration: 0 - m_PlayHapticsOnHoverEntered: 0 - m_HapticHoverEnterIntensity: 0 - m_HapticHoverEnterDuration: 0 - m_PlayHapticsOnHoverExited: 0 - m_HapticHoverExitIntensity: 0 - m_HapticHoverExitDuration: 0 + m_PlayHapticsOnSelectEntered: 1 + m_HapticSelectEnterIntensity: 0.5 + m_HapticSelectEnterDuration: 0.2 + m_PlayHapticsOnSelectExited: 1 + m_HapticSelectExitIntensity: 0.5 + m_HapticSelectExitDuration: 0.2 + m_PlayHapticsOnHoverEntered: 1 + m_HapticHoverEnterIntensity: 0.1 + m_HapticHoverEnterDuration: 0.1 + m_PlayHapticsOnHoverExited: 1 + m_HapticHoverExitIntensity: 0.1 + m_HapticHoverExitDuration: 0.1 --- !u!114 &835737638 MonoBehaviour: m_ObjectHideFlags: 0 @@ -238653,7 +238762,7 @@ PrefabInstance: - target: {fileID: 683641810726029904, guid: b3aa1fd769428e5478861349062a763b, type: 3} propertyPath: m_RootOrder - value: 2 + value: 3 objectReference: {fileID: 0} - target: {fileID: 683641810726029904, guid: b3aa1fd769428e5478861349062a763b, type: 3} @@ -238710,11 +238819,6 @@ PrefabInstance: propertyPath: m_Name value: Paddle (1) objectReference: {fileID: 0} - - target: {fileID: 683641811316564866, guid: b3aa1fd769428e5478861349062a763b, - type: 3} - propertyPath: m_LocalPosition.z - value: -23.389 - objectReference: {fileID: 0} - target: {fileID: 683641811316564878, guid: b3aa1fd769428e5478861349062a763b, type: 3} propertyPath: m_InteractionManager @@ -289728,6 +289832,7 @@ GameObject: - component: {fileID: 1090764315} - component: {fileID: 1090764314} - component: {fileID: 1090764313} + - component: {fileID: 1090764317} m_Layer: 7 m_Name: Wall Back m_TagString: Untagged @@ -289767,7 +289872,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: f60634ab3acc0b04fa94e2089ebe467c, type: 2} + - {fileID: 2100000, guid: 9e16357c77c1b754c9c1244356e3682f, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -289811,6 +289916,18 @@ Transform: m_Father: {fileID: 615924707} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!114 &1090764317 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1090764312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9acb76ffa96cc784e9f873c1c22c695c, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &1091142290 PrefabInstance: m_ObjectHideFlags: 0 @@ -315530,6 +315647,11 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 89.99999 objectReference: {fileID: 0} + - target: {fileID: 7641886289678632063, guid: c7190c7182dc47944b0a50b8b43c2a0a, + type: 3} + propertyPath: m_Layer + value: 31 + objectReference: {fileID: 0} - target: {fileID: 8606222079484180125, guid: c7190c7182dc47944b0a50b8b43c2a0a, type: 3} propertyPath: m_ConnectedAnchor.x @@ -392206,18 +392328,18 @@ MonoBehaviour: m_AudioClipForOnHoverEntered: {fileID: 0} m_PlayAudioClipOnHoverExited: 0 m_AudioClipForOnHoverExited: {fileID: 0} - m_PlayHapticsOnSelectEntered: 0 - m_HapticSelectEnterIntensity: 0 - m_HapticSelectEnterDuration: 0 - m_PlayHapticsOnSelectExited: 0 - m_HapticSelectExitIntensity: 0 - m_HapticSelectExitDuration: 0 - m_PlayHapticsOnHoverEntered: 0 - m_HapticHoverEnterIntensity: 0 - m_HapticHoverEnterDuration: 0 - m_PlayHapticsOnHoverExited: 0 - m_HapticHoverExitIntensity: 0 - m_HapticHoverExitDuration: 0 + m_PlayHapticsOnSelectEntered: 1 + m_HapticSelectEnterIntensity: 0.5 + m_HapticSelectEnterDuration: 0.2 + m_PlayHapticsOnSelectExited: 1 + m_HapticSelectExitIntensity: 0.5 + m_HapticSelectExitDuration: 0.2 + m_PlayHapticsOnHoverEntered: 1 + m_HapticHoverEnterIntensity: 0.1 + m_HapticHoverEnterDuration: 0.1 + m_PlayHapticsOnHoverExited: 1 + m_HapticHoverExitIntensity: 0.1 + m_HapticHoverExitDuration: 0.1 --- !u!114 &1463275262 MonoBehaviour: m_ObjectHideFlags: 0 @@ -473342,6 +473464,7 @@ Transform: m_LocalPosition: {x: -49.554653, y: 0.94090503, z: -19.973568} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 1237042454827495307} - {fileID: 1027123931} - {fileID: 968308519} - {fileID: 897260790} @@ -473366,6 +473489,9 @@ MonoBehaviour: type: 3} extraBallBreakablePrefab: {fileID: 4446013279578327973, guid: 5353b5457960d5644a286e6f8f1bed7a, type: 3} + startBallSpawnPoint: {fileID: 1237042454827495303} + ballPrefab: {fileID: 8722459144436683754, guid: c4c82be1460eebd429189ea1df531212, + type: 3} spawnPoints: - {fileID: 1634963956} - {fileID: 1266635511} @@ -575504,7 +575630,7 @@ PrefabInstance: - target: {fileID: 683641810726029904, guid: b3aa1fd769428e5478861349062a763b, type: 3} propertyPath: m_RootOrder - value: 1 + value: 2 objectReference: {fileID: 0} - target: {fileID: 683641810726029904, guid: b3aa1fd769428e5478861349062a763b, type: 3} @@ -575800,6 +575926,36 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1237042454827495303 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1237042454827495307} + m_Layer: 19 + m_Name: StartBallSpawnPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1237042454827495307 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1237042454827495303} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 22.764, y: 4.44, z: -0.345} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_Children: [] + m_Father: {fileID: 1772291665} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1286284988653536608 PrefabInstance: m_ObjectHideFlags: 0 @@ -607443,12 +607599,12 @@ PrefabInstance: - target: {fileID: 8722459144436683750, guid: c4c82be1460eebd429189ea1df531212, type: 3} propertyPath: m_RootOrder - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8722459144436683750, guid: c4c82be1460eebd429189ea1df531212, type: 3} propertyPath: m_LocalPosition.x - value: 21.92 + value: 22.764 objectReference: {fileID: 0} - target: {fileID: 8722459144436683750, guid: c4c82be1460eebd429189ea1df531212, type: 3} diff --git a/Assets/Scripts/Breakout/BreakableCube.cs b/Assets/Scripts/Breakout/BreakableCube.cs index 33abc1fb..745b1209 100644 --- a/Assets/Scripts/Breakout/BreakableCube.cs +++ b/Assets/Scripts/Breakout/BreakableCube.cs @@ -19,14 +19,19 @@ namespace Breakout private void Awake() { - Events.OnBreakoutEndGame += DestroyCube; + Events.OnBreakoutEndGame += EventDestroyCube; Events.OnBreakoutSetSpeed += SetSpeed; _hasSpawnedBall = false; } + private void EventDestroyCube() + { + DestroyCube(false); + } + private void OnDestroy() { - Events.OnBreakoutEndGame -= DestroyCube; + Events.OnBreakoutEndGame -= EventDestroyCube; Events.OnBreakoutSetSpeed -= SetSpeed; } @@ -40,13 +45,13 @@ namespace Breakout BreakoutBall ball = other.gameObject.GetComponent(); if (ball == null) return; - DestroyCube(); + DestroyCube(true); } - public virtual void DestroyCube() + private void DestroyCube(bool allowBallSpawn) { - if (spawnBall & !_hasSpawnedBall) + if (spawnBall & !_hasSpawnedBall & allowBallSpawn) { _hasSpawnedBall = true; var ball = Instantiate(ballPrefab, transform.position, Quaternion.identity, null); @@ -57,6 +62,8 @@ namespace Breakout Random.Range(-2.0f, 2.0f), Random.Range(-2.0f, 2.0f) )); + + Events.AddBalls(); } speed.x = 0; diff --git a/Assets/Scripts/Breakout/BreakoutBall.cs b/Assets/Scripts/Breakout/BreakoutBall.cs index 8c303b4b..a819d7d0 100644 --- a/Assets/Scripts/Breakout/BreakoutBall.cs +++ b/Assets/Scripts/Breakout/BreakoutBall.cs @@ -36,5 +36,14 @@ namespace Breakout { Destroy(gameObject); } + + private void OnCollisionEnter(Collision other) + { + KinematicSpeedTransfer kst = other.gameObject.GetComponent(); + + if (kst == null) return; + + Events.BreakoutStartGame(); + } } } \ No newline at end of file diff --git a/Assets/Scripts/Breakout/BreakoutManager.cs b/Assets/Scripts/Breakout/BreakoutManager.cs index 4ac656da..5e7a8382 100644 --- a/Assets/Scripts/Breakout/BreakoutManager.cs +++ b/Assets/Scripts/Breakout/BreakoutManager.cs @@ -8,49 +8,55 @@ using Random = UnityEngine.Random; public class BreakoutManager : MonoBehaviour { - private static BreakoutManager _instance; - public static BreakoutManager Instance { get { return _instance; } } - public GameObject defaultBreakablePrefab; public GameObject extraBallBreakablePrefab; + public GameObject startBallSpawnPoint; + public GameObject ballPrefab; + public List spawnPoints; public float timeBetweenRows = 5f; public float startRowSpeed = 0.15f; - private float speedIncreasePerRow = 0.01f; + //private float _speedIncreasePerRow = 0.01f; public float extraBallBreakableChance = 0.1f; - private float nextRowTime; - private float currentRowSpeed; + private float _nextRowTime; + private float _currentRowSpeed; - private bool gameStarted; + private int _ballCount; + + private bool _gameStarted; private void Awake() { - if (_instance != null && _instance != this) - { - Destroy(gameObject); - } else { - _instance = this; - } - - gameStarted = true; + _gameStarted = false; + _ballCount = 1; + _nextRowTime = Time.time; + _currentRowSpeed = startRowSpeed; + Events.OnBreakoutEndGame += EndGame; - nextRowTime = Time.time; - currentRowSpeed = startRowSpeed; + Events.OnBreakoutStartGame += StartGame; + + Events.OnBreakoutReduceBalls += ReduceBalls; + Events.OnBreakoutAddBalls += AddBalls; } void OnDestroy() { Events.OnBreakoutEndGame -= EndGame; + Events.OnBreakoutStartGame -= StartGame; + + Events.OnBreakoutReduceBalls -= ReduceBalls; + Events.OnBreakoutAddBalls -= AddBalls; + } void Update() { - if (!gameStarted) return; + if (!_gameStarted) return; - if (nextRowTime < Time.time) + if (_nextRowTime < Time.time) { SpawnRow(); } @@ -58,24 +64,35 @@ public class BreakoutManager : MonoBehaviour void StartGame() { - gameStarted = true; - SpawnRow(); + if (_gameStarted) return; + _gameStarted = true; + _nextRowTime = Time.time; + } + + private void SpawnBall() + { + Instantiate(ballPrefab, startBallSpawnPoint.transform.position, Quaternion.identity, null); + _ballCount += 1; } void EndGame() { - gameStarted = false; + if (!_gameStarted) return; + _gameStarted = false; + + SpawnBall(); + _ballCount = 1; } void SpawnRow() { - nextRowTime = Time.time + timeBetweenRows; + _nextRowTime = Time.time + timeBetweenRows; //currentRowSpeed += speedIncreasePerRow; foreach (var point in spawnPoints) { GameObject box; - + if (Random.value <= extraBallBreakableChance) { box = Instantiate(extraBallBreakablePrefab, point.position, Quaternion.identity, null); @@ -87,9 +104,25 @@ public class BreakoutManager : MonoBehaviour var cube = box.GetComponent(); - cube.speed.x = currentRowSpeed; + cube.speed.x = _currentRowSpeed; } - - Events.BreakoutSetSpeed(currentRowSpeed); + + Events.BreakoutSetSpeed(_currentRowSpeed); + + } + + void ReduceBalls() + { + _ballCount -= 1; + + if (_ballCount <= 0) + { + Events.BreakoutEndGame(); + } + } + + void AddBalls() + { + _ballCount += 1; } } diff --git a/Assets/Scripts/Breakout/DestroyBallForcefield.cs b/Assets/Scripts/Breakout/DestroyBallForcefield.cs new file mode 100644 index 00000000..91335828 --- /dev/null +++ b/Assets/Scripts/Breakout/DestroyBallForcefield.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using Breakout; +using UnityEngine; + +public class DestroyBallForcefield : MonoBehaviour +{ + private void OnCollisionEnter(Collision other) + { + BreakoutBall ball = other.gameObject.GetComponent(); + + if (ball == null) return; + Events.ReduceBalls(); + Destroy(ball.gameObject); + } +} diff --git a/Assets/Scripts/Breakout/DestroyBallForcefield.cs.meta b/Assets/Scripts/Breakout/DestroyBallForcefield.cs.meta new file mode 100644 index 00000000..21a78132 --- /dev/null +++ b/Assets/Scripts/Breakout/DestroyBallForcefield.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9acb76ffa96cc784e9f873c1c22c695c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Events.cs b/Assets/Scripts/Events.cs index 2efeb73e..590544df 100644 --- a/Assets/Scripts/Events.cs +++ b/Assets/Scripts/Events.cs @@ -4,8 +4,17 @@ public static class Events { public static event Action OnBreakoutEndGame; public static void BreakoutEndGame() => OnBreakoutEndGame?.Invoke(); - + public static event Action OnBreakoutStartGame; + public static void BreakoutStartGame() => OnBreakoutStartGame?.Invoke(); + public static event Action OnBreakoutSetSpeed; public static void BreakoutSetSpeed(float speed) => OnBreakoutSetSpeed?.Invoke(speed); + public static event Action OnBreakoutReduceBalls; + public static void ReduceBalls() => OnBreakoutReduceBalls?.Invoke(); + + public static event Action OnBreakoutAddBalls; + public static void AddBalls() => OnBreakoutAddBalls?.Invoke(); + + } diff --git a/Assets/Samples/XR Interaction Toolkit.meta b/Assets/XR Interaction Toolkit.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit.meta rename to Assets/XR Interaction Toolkit.meta diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1.meta b/Assets/XR Interaction Toolkit/1.0.0-pre.1.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1.meta rename to Assets/XR Interaction Toolkit/1.0.0-pre.1.meta diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions.meta b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions.meta rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions.meta diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/.sample.json b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/.sample.json similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/.sample.json rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/.sample.json diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Move.preset b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Move.preset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Move.preset rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Move.preset diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Move.preset.meta b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Move.preset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Move.preset.meta rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Move.preset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Turn.preset b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Turn.preset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Turn.preset rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Turn.preset diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Turn.preset.meta b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Turn.preset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Turn.preset.meta rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Continuous Turn.preset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Input Actions.inputactions b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Input Actions.inputactions similarity index 99% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Input Actions.inputactions rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Input Actions.inputactions index 574bf8d2..94e18432 100644 --- a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Input Actions.inputactions +++ b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Input Actions.inputactions @@ -424,7 +424,7 @@ { "name": "", "id": "20496338-aab2-43d6-bbe3-4ebe5b229c1f", - "path": "{RightHand}/triggerPressed", + "path": "{LeftHand}/triggerPressed", "interactions": "", "processors": "", "groups": "Generic XR Controller", diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Input Actions.inputactions.meta b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Input Actions.inputactions.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Input Actions.inputactions.meta rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Input Actions.inputactions.meta diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Left Controller.preset b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Left Controller.preset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Left Controller.preset rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Left Controller.preset diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Left Controller.preset.meta b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Left Controller.preset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Left Controller.preset.meta rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Left Controller.preset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Right Controller.preset b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Right Controller.preset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Right Controller.preset rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Right Controller.preset diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Right Controller.preset.meta b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Right Controller.preset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Right Controller.preset.meta rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Right Controller.preset.meta diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Snap Turn.preset b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Snap Turn.preset similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Snap Turn.preset rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Snap Turn.preset diff --git a/Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Snap Turn.preset.meta b/Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Snap Turn.preset.meta similarity index 100% rename from Assets/Samples/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Snap Turn.preset.meta rename to Assets/XR Interaction Toolkit/1.0.0-pre.1/Default Input Actions/XRI Default Snap Turn.preset.meta diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset index df00438f..681e677b 100644 --- a/ProjectSettings/DynamicsManager.asset +++ b/ProjectSettings/DynamicsManager.asset @@ -18,7 +18,7 @@ PhysicsManager: m_ClothInterCollisionDistance: 0 m_ClothInterCollisionStiffness: 0 m_ContactsGeneration: 1 - m_LayerCollisionMatrix: ffffff7fffffff7fffffffffffffffffffffff7fffffff7fffffff7f7fffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffffffffffff7fffffffffffffff7fffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ca0faff + m_LayerCollisionMatrix: ffffff7fffffff7fffffffffffffffffffffff7fffffff7fffffff7f7fffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffffffffffff7fffffffffffffff7fffffffffffffff7fffffeffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ca0faff m_AutoSimulation: 1 m_AutoSyncTransforms: 0 m_ReuseCollisionCallbacks: 1 diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 60ac5270..f0cb8fb5 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -24,8 +24,8 @@ TagManager: - EditorOnly - - Lights - - - - + - Ball + - Ignore Ball - - -