# Faceoff System - Quick Reference ## 🎯 Quick Start (3 Steps) 1. **Create Puck**: GameObject → Add PuckController 2. **Tag Teams**: HomeTeam / AwayTeam tags on players 3. **Create Manager**: GameObject → Add FaceoffManager → Link puck **Test**: Press `F` in play mode --- ## 🏒 Key Concepts ### Puck States - **Loose** → Free on ice, anyone can grab - **Carried** → Attached to player ### Faceoff Outcomes - **Home Win** → Puck to home defender - **Away Win** → Puck to away defender - **Struggle** → Puck bounces loose, scramble! ### Possession Indicator - **Yellow ring** = Player has puck - Ring rotates for visibility --- ## 💻 Code Examples ### Start a Faceoff ```csharp FaceoffManager manager = FindObjectOfType(); manager.InitiateFaceoff(centerIcePosition); ``` ### Check Who Has Puck ```csharp if (playerController.HasPuck()) { // Player has possession } ``` ### Shoot ```csharp Vector3 goalDirection = (goal.position - transform.position).normalized; playerController.Shoot(goalDirection, powerMultiplier: 1.0f); ``` ### Pass ```csharp PlayerController teammate = FindBestTeammate(); playerController.Pass(teammate); ``` ### Body Check ```csharp PlayerController opponent = GetNearbyOpponent(); playerController.Check(opponent); // May dislodge puck ``` --- ## 🔧 Common Adjustments ### Make Faceoffs More Random `FaceoffManager.cs` line ~30: ```csharp [SerializeField] private float struggleChance = 0.5f; // 50% struggles ``` ### Change Pickup Range `PuckController.cs` line ~14: ```csharp [SerializeField] private float possessionRadius = 2.0f; // Easier pickup ``` ### Adjust Ice Friction `PuckController.cs` line ~17: ```csharp [SerializeField] private float friction = 0.1f; // Slides further ``` --- ## 🐛 Quick Fixes **Puck won't pickup:** - Add trigger collider to player - Check player tag (HomeTeam/AwayTeam) **Faceoff won't start:** - Verify each team has a Center (Position = C) - Check tags are correct **No visual indicator:** - PlayerController.Start() must run - Check possessionIndicator GameObject created --- ## 📊 Stat Weights (Faceoffs) | Stat | Weight | Impact | |------|--------|--------| | Strength | 30% | Physical win | | Stick Handling | 30% | Puck control | | Awareness | 20% | Read the drop | | Agility | 20% | Quick reaction | --- ## 🎮 Testing Checklist - [ ] Press F → Faceoff starts - [ ] Console shows outcome (Home/Away/Struggle) - [ ] Puck moves after faceoff - [ ] Yellow ring appears on player with puck - [ ] Puck can be picked up when loose - [ ] Both teams have centers tagged correctly --- ## 📁 Files Created 1. `PuckController.cs` - Puck physics & possession 2. `FaceoffManager.cs` - Faceoff logic & sequencing 3. `PlayerController.cs` - Updated with puck methods 4. `FaceoffSetupGuide.cs` - Auto-setup helper 5. `PuckDebugVisualizer.cs` - Debug visualization 6. `FACEOFF_SYSTEM_README.md` - Full documentation --- ## 🚀 Next Steps 1. Test faceoff with F key 2. Adjust stats on center players 3. Watch console for outcome messages 4. Try different faceoff positions 5. Integrate with your game loop **Need help?** Check `FACEOFF_SYSTEM_README.md` for detailed docs!