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); }
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); }
public void Die() { DiedAsync.OnNext(Unit.Default); DiedAsync.OnCompleted(); }