public bool DeactivateRotator() { if (_rotate && _accelerateOrDecelerate == AccelerateOrDecelerate.Accelerate) { _accelerateOrDecelerate = AccelerateOrDecelerate.Decelerate; return(true); } return(false); }
// Update is called once per frame void Update() { if (_rotate) { if (_rotationSpeedZ != _targetSpeed) // Only this condition is needed, because when _rotationSpeedZ reaches a negative value, _rotate is set to false. { if (_accelerateOrDecelerate == AccelerateOrDecelerate.Accelerate) { _rotationSpeedZ += Time.deltaTime * _accelerationMultiplier; if (_rotationSpeedZ > _targetSpeed) { _accelerateOrDecelerate = AccelerateOrDecelerate.Decelerate; _rotationSpeedZ = _targetSpeed; //_sampo.ChangeState(Sampo.SampoStateType.Generate); } } else { _rotationSpeedZ -= Time.deltaTime * _accelerationMultiplier; if (_rotationSpeedZ < 0f) { _accelerateOrDecelerate = AccelerateOrDecelerate.Accelerate; _rotationSpeedZ = 0f; _rotate = false; if (_sampo._sampoState != Sampo.SampoStateType.Start) { _sampo.ChangeState(Sampo.SampoStateType.Idle); } } } } if (_rotateRight) { transform.Rotate(new Vector3(0f, 0f, _rotationSpeedZ)); } else { transform.Rotate(new Vector3(0f, 0f, -_rotationSpeedZ)); } } }
private void Start() { _accelerateOrDecelerate = AccelerateOrDecelerate.Accelerate; }