| 1234567891011121314151617181920212223242526272829303132333435363738 |
- using TMPro.Examples;
- using Unity.VisualScripting;
- using UnityEngine;
- public class GenerateOrbs : MonoBehaviour
- {
- public GameObject orb;
- [SerializeField] int spawnRadius;
- [SerializeField] int maximumOrbs;
- public void GenerateOrb(Transform playerTransform)
- {
- int spawnedOrbCounter = 0;
- int attempts = 0;
- int maxAttempts = maximumOrbs * 10;
- while (spawnedOrbCounter < maxAttempts && attempts < maxAttempts)
- {
- attempts++;
- float spawnX = Random.Range(-spawnRadius, spawnRadius) + playerTransform.position.x;
- float spawnZ = Random.Range(-spawnRadius, spawnRadius) + playerTransform.position.z;
- Vector3 rayOrigin = new Vector3(spawnX, 50f, spawnZ);
- if(Physics.Raycast(rayOrigin, Vector3.down, out RaycastHit hit, 100f)){
- if (hit.collider.CompareTag("Floor"))
- {
- Vector3 spawnPosition = hit.point + new Vector3(0, 0.5f, 0);
- if(spawnedOrbCounter < maximumOrbs)
- {
- Instantiate(orb, spawnPosition, Quaternion.identity);
- spawnedOrbCounter++;
- }
- }
- }
- }
- }
- }
|