Fix bug with Pulver not returning to his usual movement after item pickup

This commit is contained in:
Michal Pikulski
2025-10-12 01:17:21 +02:00
parent d5b30bdd99
commit f150ad0ce4

View File

@@ -335,28 +335,19 @@ public class FollowerController: MonoBehaviour
} }
OnPickupArrived?.Invoke(); OnPickupArrived?.Invoke();
// Wait briefly, then return to player // Brief pause at the item before returning
yield return new WaitForSeconds(_interactionSettings.FollowerPickupDelay); yield return new WaitForSeconds(_interactionSettings.FollowerPickupDelay);
if (_aiPath != null && playerTransform != null)
{
_aiPath.maxSpeed = _followerMaxSpeed;
_aiPath.destination = playerTransform.position;
}
_isReturningToPlayer = true;
// Wait until follower returns to player (2D distance)
while (playerTransform != null && Vector2.Distance(new Vector2(transform.position.x, transform.position.y), new Vector2(playerTransform.position.x, playerTransform.position.y)) > _settings.StopThreshold)
{
yield return null;
}
_isReturningToPlayer = false;
OnPickupReturned?.Invoke();
// Reset follower speed to normal after pickup // Reset follower speed to normal after pickup
_followerMaxSpeed = _defaultFollowerMaxSpeed; _followerMaxSpeed = _defaultFollowerMaxSpeed;
if (_aiPath != null) if (_aiPath != null)
_aiPath.maxSpeed = _followerMaxSpeed; _aiPath.maxSpeed = _followerMaxSpeed;
// Immediately resume normal following behavior
_isManualFollowing = true; _isManualFollowing = true;
if (_aiPath != null) if (_aiPath != null)
_aiPath.enabled = false; _aiPath.enabled = false;
_pickupCoroutine = null; _pickupCoroutine = null;
} }
@@ -382,6 +373,16 @@ public class FollowerController: MonoBehaviour
// Signal arrival // Signal arrival
OnPickupArrived?.Invoke(); OnPickupArrived?.Invoke();
// Reset follower speed to normal after reaching the point
_followerMaxSpeed = _defaultFollowerMaxSpeed;
if (_aiPath != null)
_aiPath.maxSpeed = _followerMaxSpeed;
// Immediately resume normal following behavior
_isManualFollowing = true;
if (_aiPath != null)
_aiPath.enabled = false;
_pickupCoroutine = null; _pickupCoroutine = null;
} }