void FixedUpdateSwim() { Vector2 movement = playerMovement.fishPlayer.GetAxis2D("Horizontal", "Vertical"); if (playerMovement.moveInputDisabled) { movement = Vector2.zero; } if (movement.magnitude > 1) { movement.Normalize(); } Vector2 targetSpeed = movement * _swimSpeedToUse; if (playerMovement.fishPlayer.GetButton("Move Ability")) { targetSpeed = movement * fastSwimSpeed; } rb.AddForceToAchieveTargetVelocity(targetSpeed, _swimForceToUse, swimMovementForceCurve); if (movement.magnitude > 0) { rb.drag = waterDragInput; } else { rb.drag = waterDragNoInput; } }
// Update is called once per frame void FixedUpdate() { if (active) { if (_player != null) { Vector2 toPlayer = _player.transform.position - transform.position; float dist = toPlayer.magnitude; Vector2 targetSpeed = toPlayer.normalized * maxSpeed; if (dist > targetDistFromPlayer && inWater && _player.state == PlayerMovementState.SWIMMING) { rb.AddForceToAchieveTargetVelocity(targetSpeed, maxForce, velocityForceCurve); rb.drag = .5f; } else { rb.drag = 5; } } } }
void FixedUpdateFly() { bool moveAbilityHeld = player.GetButton("Move Ability"); Vector2 movement = player.GetAxis2D("Horizontal", "Vertical"); //diving if (moveAbilityHeld) { Vector2 diveDirection = ClampVectorToAngleFromVector(movement.normalized, Vector2.down, 135); rb.AddForceToAchieveTargetVelocity(diveDirection * rb.velocity.magnitude, diveForce, diveVelocityForceCurve); Debug.DrawLine(transform.position, transform.position + (Vector3)diveDirection * 5); } //normal gliding else { //lift factor float liftFactor = xVelLiftForceCurve.Evaluate(Mathf.Abs(rb.velocity.x) / xVelForLift); //normal lift if (rb.velocity.y < yVelocityStableRange) { float liftToUse = liftForce * liftFactor; rb.AddForce(Vector2.up * liftToUse); print(liftToUse); } //if we aren't trying to dive, but we're going down fast still, stabilize! if (rb.velocity.y < -yVelocityStableRange) { rb.AddForce(Vector2.up * stabilizationLiftForce * liftFactor); } //now left/right movement if (Mathf.Abs(rb.velocity.x) < glideHorizontalSpeed) { rb.AddForce(movement.x * Vector2.right * glideHorizontalForce); } } }