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