示例#1
0
        private void Start()
        {
            _hpObservable.Value = maxHp * 0.7f;
            _hpObservable
            .TakeUntil(_hpObservable.Where(hp => hp <= 0))
            .Subscribe(hp =>
            {
                var colorSeed  = hp * 0.01f;
                renderer.color = new Color(1, 1, 1, colorSeed);
            },
                       () =>
            {
                DiedAsync.OnNext(Unit.Default);
                DiedAsync.OnCompleted();
                Debug.Log("Dead");
            }).AddTo(gameObject);
            _hpObservable.First(x => x < weakedHp).Subscribe(x => ResetAnim());

            this.UpdateAsObservable()
            .TakeUntil(_hpObservable.Where(hp => hp <= 0))
            .Where(_ => !isSayingHelloObservable.Value)
            .Select(_ => Input.GetMouseButtonDown(0)).Where(x => x)
            .Subscribe(_ =>
            {
                SayHello();
            }).AddTo(gameObject);
        }
示例#2
0
        public override void Initialize(PersonProvider provider)
        {
            base.Initialize(provider);
            this.provider = provider;
            killSelfTime  = provider.KillTime;
            InMitsu.Subscribe(x =>
            {
                if (!x)
                {
                    currentVelocityBonus = velocityDefaultE;
                    direction.Value      = new Vector2(Random.Range(-1, 1), Random.Range(-1, 1));
                }
            }).AddTo(gameObject);

            direction
            .Select(x => x * currentVelocityBonus)
            .Subscribe(dir => rb2D.velocity = dir).AddTo(gameObject);

            DiedAsync.First().Subscribe(async _ =>
            {
                anim.Play("Die");
                provider.people.Remove(this);
                await UniTask.Delay(System.TimeSpan.FromMilliseconds(1100));
                Destroy(gameObject);
            },
                                        () =>
            {
            }).AddTo(gameObject);

            transform.ObserveEveryValueChanged(t => t.position)
            .Where(p => p.x > 32 || p.x < -32 || p.y > 24 || p.y < -24)
            .Subscribe(_ =>
            {
                // エリアから出たら、原点(0. 0)あたりにもどる
                var pos         = new Vector2(Random.Range(-20, 20), Random.Range(-10, 10));
                direction.Value = (pos - (Vector2)transform.position).normalized;
            }).AddTo(gameObject);

            isCatastorophy.Where(x => x).Subscribe(_ => transform.DOLocalMove(Vector3.zero, 10)).AddTo(gameObject);
        }
示例#3
0
 public void Die()
 {
     DiedAsync.OnNext(Unit.Default);
     DiedAsync.OnCompleted();
 }