add miniGame
This commit is contained in:
parent
146e2c7e2a
commit
9c171e2db1
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: cc3a591a3c4ca4b07876ee989ddf10dc
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: c21a0a611342d4e4b90e83df43aa3e5e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4140d30c512de44bca2d70f1ac818a1f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
using System;
|
||||
using UniRx;
|
||||
using UniRx.Diagnostics;
|
||||
using UniRx.Triggers;
|
||||
using UnityEngine;
|
||||
|
||||
namespace MyGame.Scenes.MiniGame.Scripts
|
||||
{
|
||||
public class GameManager : MonoBehaviour
|
||||
{
|
||||
public enum State
|
||||
{
|
||||
Ready,
|
||||
Play,
|
||||
Success,
|
||||
Failure
|
||||
}
|
||||
|
||||
[SerializeField] private float speed = 1f;
|
||||
[SerializeField] private float jumpTime = .8f;
|
||||
[SerializeField] private float jumpHeight = 2f;
|
||||
[SerializeField] private HeaderView headerView;
|
||||
[SerializeField] private Transform characterTransform;
|
||||
private readonly ReactiveProperty<State> state = new ReactiveProperty<State>();
|
||||
// Start is called before the first frame update
|
||||
private void Start()
|
||||
{
|
||||
state.AddTo(this);
|
||||
state.Value = State.Ready;
|
||||
|
||||
this.UpdateAsObservable()
|
||||
.Where(_ => Input.GetMouseButtonDown(0))
|
||||
// .Debug("tap")
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
ChangeState();
|
||||
}).AddTo(this);
|
||||
|
||||
var cameraTransform = Camera.main.transform;
|
||||
this.UpdateAsObservable()
|
||||
.Where(_ => state.Value == State.Play)
|
||||
.DelayFrame(1)
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
// カメラ移動
|
||||
cameraTransform.AddPositionX(speed * Time.deltaTime);
|
||||
// キャラクター移動
|
||||
characterTransform.AddPositionX(speed * Time.deltaTime);
|
||||
if (Input.GetMouseButtonDown(0))
|
||||
{
|
||||
Jump();
|
||||
}
|
||||
}).AddTo(this);
|
||||
|
||||
characterTransform.OnTriggerEnter2DAsObservable().Subscribe(x =>
|
||||
{
|
||||
var item = x.GetComponent<StageItem>();
|
||||
if (item is null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
x.enabled = false;
|
||||
switch (item.ItemType)
|
||||
{
|
||||
case StageItem.Type.Item1:
|
||||
headerView.AddCount();
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}).AddTo(this);
|
||||
}
|
||||
|
||||
private bool isJump;
|
||||
|
||||
private void Jump()
|
||||
{
|
||||
if (isJump)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
isJump = true;
|
||||
// Observable.Timer(TimeSpan.FromSeconds(.5f)).Subscribe(_ =>
|
||||
// {
|
||||
// isJump = false;
|
||||
// }).AddTo(this);
|
||||
// var basePosY = characterTransform.position.y;
|
||||
// characterTransform.GetComponent<Rigidbody2D>().AddForce(Vector2.up * height, ForceMode2D.Impulse);
|
||||
this.CallLerp(jumpTime, t =>
|
||||
{
|
||||
characterTransform.SetLocalPositionY(Mathf.Sin(Mathf.PI * t) * jumpHeight);
|
||||
}, () =>
|
||||
{
|
||||
isJump = false;
|
||||
});
|
||||
}
|
||||
|
||||
private void ChangeState()
|
||||
{
|
||||
switch (state.Value)
|
||||
{
|
||||
case State.Ready:
|
||||
state.Value = State.Play;
|
||||
break;
|
||||
case State.Play:
|
||||
break;
|
||||
case State.Success:
|
||||
break;
|
||||
case State.Failure:
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 96c2b99ef2e6c42dd998b782def0bd0e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
using System;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace MyGame.Scenes.MiniGame.Scripts
|
||||
{
|
||||
public class HeaderView : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private Text text;
|
||||
private readonly ReactiveProperty<int> itemCount = new ReactiveProperty<int>();
|
||||
|
||||
private void Start()
|
||||
{
|
||||
itemCount.AddTo(this);
|
||||
itemCount.Subscribe(x =>
|
||||
{
|
||||
text.text = $"{x}";
|
||||
}).AddTo(this);
|
||||
}
|
||||
|
||||
public void ResetView()
|
||||
{
|
||||
itemCount.Value = 0;
|
||||
}
|
||||
|
||||
public void AddCount()
|
||||
{
|
||||
itemCount.Value++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 109145d75cad47b886be1e9be454f54b
|
||||
timeCreated: 1654843868
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
using System;
|
||||
using UniRx;
|
||||
using UniRx.Triggers;
|
||||
using UnityEngine;
|
||||
|
||||
namespace MyGame.Scenes.MiniGame.Scripts
|
||||
{
|
||||
public class StageItem : MonoBehaviour
|
||||
{
|
||||
public enum Type
|
||||
{
|
||||
Item1
|
||||
}
|
||||
|
||||
[SerializeField] private Type itemType;
|
||||
public Type ItemType => itemType;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
this.OnTriggerEnter2DAsObservable()
|
||||
.Take(1)
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
// effect
|
||||
gameObject.SetActive(false);
|
||||
}).AddTo(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b62a13975f3446e1b15bf182305ce742
|
||||
timeCreated: 1654843868
|
||||
Loading…
Reference in New Issue