UnityPlatformer.CharacterActionGrab.PerformAction C# (CSharp) Method

PerformAction() public method

public PerformAction ( float delta ) : void
delta float
return void
    public override void PerformAction(float delta) {
      Vector3 ori = character.transform.position;
      Vector3 target = character.grab.GetCenter() - grabbingOffset;

      // once we center, stop moving!
      if (!centering) {
        character.velocity = Vector3.zero;
      }

      // close enough to our target position ?
      if (centering && Vector3.Distance(ori, target) < 0.1f) {
        character.velocity = target - ori;
        centering = false;
      }
      // close the gap a little more
      if (centering) {
        // centering phase
        Vector3.SmoothDamp(
          ori,
          target,
          ref character.velocity,
          towardsTime,
          towardsSpeed, //Mathf.Infinity,
          delta);
      }

      character.SetFacing(input.GetAxisRawX());

      // check for dismount conditions
      if (dismountJumping && input.IsActionHeld(actionJump.action)) {
        canGrab.Reset();
        character.ExitState(States.Grabbing);

        actionJump.Jump(new JumpConstant(character,
          jumpOff.Clone((int) character.faceDir)
        ));
      } else if (dismountPressingDown && input.GetAxisRawY() < 0) {
        // TODO Dismount down delay ?
        canGrab.Reset();
        character.ExitState(States.Grabbing);
      }
    }