コーンの吹っ飛び/弾けパラメータを調整可能にした

This commit is contained in:
kimura 2021-07-09 11:54:32 +09:00
parent 42bfb62734
commit 627c53d1bf
2 changed files with 10 additions and 6 deletions

View File

@ -32,8 +32,8 @@ public class Corn : MonoBehaviour
private float cornBurntTime; private float cornBurntTime;
private float cornGrowTime; private float cornGrowTime;
private float cornGrowSpeed; private float cornGrowSpeed;
private float maxSpeed = 50f; private float cornSpillSpeed;
private float popSpeed = 20f; private float cornPopSpeed;
public IReadOnlyReactiveProperty<CornCondition> Condition => condition; public IReadOnlyReactiveProperty<CornCondition> Condition => condition;
private readonly ReactiveProperty<CornCondition> condition = new ReactiveProperty<CornCondition>(CornCondition.Seed); private readonly ReactiveProperty<CornCondition> condition = new ReactiveProperty<CornCondition>(CornCondition.Seed);
@ -59,7 +59,7 @@ public class Corn : MonoBehaviour
// コーンが飛んでいく // コーンが飛んでいく
this.ObserveEveryValueChanged(x => x.rigidbody.velocity.magnitude) this.ObserveEveryValueChanged(x => x.rigidbody.velocity.magnitude)
.Where(x => x >= maxSpeed) .Where(x => x >= cornSpillSpeed)
.FirstOrDefault() .FirstOrDefault()
.Subscribe(_ => .Subscribe(_ =>
{ {
@ -116,7 +116,7 @@ public class Corn : MonoBehaviour
private void CornPop() private void CornPop()
{ {
spriteRenderer.sprite = cornSimpleSprite; spriteRenderer.sprite = cornSimpleSprite;
rigidbody.AddForce(popSpeed * new Vector2(Random.value * 2 - 1, Random.value * 2 - 1), ForceMode2D.Impulse); rigidbody.AddForce(cornPopSpeed * new Vector2(Random.value * 2 - 1, Random.value * 2 - 1), ForceMode2D.Impulse);
animator.SetTrigger(HashCornGrow); animator.SetTrigger(HashCornGrow);
} }
@ -132,10 +132,12 @@ public class Corn : MonoBehaviour
GetComponent<Collider2D>().enabled = false; GetComponent<Collider2D>().enabled = false;
} }
public void SetCornProperty(float popTime, float burntDuration) public void SetCornProperty(float popTime, float burntDuration, float spillSpeed, float popSpeed)
{ {
cornPopTime = popTime + Random.Range(0, 2f); cornPopTime = popTime + Random.Range(0, 2f);
cornBurntTime = cornPopTime + burntDuration + Random.Range(0, 1f); cornBurntTime = cornPopTime + burntDuration + Random.Range(0, 1f);
cornSpillSpeed = spillSpeed;
cornPopSpeed = popSpeed;
} }
public void ChangeGrowSpeed(float speed) public void ChangeGrowSpeed(float speed)

View File

@ -21,6 +21,8 @@ public class CornManager : MonoBehaviour
[SerializeField] private float hotGrowSpeed; [SerializeField] private float hotGrowSpeed;
[SerializeField] private float baseCornPopTime = 5f; [SerializeField] private float baseCornPopTime = 5f;
[SerializeField] private float cornBurntDuration = 5f; [SerializeField] private float cornBurntDuration = 5f;
[SerializeField] private float cornSpillSpeed = 50f;
[SerializeField] private float cornPopSpeed = 20f;
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>();
@ -62,7 +64,7 @@ public class CornManager : MonoBehaviour
{ {
var corn = Instantiate(cornPrefab, cornSpawnTarget); var corn = Instantiate(cornPrefab, cornSpawnTarget);
cornArray[i] = corn; cornArray[i] = corn;
corn.SetCornProperty(baseCornPopTime, cornBurntDuration); corn.SetCornProperty(baseCornPopTime, cornBurntDuration, cornSpillSpeed, cornPopSpeed);
// 進行速度の変更時、コーン速度変更 // 進行速度の変更時、コーン速度変更
cornGrowSpeed.TakeWhile(_ => !isCompleted).Subscribe(x => cornGrowSpeed.TakeWhile(_ => !isCompleted).Subscribe(x =>