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

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 cornGrowTime;
private float cornGrowSpeed;
private float maxSpeed = 50f;
private float popSpeed = 20f;
private float cornSpillSpeed;
private float cornPopSpeed;
public IReadOnlyReactiveProperty<CornCondition> Condition => condition;
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)
.Where(x => x >= maxSpeed)
.Where(x => x >= cornSpillSpeed)
.FirstOrDefault()
.Subscribe(_ =>
{
@ -116,7 +116,7 @@ public class Corn : MonoBehaviour
private void CornPop()
{
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);
}
@ -132,10 +132,12 @@ public class Corn : MonoBehaviour
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);
cornBurntTime = cornPopTime + burntDuration + Random.Range(0, 1f);
cornSpillSpeed = spillSpeed;
cornPopSpeed = popSpeed;
}
public void ChangeGrowSpeed(float speed)

View File

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