Начинающий
-
Автор темы
- #1
Я хочу сделать так, чтобы звёзды сравнились и удалялись вне зоны видимости игрока. Но звезды ведут себя странно (то есть звезды начинают дергаться и появляться, например, только позади игрока и тому подобное) и через некоторое время выдается ошибка на 87 строчке: ArgumentOutOfRangeException: 'minValue' cannot be greater than maxValue. Parameter name: minValue
Не могу понять где у меня ошибка в коде
Не могу понять где у меня ошибка в коде
C#:
using System.Collections;
using System.Collections.Generic;
using System.Xml.Schema;
using Unity.VisualScripting;
using UnityEngine;
using Random = System.Random;
public class SpawnStars : MonoBehaviour
{
public GameObject starPrefab;
public GameObject player;
Random starPos = new Random();
private float starPosX;
private float starPosY;
GameObject[] starClones = new GameObject[30];
private void Start()
{
for (int i = 0; i < starClones.Length; i++)
{
starClones[i] = starSpawn(starClones[i]);
}
}
void Update()
{
for (int i = 0; i < starClones.Length; i++)
{
if (starClones[i] != null)
{
bool _isFar = isFar(starClones[i]);
if (_isFar == true)
{
Destroy(starClones[i]);
starClones[i] = starSpawn(starClones[i]);
}
}
}
}
GameObject starSpawn(GameObject star)
{
int random = starPos.Next(1, 4);
switch (random)
{
case 1:
starPosX = FloatRandom((10 - player.transform.position.x), (14 - player.transform.position.x));
starPosY = FloatRandom((player.transform.position.y - 10), (11 - player.transform.position.y));
break;
case 2:
starPosX = FloatRandom((player.transform.position.x - 14), (player.transform.position.x - 10));
starPosY = FloatRandom((player.transform.position.y - 10), (11 - player.transform.position.y));
break;
case 3:
starPosX = FloatRandom((player.transform.position.x - 14), (15 - player.transform.position.x));
starPosY = FloatRandom((6 - player.transform.position.y), (9 - player.transform.position.y));
break;
case 4:
starPosX = FloatRandom((player.transform.position.x - 14), (15 - player.transform.position.x));
starPosY = FloatRandom((player.transform.position.y - 9), (player.transform.position.y - 6));
break;
}
star = Instantiate(starPrefab, new Vector3(starPosX, starPosY, 0), player.transform.rotation);
return star;
}
bool isFar(GameObject star) //Проверка на то находится ли звезда достаточно далеко от игрока или нет
{
bool _isFar;
if (star.transform.position.x - player.transform.position.x >= 15 ||
star.transform.position.x - player.transform.position.x <= -15 ||
star.transform.position.y - player.transform.position.y >= 15 ||
star.transform.position.y - player.transform.position.y <= -15)
{
_isFar = true;
}
else
{
_isFar = false;
}
return _isFar;
}
float FloatRandom(float min, float max)
{
float random = starPos.Next(Convert.ToInt32(100*min), Convert.ToInt32(100*max));
return (random / 100);
}
}