public void Initialize (int lane, GameObject actor, RuntimeAnimatorController idle, RuntimeAnimatorController play, float height, PlayerSquenceReactiveProperty squence) { _lane = lane; actor.transform.localScale = Vector3.one; actor.transform.localPosition = Vector3.zero; CameraFollower.target = actor.transform; PlayerAnimator = actor.GetComponent <Animator>(); _startPosition = transform.GetChild(0).localPosition; _startRot = transform.GetChild(0).localRotation; actor.transform.parent.localScale = new Vector3(actor.transform.parent.localScale.x, height, actor.transform.parent.localScale.z); PlayerAnimator.runtimeAnimatorController = idle; _playController = play; _actor = actor; SubscribeSequence(squence); QBPlay.Instance .PlayerPositionNotifier .Do(x => { switch (_appStateBroker.CurrentRound.Value) { case Rounds.R2: SetToMoveToIdle(); break; case Rounds.R3: SetToMoveToIdle(); break; } }) .Subscribe(_ => GoBackToStartPos()) .AddTo(_actor); _footBall = AddFootBall(actor); actor.SetActive(true); // _footBall = FindBall(actor); _footBall.SetActive(false); //Current App Round Stream _roundStream = _appStateBroker.CurrentRound; _roundStream .DistinctUntilChanged() .Subscribe(round => { switch (round) { case Rounds.Idle_Hike: PlayerAnimator.runtimeAnimatorController = _playController; break; case Rounds.R1_Hike: case Rounds.R2_Hike: case Rounds.R3_Hike: SetToRun(); break; case Rounds.Finish: _appStateBroker.SnapButonObservable .Take(1) .DoOnCompleted(() => { squence.Dispose(); GoBackToStartPos(); Destroy(_actor); }) .Subscribe() .AddTo(_actor); break; } }) .AddTo(_actor); }