ポップコーンの完成間際にコーンを増やす演出を追加
This commit is contained in:
parent
e27bf25bc6
commit
e041988c18
|
|
@ -4380,6 +4380,8 @@ MonoBehaviour:
|
||||||
cornPopSpeed: 30
|
cornPopSpeed: 30
|
||||||
screenKoProbability: 0.2
|
screenKoProbability: 0.2
|
||||||
maxScreenKoCount: 1
|
maxScreenKoCount: 1
|
||||||
|
willFinishValue: 0.798
|
||||||
|
cornAddCount: 50
|
||||||
cornCountSlider: {fileID: 657773260}
|
cornCountSlider: {fileID: 657773260}
|
||||||
faildCountSlider: {fileID: 657773259}
|
faildCountSlider: {fileID: 657773259}
|
||||||
coldGrowSpeedSlider: {fileID: 1661453984}
|
coldGrowSpeedSlider: {fileID: 1661453984}
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,12 @@ public class Corn : MonoBehaviour
|
||||||
case CornCondition.Seed:
|
case CornCondition.Seed:
|
||||||
break;
|
break;
|
||||||
case CornCondition.Simple:
|
case CornCondition.Simple:
|
||||||
|
// コーンが弾けたとき、GrowSpeedを再設定する
|
||||||
|
// ThermalCondition.Hot以外では焦げ進行なし
|
||||||
|
if (!isHot)
|
||||||
|
{
|
||||||
|
ChangeGrowSpeed(0f);
|
||||||
|
}
|
||||||
CornPop();
|
CornPop();
|
||||||
break;
|
break;
|
||||||
case CornCondition.Burnt:
|
case CornCondition.Burnt:
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,9 @@ public class CornManager : MonoBehaviour
|
||||||
[Space]
|
[Space]
|
||||||
[SerializeField, Range(0,1)] private float screenKoProbability;
|
[SerializeField, Range(0,1)] private float screenKoProbability;
|
||||||
[SerializeField] private int maxScreenKoCount;
|
[SerializeField] private int maxScreenKoCount;
|
||||||
|
[Header("演出で増やすコーン")]
|
||||||
|
[SerializeField, Range(0, 1)] private float willFinishValue = 0.6f;
|
||||||
|
[SerializeField] private int cornAddCount = 40;
|
||||||
|
|
||||||
public IReadOnlyReactiveProperty<CornResult> Result => result;
|
public IReadOnlyReactiveProperty<CornResult> Result => result;
|
||||||
private readonly ReactiveProperty<CornResult> result = new ReactiveProperty<CornResult>();
|
private readonly ReactiveProperty<CornResult> result = new ReactiveProperty<CornResult>();
|
||||||
|
|
@ -132,18 +135,13 @@ public class CornManager : MonoBehaviour
|
||||||
compositeDisposable.Clear();
|
compositeDisposable.Clear();
|
||||||
cornConditions.Clear();
|
cornConditions.Clear();
|
||||||
progress.Value = 0f;
|
progress.Value = 0f;
|
||||||
for (int i = 0; i < cornArray.Length; i++)
|
cornSpawnTarget.DestroyAllChildrens();
|
||||||
{
|
|
||||||
if (cornArray[i] != null)
|
|
||||||
{
|
|
||||||
Destroy(cornArray[i].gameObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cornArray = new Corn[cornSpawnCount];
|
cornArray = new Corn[cornSpawnCount];
|
||||||
|
|
||||||
// コーン生成
|
// コーン生成
|
||||||
var shuffledArray = Enumerable.Range(0, cornSpawnCount).OrderBy(_ => Random.value).ToArray();
|
var shuffledArray = Enumerable.Range(0, cornArray.Length).OrderBy(_ => Random.value).ToArray();
|
||||||
for (int i = 0; i < cornSpawnCount; i++)
|
|
||||||
|
for (int i = 0; i < cornArray.Length; i++)
|
||||||
{
|
{
|
||||||
var corn = Instantiate(cornPrefab, cornSpawnTarget);
|
var corn = Instantiate(cornPrefab, cornSpawnTarget);
|
||||||
cornArray[i] = corn;
|
cornArray[i] = corn;
|
||||||
|
|
@ -179,12 +177,6 @@ public class CornManager : MonoBehaviour
|
||||||
case CornCondition.Seed:
|
case CornCondition.Seed:
|
||||||
break;
|
break;
|
||||||
case CornCondition.Simple:
|
case CornCondition.Simple:
|
||||||
// コーンが弾けたとき、GrowSpeedを再設定する
|
|
||||||
// ThermalCondition.Hot以外では焦げ進行なし
|
|
||||||
if (!isHot)
|
|
||||||
{
|
|
||||||
corn.ChangeGrowSpeed(0f);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case CornCondition.Burnt:
|
case CornCondition.Burnt:
|
||||||
// ミス数加算
|
// ミス数加算
|
||||||
|
|
@ -201,8 +193,9 @@ public class CornManager : MonoBehaviour
|
||||||
cornConditions.Add(corn.Condition);
|
cornConditions.Add(corn.Condition);
|
||||||
}
|
}
|
||||||
|
|
||||||
var cornConditionsObservable = Observable.CombineLatest(cornConditions).Publish().RefCount();
|
var cornConditionsObservable = cornConditions.CombineLatest().Publish().RefCount();
|
||||||
|
|
||||||
|
// コーン全体の進捗
|
||||||
cornConditionsObservable
|
cornConditionsObservable
|
||||||
.Select(x => x.Count(cond => cond != CornCondition.Seed))
|
.Select(x => x.Count(cond => cond != CornCondition.Seed))
|
||||||
.Subscribe(x =>
|
.Subscribe(x =>
|
||||||
|
|
@ -230,6 +223,36 @@ public class CornManager : MonoBehaviour
|
||||||
SetResult(CornResult.Good);
|
SetResult(CornResult.Good);
|
||||||
}
|
}
|
||||||
}).AddTo(compositeDisposable);
|
}).AddTo(compositeDisposable);
|
||||||
|
|
||||||
|
// 進捗によってコーンを増やす(演出用)
|
||||||
|
var amount = 5;
|
||||||
|
var times = cornAddCount / amount;
|
||||||
|
progress
|
||||||
|
.Where(x => x >= willFinishValue)
|
||||||
|
.Take(1)
|
||||||
|
.AsUnitObservable()
|
||||||
|
.Concat(Observable.TimerFrame(0,1).AsUnitObservable())
|
||||||
|
.Take(times)
|
||||||
|
.Subscribe(_ =>
|
||||||
|
{
|
||||||
|
Observable.Range(0, amount).Subscribe(__ =>
|
||||||
|
{
|
||||||
|
var corn = Instantiate(cornPrefab, cornSpawnTarget);
|
||||||
|
corn.SetCornProperty(0f, isHot ? 0f : 3f, cornSpillSpeed, cornPopSpeed);
|
||||||
|
cornGrowSpeed.TakeWhile(x => !isCompleted).Subscribe(x =>
|
||||||
|
{
|
||||||
|
// コーンが弾けた後はRedの場合のみ焦げ進行する
|
||||||
|
if (corn.Condition.Value == CornCondition.Simple && !isHot)
|
||||||
|
{
|
||||||
|
corn.ChangeGrowSpeed(0f);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
corn.ChangeGrowSpeed(x);
|
||||||
|
corn.ChangeHotStatus(isHot);
|
||||||
|
}).AddTo(compositeDisposable);
|
||||||
|
}).AddTo(compositeDisposable);
|
||||||
|
}).AddTo(compositeDisposable);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ChangeGrowSpeed(ThermalCondition condition)
|
public void ChangeGrowSpeed(ThermalCondition condition)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue