private void Slide(bool _sliding, bool ceiling, float _move) { //Vector2 _targetVelocity; if (!_sliding && grounded) { if (ceiling) { _sliding = true; } } if (_sliding) { if (idleCollider != null && slidingCollider != null && grounded && !EdgeDetector.GetEdge()) { idleCollider.enabled = false; slidingCollider.enabled = true; } else { idleCollider.enabled = true; slidingCollider.enabled = false; } if (GameMaster.GetCurrentStamina() > 0 && Mathf.Abs(_move) > 0) { if (grounded) { targetVelocity.x = _move * slideSpeed; GameMaster.UpdateStamina(-1f); } } else { targetVelocity.x = _move * maxSpeed; } } else if (!_sliding) { if (idleCollider != null && slidingCollider != null) { idleCollider.enabled = true; slidingCollider.enabled = false; } targetVelocity.x = _move * maxSpeed; } }
protected override void DetectEdge() { base.DetectEdge(); bool walkingCollider = false; bool slideCollider = false; if (EdgeDetector.GetEdge()) { walkingCollider = idleCollider.enabled; slideCollider = slidingCollider.enabled; slidingCollider.enabled = false; idleCollider.enabled = true; } else if (EdgeDetector.GetOnEdge() && !EdgeDetector.GetEdge()) { slidingCollider.enabled = slideCollider; idleCollider.enabled = walkingCollider; EdgeDetector.SetOnEdge(false); } }