収穫ロジック調整
This commit is contained in:
parent
9bcf9a9597
commit
2862cb0670
|
|
@ -421,6 +421,7 @@ GameObject:
|
|||
- component: {fileID: 536970160}
|
||||
- component: {fileID: 536970159}
|
||||
- component: {fileID: 536970158}
|
||||
- component: {fileID: 536970161}
|
||||
m_Layer: 0
|
||||
m_Name: Main Camera
|
||||
m_TagString: MainCamera
|
||||
|
|
@ -493,6 +494,22 @@ Transform:
|
|||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &536970161
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 536970157}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 56666c5a40171f54783dd416a44f42bf, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_EventMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 23
|
||||
m_MaxRayIntersections: 0
|
||||
--- !u!1 &619114158
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
|
|||
|
|
@ -415,7 +415,7 @@ BoxCollider2D:
|
|||
m_Enabled: 1
|
||||
m_Density: 1
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_IsTrigger: 1
|
||||
m_UsedByEffector: 0
|
||||
m_UsedByComposite: 0
|
||||
m_Offset: {x: 0, y: -0.74168634}
|
||||
|
|
@ -496,6 +496,5 @@ MonoBehaviour:
|
|||
seedlingStage2: {fileID: 875275074190396077}
|
||||
seedlingStage3: {fileID: 875275073577674106}
|
||||
seedlingStage4: {fileID: 875275074368017847}
|
||||
stage4Collider: {fileID: 3560956324713403295}
|
||||
growingArrowPrefab: {fileID: 4493492865567033234, guid: b3d641214f420f74290147d368b221fa,
|
||||
type: 3}
|
||||
|
|
|
|||
|
|
@ -15,13 +15,18 @@ public class CornField : MonoBehaviour
|
|||
private readonly List<CornSeedling> plants = new List<CornSeedling>();
|
||||
private static readonly float maxPeriod = 60f;
|
||||
private static readonly float minPeriod = 45f;
|
||||
|
||||
private readonly CompositeDisposable compositeDisposable = new CompositeDisposable();
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
compositeDisposable.AddTo(this);
|
||||
this.UpdateAsObservable()
|
||||
.Where(_ => Input.GetKeyDown(KeyCode.R))
|
||||
.Take(1)
|
||||
.Subscribe(_ => TransitionManager.Instance.LoadScene(GameScenes.CornField)).AddTo(this);
|
||||
|
||||
|
||||
var settings = new DateTime[3]
|
||||
{
|
||||
DateTime.Now,
|
||||
|
|
@ -42,7 +47,17 @@ public class CornField : MonoBehaviour
|
|||
for (int i = 0; i < plants.Count; i++)
|
||||
{
|
||||
var period = 30 + Random.Range(0, 15);
|
||||
plants[i].SetSeedlingGene(settings[i], period, SeedlingRank.Rank1);
|
||||
var ii = i;
|
||||
plants[ii].SetSeedlingGene(settings[ii], period, SeedlingRank.Rank1);
|
||||
plants[ii].Harvested.Subscribe(_ =>
|
||||
{
|
||||
// 収穫
|
||||
Debug.Log($"harvested");
|
||||
// 新しい苗
|
||||
period = 30 + Random.Range(0, 15);
|
||||
settings[ii] = DateTime.Now;
|
||||
plants[ii].SetSeedlingGene(settings[ii], period, SeedlingRank.Rank1);
|
||||
}).AddTo(compositeDisposable);
|
||||
}
|
||||
|
||||
promoteGrowthButton.OnClickAsObservable().Subscribe(_ =>
|
||||
|
|
@ -54,7 +69,7 @@ public class CornField : MonoBehaviour
|
|||
plants[i].PromoteGrowth(settings[i]);
|
||||
};
|
||||
}
|
||||
});
|
||||
}).AddTo(compositeDisposable);
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using System;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
public enum SeedlingStage
|
||||
{
|
||||
|
|
@ -18,7 +19,7 @@ public enum SeedlingRank
|
|||
Rank3
|
||||
}
|
||||
|
||||
public class CornSeedling : MonoBehaviour
|
||||
public class CornSeedling : MonoBehaviour, IPointerEnterHandler
|
||||
{
|
||||
[SerializeField] private CornSeedlingView seedlingView;
|
||||
private static readonly float stage0End = 0.25f;
|
||||
|
|
@ -31,11 +32,14 @@ public class CornSeedling : MonoBehaviour
|
|||
private SeedlingRank seedlingRank; // 苗の良さ(1~3
|
||||
private bool completed;
|
||||
|
||||
public IObservable<Unit> Harvested => harvested;
|
||||
private readonly Subject<Unit> harvested = new Subject<Unit>();
|
||||
private readonly ReactiveProperty<SeedlingStage> seedlingStage = new ReactiveProperty<SeedlingStage>();
|
||||
private readonly CompositeDisposable compositeDisposable = new CompositeDisposable();
|
||||
|
||||
private void Start()
|
||||
{
|
||||
harvested.AddTo(this);
|
||||
seedlingStage.AddTo(this);
|
||||
compositeDisposable.AddTo(this);
|
||||
}
|
||||
|
|
@ -67,10 +71,18 @@ public class CornSeedling : MonoBehaviour
|
|||
seedlingRank = rank;
|
||||
|
||||
// resume対応
|
||||
// 途中からの場合アニメーションを勧めておく処理
|
||||
// 苗の状態復元
|
||||
seedlingView.SetView(GetCurrentStage());
|
||||
|
||||
// 成長ロジック
|
||||
// 成長進捗度更新
|
||||
Observable.Interval(TimeSpan.FromSeconds(1f))
|
||||
.TakeWhile(_ => !completed)
|
||||
.Subscribe(x =>
|
||||
{
|
||||
UpdateStage();
|
||||
}).AddTo(compositeDisposable);
|
||||
|
||||
// 更新
|
||||
seedlingStage
|
||||
.TakeWhile(_ => !completed)
|
||||
.Subscribe(x =>
|
||||
|
|
@ -81,14 +93,6 @@ public class CornSeedling : MonoBehaviour
|
|||
completed = true;
|
||||
}
|
||||
}).AddTo(compositeDisposable);
|
||||
|
||||
// 成長進捗度
|
||||
Observable.Interval(TimeSpan.FromSeconds(1f))
|
||||
.TakeWhile(_ => !completed)
|
||||
.Subscribe(x =>
|
||||
{
|
||||
UpdateStage();
|
||||
}).AddTo(compositeDisposable);
|
||||
}
|
||||
|
||||
private void UpdateStage()
|
||||
|
|
@ -118,4 +122,9 @@ public class CornSeedling : MonoBehaviour
|
|||
}
|
||||
return SeedlingStage.Stage0;
|
||||
}
|
||||
|
||||
public void OnPointerEnter(PointerEventData eventData)
|
||||
{
|
||||
harvested.OnNext(Unit.Default);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,8 @@
|
|||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
public class CornSeedlingView : MonoBehaviour
|
||||
{
|
||||
|
|
@ -7,10 +10,9 @@ public class CornSeedlingView : MonoBehaviour
|
|||
[SerializeField] private GameObject seedlingStage2;
|
||||
[SerializeField] private GameObject seedlingStage3;
|
||||
[SerializeField] private GameObject seedlingStage4;
|
||||
[SerializeField] private Collider2D stage4Collider;
|
||||
[SerializeField] private GameObject growingArrowPrefab;
|
||||
private readonly int nextStageTriggerHash = Animator.StringToHash("NextStageTrigger");
|
||||
|
||||
|
||||
public void ResetView()
|
||||
{
|
||||
seedlingStage1.SetActive(false);
|
||||
|
|
@ -59,6 +61,10 @@ public class CornSeedlingView : MonoBehaviour
|
|||
{
|
||||
seedlingStage2.SetActive(true);
|
||||
});
|
||||
this.CallWaitForSeconds(.33f, () =>
|
||||
{
|
||||
seedlingStage1.SetActive(false);
|
||||
});
|
||||
break;
|
||||
case SeedlingStage.Stage3:
|
||||
seedlingStage2.GetComponent<Animator>().SetTrigger(nextStageTriggerHash);
|
||||
|
|
@ -66,6 +72,10 @@ public class CornSeedlingView : MonoBehaviour
|
|||
{
|
||||
seedlingStage3.SetActive(true);
|
||||
});
|
||||
this.CallWaitForSeconds(.33f, () =>
|
||||
{
|
||||
seedlingStage2.SetActive(false);
|
||||
});
|
||||
break;
|
||||
case SeedlingStage.Stage4:
|
||||
seedlingStage3.GetComponent<Animator>().SetTrigger(nextStageTriggerHash);
|
||||
|
|
@ -73,6 +83,10 @@ public class CornSeedlingView : MonoBehaviour
|
|||
{
|
||||
seedlingStage4.SetActive(true);
|
||||
});
|
||||
this.CallWaitForSeconds(.33f, () =>
|
||||
{
|
||||
seedlingStage3.SetActive(false);
|
||||
});
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(stage), stage, null);
|
||||
|
|
|
|||
Loading…
Reference in New Issue