From 469975102935b8ec31cfb467baca49cabebd6bd4 Mon Sep 17 00:00:00 2001 From: kimura Date: Mon, 20 Jun 2022 18:28:21 +0900 Subject: [PATCH] =?UTF-8?q?add=20=E9=9A=9C=E5=AE=B3=E7=89=A9?= 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 | 33 ++++++++++++++++++- .../Scenes/MiniGame/Scripts/StageItem.cs | 17 ++++++++-- 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs index e898d7f9..0f7a037d 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/GameManager.cs @@ -121,6 +121,9 @@ namespace MyGame.Scenes.MiniGame.Scripts case StageItem.Type.Item1: headerView.AddCount(); break; + case StageItem.Type.Obstacle: + player.Hit(); + break; default: throw new ArgumentOutOfRangeException(); } diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs index 64c0f6c6..490b03b6 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/Player.cs @@ -1,5 +1,6 @@ using System; using UniRx; +using UniRx.Diagnostics; using UniRx.Triggers; using UnityEngine; @@ -10,14 +11,23 @@ namespace MyGame.Scenes.MiniGame.Scripts [SerializeField] private float speed = 5f; [SerializeField] private float jumpTime = 1.25f; [SerializeField] private float jumpHeight = 5f; + [SerializeField] private float hitTime = 1.5f; + [SerializeField] private float hitWaitTime = 1f; private bool isJump; - + private readonly BoolReactiveProperty isHit = new BoolReactiveProperty(); + private IDisposable hitDisposable; + private void Start() { + isHit.AddTo(this); } public void Move() { + if (isHit.Value) + { + return; + } transform.AddPositionX(speed * Time.deltaTime); } @@ -38,5 +48,26 @@ namespace MyGame.Scenes.MiniGame.Scripts isJump = false; }); } + + // こける + public void Hit() + { + hitDisposable?.Dispose(); + // ジャンプが終わるのを待つ + hitDisposable = this.UpdateAsObservable().First(_ => !isJump).Debug("Hit").Subscribe(_ => + { + this.CallLerp(hitTime, t => + { + // transform.SetLocalPositionY(cachePos.y + Mathf.Sin(Mathf.PI * t) * jumpHeight); + }, () => + { + isHit.Value = true; + this.CallWaitForSeconds(hitWaitTime, () => + { + isHit.Value = false; + }); + }); + }).AddTo(this); + } } } \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageItem.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageItem.cs index 1cd91fb1..aca23d47 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageItem.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageItem.cs @@ -9,11 +9,15 @@ namespace MyGame.Scenes.MiniGame.Scripts { public enum Type { - Item1 + Item1, + Obstacle, } [SerializeField] private Type itemType; public Type ItemType => itemType; + [SerializeField] private int point; + + public int Point => point; private void Start() { @@ -22,7 +26,16 @@ namespace MyGame.Scenes.MiniGame.Scripts .Subscribe(_ => { // effect - gameObject.SetActive(false); + switch (itemType) + { + case Type.Item1: + gameObject.SetActive(false); + break; + case Type.Obstacle: + break; + default: + throw new ArgumentOutOfRangeException(); + } }).AddTo(this); } }