障害物アクション仮追加/デバッグ機能追加
This commit is contained in:
parent
564cad3c86
commit
786465ef76
|
|
@ -497,6 +497,8 @@ MonoBehaviour:
|
||||||
headerView: {fileID: 2098933370}
|
headerView: {fileID: 2098933370}
|
||||||
player: {fileID: 2498033716723453586}
|
player: {fileID: 2498033716723453586}
|
||||||
stageManager: {fileID: 1870432536}
|
stageManager: {fileID: 1870432536}
|
||||||
|
resultManager: {fileID: 0}
|
||||||
|
isDebug: 0
|
||||||
--- !u!4 &1870432534
|
--- !u!4 &1870432534
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using UniRx;
|
using UniRx;
|
||||||
using UniRx.Triggers;
|
using UniRx.Triggers;
|
||||||
|
using UnityEditor;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace MyGame.Scenes.MiniGame.Scripts
|
namespace MyGame.Scenes.MiniGame.Scripts
|
||||||
|
|
@ -24,6 +25,10 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
||||||
[SerializeField] private HeaderView headerView;
|
[SerializeField] private HeaderView headerView;
|
||||||
[SerializeField] private Player player;
|
[SerializeField] private Player player;
|
||||||
[SerializeField] private StageManager stageManager;
|
[SerializeField] private StageManager stageManager;
|
||||||
|
[SerializeField] private ResultManager resultManager;
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
[SerializeField] private bool isDebug;
|
||||||
|
#endif
|
||||||
|
|
||||||
private readonly ReactiveProperty<MenuState> menuState = new ReactiveProperty<MenuState>();
|
private readonly ReactiveProperty<MenuState> menuState = new ReactiveProperty<MenuState>();
|
||||||
private readonly ReactiveProperty<GameState> state = new ReactiveProperty<GameState>();
|
private readonly ReactiveProperty<GameState> state = new ReactiveProperty<GameState>();
|
||||||
|
|
@ -55,7 +60,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
||||||
|
|
||||||
this.UpdateAsObservable()
|
this.UpdateAsObservable()
|
||||||
.Where(_ => menuState.Value == MenuState.Game)
|
.Where(_ => menuState.Value == MenuState.Game)
|
||||||
.Where(_ => Input.GetMouseButtonDown(0))
|
.Where(_ => Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space))
|
||||||
.Subscribe(_ =>
|
.Subscribe(_ =>
|
||||||
{
|
{
|
||||||
state.Value = GameState.Play;
|
state.Value = GameState.Play;
|
||||||
|
|
@ -74,15 +79,17 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
||||||
timerDisposable?.Dispose();
|
timerDisposable?.Dispose();
|
||||||
timerDisposable = Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1f))
|
timerDisposable = Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1f))
|
||||||
.Select(time => (int)(timeLimit - time))
|
.Select(time => (int)(timeLimit - time))
|
||||||
.TakeWhile(time => time > 0)
|
.TakeWhile(time => time >= 0)
|
||||||
.Subscribe(time =>
|
.Subscribe(time =>
|
||||||
{
|
{
|
||||||
headerView.ChangeTimeCount(time);
|
headerView.ChangeTimeCount(time);
|
||||||
}, () =>
|
}, () =>
|
||||||
{
|
{
|
||||||
|
state.Value = GameState.Success;
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
break;
|
break;
|
||||||
case GameState.Success:
|
case GameState.Success:
|
||||||
|
resultManager.ShowResult();
|
||||||
break;
|
break;
|
||||||
case GameState.Failure:
|
case GameState.Failure:
|
||||||
break;
|
break;
|
||||||
|
|
@ -102,7 +109,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
||||||
player.Move();
|
player.Move();
|
||||||
// カメラ移動
|
// カメラ移動
|
||||||
cameraTransform.position = playerTransform.position.x * Vector3.right + cameraOffset;
|
cameraTransform.position = playerTransform.position.x * Vector3.right + cameraOffset;
|
||||||
if (Input.GetMouseButtonDown(0))
|
if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space))
|
||||||
{
|
{
|
||||||
player.Jump();
|
player.Jump();
|
||||||
}
|
}
|
||||||
|
|
@ -116,6 +123,17 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
x.enabled = false;
|
x.enabled = false;
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
var sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
|
||||||
|
sphere.GetComponent<MeshRenderer>().material.color = Color.red;
|
||||||
|
sphere.transform.SetLocalScale(.4f);
|
||||||
|
sphere.transform.position = x.ClosestPoint(playerTransform.position);
|
||||||
|
sphere.transform.SetPositionZ(-5f);
|
||||||
|
if (item.ItemType == StageItem.Type.Obstacle && isDebug)
|
||||||
|
{
|
||||||
|
EditorApplication.isPaused = true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
switch (item.ItemType)
|
switch (item.ItemType)
|
||||||
{
|
{
|
||||||
case StageItem.Type.Item1:
|
case StageItem.Type.Item1:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using UniRx;
|
using UniRx;
|
||||||
using UniRx.Diagnostics;
|
|
||||||
using UniRx.Triggers;
|
using UniRx.Triggers;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
@ -14,6 +13,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
||||||
[SerializeField] private float hitTime = 1.5f;
|
[SerializeField] private float hitTime = 1.5f;
|
||||||
[SerializeField] private float hitWaitTime = 1f;
|
[SerializeField] private float hitWaitTime = 1f;
|
||||||
private bool isJump;
|
private bool isJump;
|
||||||
|
private bool isPreHit;
|
||||||
private readonly BoolReactiveProperty isHit = new BoolReactiveProperty();
|
private readonly BoolReactiveProperty isHit = new BoolReactiveProperty();
|
||||||
private IDisposable hitDisposable;
|
private IDisposable hitDisposable;
|
||||||
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
||||||
|
|
||||||
public void Jump()
|
public void Jump()
|
||||||
{
|
{
|
||||||
if (isJump)
|
if (isJump || isPreHit)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -52,18 +52,27 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
||||||
// こける
|
// こける
|
||||||
public void Hit()
|
public void Hit()
|
||||||
{
|
{
|
||||||
|
if (isPreHit)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
isPreHit = true;
|
||||||
hitDisposable?.Dispose();
|
hitDisposable?.Dispose();
|
||||||
// ジャンプが終わるのを待つ
|
// ジャンプが終わるのを待つ
|
||||||
hitDisposable = this.UpdateAsObservable().First(_ => !isJump).Debug("Hit").Subscribe(_ =>
|
hitDisposable = this.UpdateAsObservable().First(_ => !isJump).Subscribe(_ =>
|
||||||
{
|
{
|
||||||
|
var orgRotation = transform.localRotation;
|
||||||
|
var orgYAngle = orgRotation.eulerAngles.y;
|
||||||
|
transform.rotation = Quaternion.identity;
|
||||||
this.CallLerp(hitTime, t =>
|
this.CallLerp(hitTime, t =>
|
||||||
{
|
{
|
||||||
// transform.SetLocalPositionY(cachePos.y + Mathf.Sin(Mathf.PI * t) * jumpHeight);
|
transform.localRotation = Quaternion.AngleAxis(orgYAngle + t * (3f * 360), Vector3.up);
|
||||||
}, () =>
|
}, () =>
|
||||||
{
|
{
|
||||||
isHit.Value = true;
|
isHit.Value = true;
|
||||||
this.CallWaitForSeconds(hitWaitTime, () =>
|
this.CallWaitForSeconds(hitWaitTime, () =>
|
||||||
{
|
{
|
||||||
|
isPreHit = false;
|
||||||
isHit.Value = false;
|
isHit.Value = false;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue