From 02fa1b8161153ca99d8bbd4981b04319ce7dcb0a Mon Sep 17 00:00:00 2001 From: kimura Date: Thu, 21 Jul 2022 17:35:09 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E7=A9=B4=E3=81=AE=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MiniGame/Prefabs/Obstacle hole.prefab | 227 +++++++++++++----- .../Scenes/MiniGame/Scripts/GameManager.cs | 26 +- .../Scenes/MiniGame/Scripts/StageItem.cs | 5 +- 3 files changed, 192 insertions(+), 66 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/Obstacle hole.prefab b/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/Obstacle hole.prefab index ff8a96a6..6b67ad51 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/Obstacle hole.prefab +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/Obstacle hole.prefab @@ -336,6 +336,80 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &2116348896259355144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1534764298133588176} + - component: {fileID: 1099241547759812047} + - component: {fileID: 7579635455155827063} + m_Layer: 0 + m_Name: WallCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1534764298133588176 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2116348896259355144} + 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: 6547169326961555051} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1099241547759812047 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2116348896259355144} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b62a13975f3446e1b15bf182305ce742, type: 3} + m_Name: + m_EditorClassIdentifier: + itemType: 3 + point: 0 + effect: {fileID: 0} +--- !u!61 &7579635455155827063 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2116348896259355144} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 2.464157, y: -0.29294157} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 0.56, y: 0.56} + newSize: {x: 1.5, y: 1.5} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1.7018661, y: 6.5957174} + m_EdgeRadius: 0 --- !u!1 &3506260383647136063 GameObject: m_ObjectHideFlags: 0 @@ -1596,6 +1670,80 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &9202194284233474589 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2593939739011402922} + - component: {fileID: 5868678615845785858} + - component: {fileID: 6483093989930334763} + m_Layer: 0 + m_Name: HoleCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2593939739011402922 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9202194284233474589} + 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: 6547169326961555051} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5868678615845785858 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9202194284233474589} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b62a13975f3446e1b15bf182305ce742, type: 3} + m_Name: + m_EditorClassIdentifier: + itemType: 2 + point: 0 + effect: {fileID: 0} +--- !u!61 &6483093989930334763 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9202194284233474589} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: -0.30281544, y: 3.0435905} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 0.56, y: 0.56} + newSize: {x: 1.5, y: 1.5} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 3.8188686, y: 0.64767385} + m_EdgeRadius: 0 --- !u!1001 &4896317741957177885 PrefabInstance: m_ObjectHideFlags: 0 @@ -1613,20 +1761,35 @@ PrefabInstance: propertyPath: m_Name value: Obstacle hole objectReference: {fileID: 0} + - target: {fileID: 4498234376221693369, guid: b82d5b841abe54f95aee9a8a5a023f6a, + type: 3} + propertyPath: m_Name + value: HitCollider + objectReference: {fileID: 0} - target: {fileID: 4498234376221693374, guid: b82d5b841abe54f95aee9a8a5a023f6a, type: 3} propertyPath: m_Size.x - value: 3 + value: 4.9299707 objectReference: {fileID: 0} - target: {fileID: 4498234376221693374, guid: b82d5b841abe54f95aee9a8a5a023f6a, type: 3} propertyPath: m_Size.y - value: 3 + value: 1.2895794 objectReference: {fileID: 0} - target: {fileID: 4498234376221693374, guid: b82d5b841abe54f95aee9a8a5a023f6a, type: 3} propertyPath: m_Enabled - value: 0 + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4498234376221693374, guid: b82d5b841abe54f95aee9a8a5a023f6a, + type: 3} + propertyPath: m_Offset.x + value: -0.022976398 + objectReference: {fileID: 0} + - target: {fileID: 4498234376221693374, guid: b82d5b841abe54f95aee9a8a5a023f6a, + type: 3} + propertyPath: m_Offset.y + value: -3.2332087 objectReference: {fileID: 0} - target: {fileID: 4888696605717816911, guid: b82d5b841abe54f95aee9a8a5a023f6a, type: 3} @@ -1732,61 +1895,9 @@ Transform: type: 3} m_PrefabInstance: {fileID: 4896317741957177885} m_PrefabAsset: {fileID: 0} ---- !u!1 &9052172984657770404 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 4498234376221693369, guid: b82d5b841abe54f95aee9a8a5a023f6a, +--- !u!4 &6547169326961555051 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1814670119296341110, guid: b82d5b841abe54f95aee9a8a5a023f6a, type: 3} m_PrefabInstance: {fileID: 4896317741957177885} m_PrefabAsset: {fileID: 0} ---- !u!61 &5895574189566282252 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9052172984657770404} - m_Enabled: 1 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: -0.03, y: -0.67} - 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, y: 1.66} - m_EdgeRadius: 0 ---- !u!61 &8766766892135053376 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9052172984657770404} - m_Enabled: 1 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: -0.04, y: 0.83} - 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: 2.12, y: 1.31} - m_EdgeRadius: 0 diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs index 47088ed2..00b8680a 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs @@ -263,14 +263,26 @@ namespace MyGame.Scenes.MiniGame.Scripts // } } #endif - if (player.IsHit) + switch (item.ItemType) { - return; - } - if (item.ItemType == StageItem.Type.Obstacle) - { - player.Hit(x.ClosestPoint(playerTransform.position)); - x.enabled = false; + case StageItem.Type.Obstacle: + if (player.IsHit) + { + return; + } + player.Hit(x.ClosestPoint(playerTransform.position)); + x.enabled = false; + break; + case StageItem.Type.Item1: + break; + case StageItem.Type.Hole: + player.Hole(); + break; + case StageItem.Type.Wall: + player.Wall(); + break; + default: + throw new ArgumentOutOfRangeException(); } }).AddTo(this); } diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageItem.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageItem.cs index fdf2a92b..efaa8bac 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageItem.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageItem.cs @@ -11,6 +11,8 @@ namespace MyGame.Scenes.MiniGame.Scripts { Item1, Obstacle, + Hole, + Wall, } [SerializeField] private Type itemType; @@ -30,7 +32,8 @@ namespace MyGame.Scenes.MiniGame.Scripts if (effect != null) effect.SetActive(true); break; case Type.Obstacle: - break; + case Type.Hole: + case Type.Wall: default: throw new ArgumentOutOfRangeException(); } From e7960e1c1e6f9a6b9154968175a9aa470dd91308 Mon Sep 17 00:00:00 2001 From: kimura Date: Thu, 21 Jul 2022 17:42:50 +0900 Subject: [PATCH 2/3] =?UTF-8?q?Rx=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scenes/MiniGame/Scripts/GameManager.cs | 3 +- .../MyGame/Scenes/MiniGame/Scripts/Player.cs | 62 ++++++++++++------- 2 files changed, 40 insertions(+), 25 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs index 00b8680a..6fa9da6b 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs @@ -292,8 +292,7 @@ namespace MyGame.Scenes.MiniGame.Scripts SoundManager.Instance.ChangeVolumeUniqueBGM(1f); stageManager.ResetStage(); player.transform.position = characterBeginPos; - player.Stay(); - player.ResetCount(); + player.ResetPlayer(); scoreCount.Value = 0; headerView.ChangeTimeCount(timeLimit); resultManager.Reset(); diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs index 881bdadc..48e6cf5a 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs @@ -31,25 +31,51 @@ namespace MyGame.Scenes.MiniGame.Scripts private bool isFlying; private bool isResult; private bool isHit; + private bool isHole; + private bool isWall; + private float currentFallSpeed; public bool IsHit => isHit; private readonly BoolReactiveProperty isHitStay = new BoolReactiveProperty(); - private IDisposable hitDisposable; + private readonly CompositeDisposable hitCompositeDisposable = new CompositeDisposable(); private IDisposable jumpHoldDisposable; private Coroutine jumpCoroutine; private Coroutine jumpFallCoroutine; private Vector3 basePos; - private int count; + private readonly ReactiveProperty count = new ReactiveProperty(); public IObservable OnHitItem => itemHitCollider.OnTriggerEnter2DAsObservable().TakeUntilDestroy(this); public IObservable OnHitObstacle => obstacleHitCollider.OnTriggerEnter2DAsObservable().TakeUntilDestroy(this); private void Start() { isHitStay.AddTo(this); + count.AddTo(this); + hitCompositeDisposable.AddTo(this); animator = GetComponent(); basePos = transform.localPosition; + + count.Subscribe(x => + { + level1.SetActive(x >= level1Value); + level2.SetActive(x >= level2Value); + level3.SetActive(x >= level3Value); + }).AddTo(this); } - public void Stay(bool force = false) + public void ResetPlayer() + { + Stay(); + ResetCount(); + isJump = false; + isFall = false; + isFlying = false; + isHit = false; + isHitStay.Value = false; + isHole = false; + isWall = false; + isResult = false; + } + + private void Stay(bool force = false) { if (!force && isHit) { @@ -79,7 +105,6 @@ namespace MyGame.Scenes.MiniGame.Scripts return; } - SoundManager.Instance.PlaySE("se_minigame_Jump"); animator?.Play("Brother_pink_jump", 0, 0); isJump = true; isFall = false; @@ -166,7 +191,7 @@ namespace MyGame.Scenes.MiniGame.Scripts Instantiate(hitEffectPrefab, hitPos, Quaternion.identity, transform.parent); animator?.Play("Brother_pink_FallDown"); isHit = true; - hitDisposable?.Dispose(); + hitCompositeDisposable?.Clear(); // ヒット以外動作停止 this.SafeStopCoroutine(jumpCoroutine); @@ -198,10 +223,10 @@ namespace MyGame.Scenes.MiniGame.Scripts isJump = false; isFall = false; isFlying = false; - this.CallWaitForSeconds(hitTime, () => + Observable.Timer(TimeSpan.FromSeconds(hitTime)).Subscribe(_ => { }, () => { isHitStay.Value = true; - this.CallWaitForSeconds(hitWaitTime, () => + Observable.Timer(TimeSpan.FromSeconds(hitWaitTime)).Subscribe(_ => { }, () => { isHit = false; isHitStay.Value = false; @@ -213,9 +238,9 @@ namespace MyGame.Scenes.MiniGame.Scripts { Stay(); } - }); - }); - }).AddTo(this); + }).AddTo(hitCompositeDisposable); + }).AddTo(hitCompositeDisposable); + }).AddTo(hitCompositeDisposable); }); } @@ -233,21 +258,12 @@ namespace MyGame.Scenes.MiniGame.Scripts public void AddCount() { SoundManager.Instance.PlaySE("se_minigame_ItemGet"); - count++; - UpdateCount(); + count.Value++; } - - private void UpdateCount() + + private void ResetCount() { - level1.SetActive(count >= level1Value); - level2.SetActive(count >= level2Value); - level3.SetActive(count >= level3Value); - } - - public void ResetCount() - { - count = 0; - UpdateCount(); + count.Value = 0; } } } \ No newline at end of file From 08f7532145e52f1d514ade24dfe5acd902b3ee1b Mon Sep 17 00:00:00 2001 From: kimura Date: Thu, 21 Jul 2022 17:45:08 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=E8=90=BD=E4=B8=8B=E3=82=A2=E3=82=AF?= =?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=B3=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MyGame/Scenes/MiniGame/Scripts/Player.cs | 58 ++++++++++++++----- 1 file changed, 45 insertions(+), 13 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs index 48e6cf5a..ff4f73bd 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs @@ -86,7 +86,7 @@ namespace MyGame.Scenes.MiniGame.Scripts public void Move() { - if (isHitStay.Value) + if (isHitStay.Value || isWall) { return; } @@ -100,7 +100,7 @@ namespace MyGame.Scenes.MiniGame.Scripts public void Jump() { - if (isJump || isHit) + if (isJump || isHit || isHole) { return; } @@ -149,7 +149,7 @@ namespace MyGame.Scenes.MiniGame.Scripts if (isFall && active && !isFlying) { isFlying = true; - var currentSpeed = 0f; + currentFallSpeed = 0f; this.SafeStopCoroutine(jumpFallCoroutine); jumpHoldDisposable?.Dispose(); jumpHoldDisposable = this.UpdateAsObservable() @@ -159,16 +159,17 @@ namespace MyGame.Scenes.MiniGame.Scripts // 滑空or落下切り替え if (isButtonHold) { - currentSpeed = -flyingFallSpeed; + currentFallSpeed = -flyingFallSpeed; } else { - currentSpeed -= fallAcceleration * Time.deltaTime; + currentFallSpeed -= fallAcceleration * Time.deltaTime; } - transform.AddLocalPositionY(currentSpeed * Time.deltaTime); + transform.AddLocalPositionY(currentFallSpeed * Time.deltaTime); }, () => { + currentFallSpeed = 0f; isJump = false; isFall = false; isFlying = false; @@ -189,7 +190,7 @@ namespace MyGame.Scenes.MiniGame.Scripts } Instantiate(hitEffectPrefab, hitPos, Quaternion.identity, transform.parent); - animator?.Play("Brother_pink_FallDown"); + animator?.Play("Brother_pink_FallDown", 0, 0f); isHit = true; hitCompositeDisposable?.Clear(); @@ -200,26 +201,28 @@ namespace MyGame.Scenes.MiniGame.Scripts var cachePosY = transform.localPosition.y; var diffHeight = cachePosY - basePos.y; - jumpCoroutine = this.CallLerp(diffHeight == 0f ? 0f : hitJumpTime, t => + var groundPos = isHole ? cachePosY : basePos.y; + jumpCoroutine = this.CallLerp(diffHeight <= 0f ? 0f : hitJumpTime, t => { transform.SetLocalPositionY(cachePosY + hitAnimationCurve.Evaluate(t)); }, () => { // 落下時間不定によりアニメ再生停止 animator.speed = 0f; - var currentSpeed = 0f; + currentFallSpeed = 0f; this.UpdateAsObservable() - .TakeWhile(_ => transform.localPosition.y > basePos.y) + .TakeWhile(_ => transform.localPosition.y > groundPos) .Subscribe(_ => { - currentSpeed -= fallAcceleration * Time.deltaTime; - transform.AddLocalPositionY(currentSpeed * Time.deltaTime); + currentFallSpeed -= fallAcceleration * Time.deltaTime; + transform.AddLocalPositionY(currentFallSpeed * Time.deltaTime); }, () => { // 31フレームまでが落下32からズサー animator?.PlayInFixedTime("Brother_pink_FallDown", 0, .5f); animator.speed = 1f; - transform.SetLocalPositionY(basePos.y); + transform.SetLocalPositionY(groundPos); + currentFallSpeed = 0f; isJump = false; isFall = false; isFlying = false; @@ -244,6 +247,35 @@ namespace MyGame.Scenes.MiniGame.Scripts }); } + public void Hole() + { + // 落下開始 + isHole = true; + + // animator?.Play("Brother_pink_main_stay"); + isJump = false; + isFall = false; + isFlying = false; + isHit = false; + isHitStay.Value = false; + hitCompositeDisposable?.Clear(); + jumpHoldDisposable?.Dispose(); + jumpHoldDisposable = this.UpdateAsObservable() + // .TakeWhile(_ => transform.localPosition.y > basePos.y) + .Subscribe(_ => + { + currentFallSpeed -= fallAcceleration * Time.deltaTime; + transform.AddLocalPositionY(currentFallSpeed * Time.deltaTime); + }, () => + { + }).AddTo(this); + } + + public void Wall() + { + isWall = true; + } + public void Result() { if (isJump || isHit)