Esempio n. 1
0
 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)));
 }
Esempio n. 2
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))));
        }