GrenadeLauncher.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using UnityEngine;
  2. public class GrenadeLauncher : MonoBehaviour
  3. {
  4. public GameObject grenadePrefab;
  5. public Transform grenadeSpawnPoint;
  6. public float launchForce = 20f;
  7. public float upwardForce = 5f;
  8. public float fireRate = 1.0f;
  9. private float nextFireTime = 0f;
  10. public void FireGrenade()
  11. {
  12. if (Time.time < nextFireTime)
  13. {
  14. return;
  15. }
  16. if (!grenadePrefab || !grenadeSpawnPoint)
  17. {
  18. Debug.LogError("Grenade Prefab or Spawn Point is not assigned in the Grenade Launcher.");
  19. return;
  20. }
  21. nextFireTime = Time.time + fireRate;
  22. var grenadeInstance = Instantiate(grenadePrefab, grenadeSpawnPoint.position, grenadeSpawnPoint.rotation);
  23. var grenadeRigidbody = grenadeInstance.GetComponent<Rigidbody>();
  24. if (grenadeRigidbody)
  25. {
  26. var forceDirection = grenadeSpawnPoint.forward * launchForce + grenadeSpawnPoint.up * upwardForce;
  27. grenadeRigidbody.AddForce(forceDirection, ForceMode.Impulse);
  28. }
  29. else
  30. {
  31. Debug.LogError("The Grenade Prefab is missing a Rigidbody component.");
  32. }
  33. }
  34. }