void OnPlayerControllerGotGrounded() { if (_currentState == SpawnRoutineState.Idle) { _currentState = SpawnRoutineState.PlayerLanded; _fallStartTime = Time.time + _stableDuration; } }
public bool StartedFalling() { if (_currentState == SpawnRoutineState.PlayerLanded && Time.time >= _fallStartTime) { _currentState = SpawnRoutineState.Falling; return(true); } return(false); }
public SpawnRoutine(ObjectPoolingManager objectPoolingManager, GameObject platformPrefab, Vector3 spawnLocation, float stableDuration, float fallGravity) { _fallGravity = fallGravity; _stableDuration = stableDuration; _currentState = SpawnRoutineState.Idle; _objectPoolingManager = objectPoolingManager; _velocity = Vector2.zero; GameObject = _objectPoolingManager.GetObject(platformPrefab.name); GameObject.transform.position = spawnLocation; var attachPlayerControllerToObject = GameObject.GetComponentOrThrow <AttachPlayerControllerToObject>(); attachPlayerControllerToObject.PlayerControllerGotGrounded += OnPlayerControllerGotGrounded; }