Esempio n. 1
0
        public void Initialize()
        {
            // 有効になった後
            DidActiveDisposable = ActivateSubject
                                  // 受付時間が経過した後
                                  .SelectMany(_ => Observable.Timer(TimeSpan.FromSeconds(Constant.MoleActiveDuration)))
                                  // まだ攻撃が有効な場合
                                  .Where(_ => CanAttack)
                                  // 非表示にする
                                  .Subscribe(_ => HideSubject.Do());
            // 無効になった後
            DidInactiveDisposable = DeactivateSubject
                                    // ランダムに待った後
                                    .SelectMany(_ => Observable.Timer(TimeSpan.FromSeconds(UnityEngine.Random.Range(Constant.MoleInactiveDurationFrom, Constant.MoleInactiveDurationTo))))
                                    // 次の処理をランダムに決定して実行
                                    .Subscribe(_ => NextActionMap.Random().Value(this).Do());

            ActivateSubject.Subscribe(_ => CanAttack   = true);
            DeactivateSubject.Subscribe(_ => CanAttack = false);

            // 表示が終わったら当たり判定を有効にする
            ShowSubject.WhenDid().Subscribe(_ => ActivateSubject.OnNext(Unit.Default));
            // 消去が始まったら当たり判定を無効にする
            HideSubject.WhenWill().Subscribe(_ => DeactivateSubject.OnNext(Unit.Default));
            // フェイントが終わったら当たり判定を無効にする
            FeintSubject.WhenDid().Subscribe(_ => DeactivateSubject.OnNext(Unit.Default));
            // 攻撃が始まったら当たり判定を無効にする
            AttackSubject.WhenWill().Subscribe(_ => DeactivateSubject.OnNext(Unit.Default));
        }
Esempio n. 2
0
 void OnWeaponInstantiate(ItemSolid itemSolid)
 {
     _weaponSolid = itemSolid;
     _weapon      = (Weapon)_weaponSolid.item;
     _weaponSolid.transform.SetParent(_animator.GetBoneTransform(weapon.targetBone));
     _weaponSolid.transform.localPosition = Vector3.zero;
     _weaponSolid.transform.localRotation = Quaternion.identity;
     _weaponSolid.transform.localScale    = new Vector3(0.08f, 0.08f, 0.08f);
     _weaponSolid.enabled = false;
     _weaponSolid.GetComponent <Floater>().enabled           = false;
     _weaponSolid.GetComponent <ItemSpawnEffector>().enabled = false;
     //Should Make AttackerNULL and AttackerImpl for ProjectileWeapon
     _attackSubject         = _weaponSolid.GetComponent <AttackSubject>();
     _attackSubject.enabled = false;
     _attackSubject.owner   = this;
 }
Esempio n. 3
0
 public void Attack()
 {
     AttackSubject.Did(MoleIndex);
 }
Esempio n. 4
0
 void OnWeaponInstantiate(ItemSolid itemSolid)
 {
     _weaponSolid = itemSolid;
     _weapon = (Weapon)_weaponSolid.item;
     _weaponSolid.transform.SetParent(_animator.GetBoneTransform(weapon.targetBone));
     _weaponSolid.transform.localPosition = Vector3.zero;
     _weaponSolid.transform.localRotation = Quaternion.identity;
     _weaponSolid.transform.localScale = new Vector3(0.08f, 0.08f, 0.08f);
     _weaponSolid.enabled = false;
     _weaponSolid.GetComponent<Floater>().enabled = false;
     _weaponSolid.GetComponent<ItemSpawnEffector>().enabled = false;
     //Should Make AttackerNULL and AttackerImpl for ProjectileWeapon
     _attackSubject = _weaponSolid.GetComponent<AttackSubject>();
     _attackSubject.enabled = false;
     _attackSubject.owner = this;
 }