diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/Brother_pink.prefab b/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/Brother_pink.prefab index 7bfcf389..d62876ed 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/Brother_pink.prefab +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/Brother_pink.prefab @@ -449,9 +449,6 @@ GameObject: - component: {fileID: 1100708945145624655} - component: {fileID: 2191675667085566828} - component: {fileID: 2607884839347368726} - - component: {fileID: 5073600136309842042} - - component: {fileID: 6629287981537804912} - - component: {fileID: 2000284772114145180} - component: {fileID: 3714690223456412398} m_Layer: 0 m_Name: Brother_pink @@ -471,6 +468,8 @@ Transform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: -1, y: 1, z: 1} m_Children: + - {fileID: 4824076186000611700} + - {fileID: 153722296424896321} - {fileID: 5922580241095183707} - {fileID: 7148850923609232237} - {fileID: 4805827205469695913} @@ -583,82 +582,11 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 + itemHitCollider: {fileID: 1910479924050921696} + obstacleHitCollider: {fileID: 6416777416856475808} level1: {fileID: 775281020594132328} level2: {fileID: 7545235244005095164} level3: {fileID: 3741799588110921262} ---- !u!50 &5073600136309842042 -Rigidbody2D: - serializedVersion: 4 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088131638166771230} - m_BodyType: 1 - m_Simulated: 1 - m_UseFullKinematicContacts: 0 - m_UseAutoMass: 0 - m_Mass: 1 - m_LinearDrag: 0 - m_AngularDrag: 0.05 - m_GravityScale: 1 - m_Material: {fileID: 0} - m_Interpolate: 0 - m_SleepingMode: 1 - m_CollisionDetection: 0 - m_Constraints: 4 ---- !u!61 &6629287981537804912 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088131638166771230} - m_Enabled: 1 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: -0.7984886, y: -0.13052177} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0, y: 0} - oldSize: {x: 0, y: 0} - newSize: {x: 0, y: 0} - adaptiveTilingThreshold: 0 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 0.6007557, y: 2.4587784} - m_EdgeRadius: 0 ---- !u!61 &2000284772114145180 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088131638166771230} - m_Enabled: 1 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: -0.40692186, y: 1.5892982} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0, y: 0} - oldSize: {x: 0, y: 0} - newSize: {x: 0, y: 0} - adaptiveTilingThreshold: 0 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 1.8138437, y: 0.61611176} - m_EdgeRadius: 0 --- !u!114 &3714690223456412398 MonoBehaviour: m_ObjectHideFlags: 0 @@ -714,7 +642,7 @@ Transform: m_Children: - {fileID: 1442847354306885155} m_Father: {fileID: 4931350312200274921} - m_RootOrder: 0 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1139373376122236801 GameObject: @@ -1073,6 +1001,85 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1910479924050921696 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 153722296424896321} + - component: {fileID: 7169825698633924356} + - component: {fileID: 4174443791224946775} + m_Layer: 0 + m_Name: ColliderForItem + m_TagString: PlayerItem + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &153722296424896321 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1910479924050921696} + 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: 4931350312200274921} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!50 &7169825698633924356 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1910479924050921696} + m_BodyType: 1 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 4 +--- !u!61 &4174443791224946775 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1910479924050921696} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0.45379126, y: 0.056894302} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 3.8890555, y: 3.6343899} + m_EdgeRadius: 0 --- !u!1 &2009614675938907597 GameObject: m_ObjectHideFlags: 0 @@ -6838,6 +6845,112 @@ Transform: m_Father: {fileID: 5922580241095183707} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6416777416856475808 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4824076186000611700} + - component: {fileID: 2159318030924563047} + - component: {fileID: 6162729010398450922} + - component: {fileID: 8147725308903606480} + m_Layer: 0 + m_Name: ColliderForObstacle + m_TagString: PlayerObstacle + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4824076186000611700 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6416777416856475808} + 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: 4931350312200274921} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!50 &2159318030924563047 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6416777416856475808} + m_BodyType: 1 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 4 +--- !u!61 &6162729010398450922 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6416777416856475808} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: -0.7984886, y: -0.13052177} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 0.6007557, y: 2.4587784} + m_EdgeRadius: 0 +--- !u!61 &8147725308903606480 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6416777416856475808} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: -0.40692186, y: 1.5892982} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1.8138437, y: 0.61611176} + m_EdgeRadius: 0 --- !u!1 &6670228377376855475 GameObject: m_ObjectHideFlags: 0 @@ -7210,7 +7323,7 @@ Transform: m_LocalScale: {x: 1.0711814, y: 1.0039824, z: 0.8008833} m_Children: [] m_Father: {fileID: 4931350312200274921} - m_RootOrder: 1 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &8471581390703676713 SpriteRenderer: @@ -7574,7 +7687,7 @@ Transform: m_Children: - {fileID: 2733877766456668764} m_Father: {fileID: 4931350312200274921} - m_RootOrder: 3 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!198 &3049753492980404027 ParticleSystem: @@ -12481,7 +12594,7 @@ PrefabInstance: - target: {fileID: 4446879967393919678, guid: 43c94bfac7a232f4fa8c039b03c4de02, type: 3} propertyPath: m_RootOrder - value: 4 + value: 6 objectReference: {fileID: 0} - target: {fileID: 4446879967393919678, guid: 43c94bfac7a232f4fa8c039b03c4de02, type: 3} @@ -12661,7 +12774,7 @@ PrefabInstance: - target: {fileID: 5241948539216047732, guid: 6fd79f86d9650b04d9580c9b3838be34, type: 3} propertyPath: m_RootOrder - value: 2 + value: 4 objectReference: {fileID: 0} - target: {fileID: 5241948539216047732, guid: 6fd79f86d9650b04d9580c9b3838be34, type: 3} @@ -12741,7 +12854,7 @@ PrefabInstance: - target: {fileID: 4446879967393919678, guid: 43c94bfac7a232f4fa8c039b03c4de02, type: 3} propertyPath: m_RootOrder - value: 5 + value: 7 objectReference: {fileID: 0} - target: {fileID: 4446879967393919678, guid: 43c94bfac7a232f4fa8c039b03c4de02, type: 3} diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs index a3317911..a4fa7e2e 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs @@ -231,10 +231,27 @@ namespace MyGame.Scenes.MiniGame.Scripts } }).AddTo(this); - playerTransform.OnTriggerEnter2DAsObservable().Where(_ => state.Value == GameState.Play).Subscribe(x => + player.OnHitItem.Where(_ => state.Value == GameState.Play).Subscribe(x => { - var item = x.GetComponent(); - if (item is null) + if (!x.TryGetComponent(out var item)) + { + return; + } + if (player.IsHit) + { + return; + } + if (item.ItemType == StageItem.Type.Item1) + { + item.Effect(); + scoreCount.Value += item.Point; + player.AddCount(); + x.enabled = false; + } + }).AddTo(this); + player.OnHitObstacle.Where(_ => state.Value == GameState.Play).Subscribe(x => + { + if (!x.TryGetComponent(out var item)) { return; } @@ -255,24 +272,14 @@ namespace MyGame.Scenes.MiniGame.Scripts // } } #endif - x.enabled = false; - if (player.IsHit) { return; } - switch (item.ItemType) + if (item.ItemType == StageItem.Type.Obstacle) { - case StageItem.Type.Item1: - item.Effect(); - scoreCount.Value += item.Point; - player.AddCount(); - break; - case StageItem.Type.Obstacle: - player.Hit(); - break; - default: - throw new ArgumentOutOfRangeException(); + player.Hit(); + x.enabled = false; } }).AddTo(this); } diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs index 2fbf7291..b687a345 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs @@ -13,6 +13,8 @@ namespace MyGame.Scenes.MiniGame.Scripts [SerializeField] private float hitWaitTime = 1f; [SerializeField] private AnimationCurve jumpAnimationCurve; [SerializeField] private AnimationCurve hitAnimationCurve; + [SerializeField] private GameObject itemHitCollider; + [SerializeField] private GameObject obstacleHitCollider; [SerializeField] private GameObject level1; [SerializeField] private GameObject level2; [SerializeField] private GameObject level3; @@ -25,6 +27,8 @@ namespace MyGame.Scenes.MiniGame.Scripts private Coroutine jumpCoroutine; private Vector3 basePos; private int count; + public IObservable OnHitItem => itemHitCollider.OnTriggerEnter2DAsObservable().TakeUntilDestroy(this); + public IObservable OnHitObstacle => obstacleHitCollider.OnTriggerEnter2DAsObservable().TakeUntilDestroy(this); private void Start() {