飛び出し調整

This commit is contained in:
kimura 2021-07-20 17:08:54 +09:00
parent 3ec262fb01
commit ba55d30275
1 changed files with 11 additions and 14 deletions

View File

@ -55,18 +55,25 @@ public class Corn : MonoBehaviour
private void Start() private void Start()
{ {
rigidbody.MovePosition(new Vector2(Random.value * 2 - 1, Random.value * 2 - 1)); rigidbody.MovePosition(Random.insideUnitCircle);
rigidbody.SetRotation(Random.value * 360); rigidbody.SetRotation(Random.rotation);
cornSkin.ChangeSkin(condition.Value); cornSkin.ChangeSkin(condition.Value);
// コーン飛び出し演出 // コーン飛び出し演出
this.ObserveEveryValueChanged(x => x.rigidbody.velocity.magnitude) this.ObserveEveryValueChanged(x => x.rigidbody.velocity.magnitude)
.Where(x => x >= cornSpillSpeed) .Where(x => x >= cornSpillSpeed)
.ThrottleFirstFrame(30) // 30フレーム間隔開ける
.Select(_ => Random.value < .2f) // 演出を出す確率
.FirstOrDefault() .FirstOrDefault()
.Subscribe(_ => .Subscribe(_ =>
{ {
spilled.Value = true; spilled.Value = true;
CornSpilled(); var clone = Instantiate(cornSkin);
clone.ChangeSkin(condition.Value);
var cloneRigidBody = clone.gameObject.AddComponent<Rigidbody2D>();
cloneRigidBody.gravityScale = 0;
cloneRigidBody.AddForce(rigidbody.velocity.normalized * 20f, ForceMode2D.Impulse);
this.CallWaitForSeconds(2f, () => Destroy(clone.gameObject));
}).AddTo(this); }).AddTo(this);
condition.Pairwise().Subscribe(x => condition.Pairwise().Subscribe(x =>
@ -111,7 +118,7 @@ public class Corn : MonoBehaviour
private void CornPop() private void CornPop()
{ {
cornSkin.ChangeSkin(condition.Value); cornSkin.ChangeSkin(condition.Value);
rigidbody.AddForce(cornPopSpeed * new Vector2(Random.value * 2 - 1, Random.value * 2 - 1), ForceMode2D.Impulse); rigidbody.AddForce(cornPopSpeed * Random.insideUnitCircle, ForceMode2D.Impulse);
animator.SetTrigger(HashCornGrow); animator.SetTrigger(HashCornGrow);
VibrationManager.Instance.PlayVibrationOnce(); VibrationManager.Instance.PlayVibrationOnce();
} }
@ -124,16 +131,6 @@ public class Corn : MonoBehaviour
this.CallWaitForSeconds(.8f, () => Destroy(effect)); this.CallWaitForSeconds(.8f, () => Destroy(effect));
} }
private void CornSpilled()
{
var clone = Instantiate(cornSkin);
clone.ChangeSkin(condition.Value);
var cloneRigidBody = clone.gameObject.AddComponent<Rigidbody2D>();
cloneRigidBody.gravityScale = 0;
cloneRigidBody.AddForce(rigidbody.velocity.normalized * cornSpillSpeed, ForceMode2D.Impulse);
this.CallWaitForSeconds(2f, () => Destroy(clone.gameObject));
}
public void SetCornProperty(float popTime, float burntDuration, float spillSpeed, float popSpeed) public void SetCornProperty(float popTime, float burntDuration, float spillSpeed, float popSpeed)
{ {
cornPopTime = popTime; cornPopTime = popTime;