コード例 #1
0
        private void Start()
        {
            var input = GetComponent <IPlayerInput>();

            cc       = GetComponent <CapsuleCollider>();
            core     = GetComponent <PlayerCore>();
            playerCP = GetComponent <PlayerCloudPoint>();
            rb       = GetComponent <Rigidbody>();
            jumper   = GetComponent <PlayerJumper>();

            input?.OnCreateCloudButtonObservable
            .Where(x => x)
            .Subscribe(_ => CreateCloud());
        }
コード例 #2
0
        private void Start()
        {
            var rb    = GetComponent <Rigidbody>();
            var core  = GetComponent <PlayerCore>();
            var input = GetComponent <IPlayerInput>();

            animator = GetComponent <Animator>();
            jumper   = GetComponent <PlayerJumper>();

            input.OnMoveDirectionObservable
            .TakeUntil(core.OnPlayerDeadAsObservable)
            .Subscribe(v =>
            {
                IsRunning          = v.magnitude != 0f;
                transform.rotation = Quaternion.LookRotation(Vector3.RotateTowards(transform.forward,
                                                                                   v,
                                                                                   rotateSpeed * Time.deltaTime,
                                                                                   0f));
            });

            jumper.IsJumpingObservable
            .Where(x => x)
            .Subscribe(_ =>
            {
                animator.SetBool("IsLanding", false);
                Observable.NextFrame()
                .Subscribe(_2 => {
                    if (rb.velocity.y > 0.01f)
                    {
                        animator.Play("JUMP_UP");
                        rb.ObserveEveryValueChanged(r => r.velocity)
                        .TakeUntil(OnJumpEndObsrvable)
                        .Where(v => v.y <= 0f)
                        .Take(1)
                        .Subscribe(_3 => animator.SetTrigger("IsJumpingDown"));
                    }
                    else
                    {
                        animator.Play("JUMP_DOWN");
                    }
                });
                OnJumpEndObsrvable.Subscribe(_2 => animator.SetBool("IsLanding", true));
            });
        }