PlayerSpawnPoints.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using UnityEngine;
  2. namespace HQFPSWeapons
  3. {
  4. public class PlayerSpawnPoints : MonoBehaviour
  5. {
  6. [SerializeField]
  7. private float m_MaxVerticalRaycast = 2f;
  8. [SerializeField]
  9. private LayerMask m_GroundLayerMask = 0;
  10. private Transform[] m_Spawnpoints;
  11. public Vector3 GetRandomSpawnPoint()
  12. {
  13. if (m_Spawnpoints != null)
  14. {
  15. Vector3 spawnPoint = m_Spawnpoints[Random.Range(0, m_Spawnpoints.Length)].position;
  16. RaycastHit hit;
  17. if (Physics.Raycast(spawnPoint, -transform.up, out hit, m_MaxVerticalRaycast, m_GroundLayerMask))
  18. {
  19. spawnPoint = hit.point + (Vector3.up * 0.1f);
  20. }
  21. return spawnPoint;
  22. }
  23. else return Vector3.zero;
  24. }
  25. public Quaternion GetRandomRotation()
  26. {
  27. return Quaternion.Euler(0, Random.Range(0, 360), 0);
  28. }
  29. private void Awake()
  30. {
  31. m_Spawnpoints = GetComponentsInChildren<Transform>();
  32. }
  33. }
  34. }