Adding basket blocking feature

This commit is contained in:
hz
2026-02-01 15:41:21 -06:00
parent 2d38838efd
commit cb176962a9
3 changed files with 286 additions and 19 deletions
+28 -4
View File
@@ -6,9 +6,11 @@ public class BasketController : MonoBehaviour
public ScoreManager scoreManager;
[SerializeField] private Transform basketHoldPoint;
[SerializeField] private LayerMask trickDetectMask = ~0;
[SerializeField] private float basketSpawnInterval = 3f;
private readonly Collider2D[] overlapHits = new Collider2D[8];
private BoxCollider2D basketCollider;
private TrickController currentTrick;
private float nextBasketSpawnTime;
private void Awake()
{
@@ -18,6 +20,7 @@ public class BasketController : MonoBehaviour
private void FixedUpdate()
{
RefreshTricksInBasket();
TryBasketSpawn();
}
private void OnCollisionEnter2D(Collision2D collision)
@@ -33,10 +36,10 @@ public class BasketController : MonoBehaviour
}
RefreshTricksInBasket();
if (currentTrick != null)
{
return;
}
if (currentTrick != null)
{
return;
}
scoreManager.AddPoints(1);
@@ -78,6 +81,7 @@ public class BasketController : MonoBehaviour
currentTrick = trick;
trick.SetBasketed(true, GetBasketAnchorPosition(trick));
nextBasketSpawnTime = Time.time + basketSpawnInterval;
}
}
@@ -94,6 +98,7 @@ public class BasketController : MonoBehaviour
{
currentTrick = null;
trick.SetBasketed(false);
nextBasketSpawnTime = 0f;
}
}
}
@@ -124,6 +129,7 @@ public class BasketController : MonoBehaviour
{
currentTrick = trick;
trick.SetBasketed(true, GetBasketAnchorPosition(trick));
nextBasketSpawnTime = Time.time + basketSpawnInterval;
}
break;
@@ -139,6 +145,7 @@ public class BasketController : MonoBehaviour
{
currentTrick.SetBasketed(false);
currentTrick = null;
nextBasketSpawnTime = 0f;
return;
}
@@ -162,9 +169,26 @@ public class BasketController : MonoBehaviour
{
currentTrick.SetBasketed(false);
currentTrick = null;
nextBasketSpawnTime = 0f;
}
}
private void TryBasketSpawn()
{
if (currentTrick == null || basketSpawnInterval <= 0f)
{
return;
}
if (Time.time < nextBasketSpawnTime)
{
return;
}
TrickController.TrySpawnAt(currentTrick.transform.position);
nextBasketSpawnTime = Time.time + basketSpawnInterval;
}
private Vector2? GetBasketAnchorPosition(TrickController trick)
{
if (basketHoldPoint != null)