Пример #1
0
 void Awake()
 {
     rigidbody            = GetComponent <Rigidbody2D>();
     defaultGrabvityScale = rigidbody.gravityScale;
     inputProvider        = GetComponent <PlayerInputProvider>();
     cameraMover          = GameObject.Find("Main Camera").GetComponent <CameraMover>();
 }
Пример #2
0
    protected override void OnInitialize()
    {
        inputProvider = GetComponent <PlayerInputProvider>();
        rb            = GetComponent <Rigidbody2D>();

        inputProvider.MoveDirection
        .TakeUntilDestroy(this)
        //.Where(_ => GameManager.Instance.CurrentSceneState.Value == SceneState.Game)
        .Subscribe(x =>
        {
            var value = Vector3.zero;
            if (!IsAlive.Value)
            {
                return;
            }
            if (IsGround.Value)
            {
                value = x.normalized * runForce;
            }
            else     // 飛んでる時
            {
                value = x.normalized * runForce * jumpMoveForce;
            }

            inputDirection = value;
        });

        inputProvider.JumpButton
        .TakeUntilDestroy(this)
        //.Where(_ => GameManager.Instance.CurrentSceneState.Value == SceneState.Game)
        .Where(x => x && IsAlive.Value && IsGround.Value)
        //.ThrottleFirst(TimeSpan.FromSeconds(1))
        .Subscribe(_ =>
        {
            Jump();
        });

        this.FixedUpdateAsObservable()
        .TakeUntilDestroy(this)
        .Subscribe(_ =>
        {
            Move();
            isGround.Value = CheckGrounded();
        });
    }