SpellCastingManager.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using UnityEngine;
  2. public class SpellCastingManager : MonoBehaviour
  3. {
  4. public GameObject fireballPrefab;
  5. public GameObject explosionPrefab;
  6. public float fireballSpeed = 10f;
  7. private bool isAiming = false;
  8. private Texture2D aimingCursorTexture; // 👈 Nouveau
  9. private Texture2D defaultCursorTexture; // 👈 Sauvegarde du curseur de base
  10. public float verticalOffset = -1.5f;
  11. public void StartFireballCasting(Texture2D skillIcon)
  12. {
  13. isAiming = true;
  14. defaultCursorTexture = null; // Peut être remplacé par ton propre curseur par défaut si tu veux
  15. aimingCursorTexture = skillIcon;
  16. Cursor.SetCursor(aimingCursorTexture, Vector2.zero, CursorMode.Auto);
  17. Debug.Log("Mode de visée activé !");
  18. }
  19. void Update()
  20. {
  21. if (isAiming)
  22. {
  23. if (Input.GetMouseButtonDown(0)) // Clic gauche pour tirer
  24. {
  25. Vector3 targetPos = GetWorldClickPosition();
  26. if (targetPos != Vector3.zero)
  27. {
  28. LaunchFireball(targetPos);
  29. ResetCursor();
  30. }
  31. }
  32. else if (Input.GetMouseButtonDown(1)) // Clic droit pour annuler
  33. {
  34. Debug.Log("Visée annulée.");
  35. ResetCursor();
  36. }
  37. }
  38. }
  39. Vector3 GetWorldClickPosition()
  40. {
  41. Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  42. if (Physics.Raycast(ray, out RaycastHit hit))
  43. {
  44. return hit.point;
  45. }
  46. return Vector3.zero;
  47. }
  48. void LaunchFireball(Vector3 target)
  49. {
  50. GameObject player = GameObject.FindWithTag("Player");
  51. if (player != null)
  52. {
  53. Vector3 spawnPos = player.transform.position + Vector3.up * verticalOffset;
  54. GameObject fireball = Instantiate(fireballPrefab, spawnPos, Quaternion.identity);
  55. fireball.AddComponent<FireballProjectile>().Setup(target, fireballSpeed, explosionPrefab);
  56. }
  57. else
  58. {
  59. Debug.LogError("[SpellCasting] Aucun Player trouvé dans la scène !");
  60. }
  61. }
  62. void ResetCursor()
  63. {
  64. isAiming = false;
  65. Cursor.SetCursor(defaultCursorTexture, Vector2.zero, CursorMode.Auto); // revienne normal
  66. }
  67. }