Пример #1
0
    /* THIS CODE WILL BE ADDED TO THE BUILD TO INCREASE PERFORMANCE
     #region BuildInclusion
     *  public void OnStart()
     *  {
     *      LerpCurves.SetCurve(ref Curve, _type);
     *  }
     #endregion
     */

    public override void ActionEffect() //Updated function of the dash. Moves the player during dash action
    {
        if (_dashing == true)
        {
            //THIS CODE WILL BE REMOVED TO THE BUILD TO INCREASE PERFORMANCE
            #region BuildExclusion

            if (_cameraData.FreeCameraCurveType != _lastType || Curve == null)
            {
                LerpCurves.SetCurve(ref Curve, _playerData.DashCurveType);
                _lastType = _playerData.DashCurveType;
            }

            #endregion

            //Apply lerp curve
            float t = _currentDashTime / _definedTime;
            t = Curve(t);
            _playerData.ActionController.Transf.position = Vector3.Lerp(_initialPosition, _endPosition, t);
            _currentDashTime += Time.fixedDeltaTime;

            if (Vector3.Distance(_playerData.ActionController.Transf.position, _endPosition) < 0.1f) //dash ends
            {
                ShowPlayer();
                _combatSystem.AllowAttack();
                _dashing = false;
                _playerData.ActionController.Rb.velocity = Vector3.zero;

                if (_isGrappling == false)
                {
                    //APPLY THIs LINE FOR FAKE MOMENTUN AFTER AIR DASH
                    //_playerData.ActionController.Rb.velocity = _playerData.ActionController.Transf.forward * _playerData.DashSpeed * 1.5f;
                    _playerData.ActionController.Rb.useGravity = true;
                    _currentDashTime            = 0;
                    _playerData.MovementAllowed = true;
                }

                if (CallbackFunctions != null)
                {
                    CallbackFunctions(_playerData.ActionController.Anim);
                }
            }
        }

        else if (_dashAllowed == false) // timer that avoid the dash an amount of time between dashes
        {
            _currentDelayTime += Time.fixedDeltaTime;

            if (_currentDelayTime >= _playerData.TimeBetweenDashes)
            {
                _dashAllowed      = true;
                _currentDelayTime = 0;
            }
        }
    }
Пример #2
0
/* THIS CODE WILL BE ADDED TO THE BUILD TO INCREASE PERFORMANCE
 #region BuildInclusion
 *  public void OnStart()
 *  {
 *      LerpCurves.SetCurve(ref Curve, _type);
 *  }
 #endregion
 */
    //method which contains the behaviour of this input
    public override void ActionEffect()
    {
        //THIS CODE WILL BE REMOVED TO THE BUILD TO INCREASE PERFORMANCE
        #region BuildExclusion

        if (_cameraData.FreeCameraCurveType != _lastType || Curve == null)
        {
            LerpCurves.SetCurve(ref Curve, _cameraData.FreeCameraCurveType);
            _lastType = _cameraData.FreeCameraCurveType;
        }

        #endregion

        //Apply lerp curve
        float t = _lerp / _cameraData.LerpSpeedValue;
        t         = Curve(t);
        _camSpeed = Mathf.Lerp(_camSpeed, _cameraData.FinalRotationSpeed, t);
        _lerp    += Time.deltaTime;

        //Apply input rotations
        _cameraData.CameraPoint = Quaternion.AngleAxis(_inputVector.x * _camSpeed * Time.deltaTime, Vector3.up) * _cameraData.CameraPoint;
        _cameraData.Angle       = _cameraData.CameraController.Transf.rotation.eulerAngles.x;

        if (_cameraData.Angle > 180)
        {
            _cameraData.Angle -= 360;
        }

        if ((_inputVector.y > 0 && _cameraData.Angle < 85f) || (_inputVector.y < 0 && _cameraData.Angle > -10f))
        {
            _cameraData.CameraPoint = Quaternion.AngleAxis(_inputVector.y * _camSpeed * Time.deltaTime, _cameraData.CameraController.Transf.right) * _cameraData.CameraPoint;
        }

        //Calculate the camera position without physics
        Vector3 newPos = (_playerData.ActionController.Transf.position + (Vector3.up * _cameraData.CurrentOffsetY) +
                          (_cameraData.CameraController.Transf.right * _cameraData.CurrentOffsetX)) + (_cameraData.CameraPoint * _cameraData.CurrentDistance);

        //Check collision
        _cameraData.CurrentDistance = _cameraData.CameraPhysicalCheck(_playerData.ActionController.Transf, newPos, _cameraData.CurrentDistance);

        //Camera position after collisions
        newPos = (_playerData.ActionController.Transf.position + (Vector3.up * _cameraData.OffsetY) +
                  (_cameraData.CameraController.Transf.right * _cameraData.OffsetX)) + (_cameraData.CameraPoint * _cameraData.CurrentDistance);

        _cameraData.CameraController.Transf.position = newPos;
        _cameraData.CameraController.Transf.LookAt(_playerData.ActionController.Transf.position + (Vector3.up * _cameraData.CurrentOffsetY) +
                                                   (_cameraData.CameraController.Transf.right * _cameraData.CurrentOffsetX));

        CombatArea();
        CameraSmooth();
    }