private void Start() { //メダル払い出し開始要求を受けたら、ストックが0になるまで一定間隔で払い出しを続ける PowerOnTiming.SelectMany(_ => Observable.Interval(payoutInterval) //ストックが0になるまで .TakeUntil(PayoutStock.Where(n => n == 0)) //0になったらステータスをIdolにする .DoOnCompleted(() => status = PayoutStatus.Idol)) //メダルを投入 .Subscribe(_ => PayoutToField(payoutPoint.transform.position, Quaternion.Euler(90, 0, 0))); }
void Start() { //オブジェクトの大きさを保持する var size = GetComponent <Collider>().bounds.size; //払い出し要求を受けたらストックが無くなるまで払い出す PowerOnTiming.SelectMany(_ => Observable.Interval(payoutInterval) //ストックが0になるまで .TakeUntil(PayoutStock.Where(n => n == 0)) //0になったらステータスをIdolにする .DoOnCompleted(() => status = PayoutStatus.Idol)) //このオブジェクトの内部のxz座標のランダムの位置にメダルを配置する .Select(_ => new Vector3(UnityEngine.Random.Range(transform.position.x - size.x / 2, transform.position.x + size.x / 2), transform.position.y, UnityEngine.Random.Range(transform.position.z - size.z / 2, transform.position.z + size.z / 2))) //メダルを投入 .Subscribe(pos => PayoutToField(pos, Quaternion.Euler(UnityEngine.Random.Range(-180f, 180f), UnityEngine.Random.Range(-180f, 180f), UnityEngine.Random.Range(-180f, 180f)))); }