Вопрос Не понимаю где ошибка в коде?

Начинающий
Статус
Оффлайн
Регистрация
11 Авг 2021
Сообщения
22
Реакции[?]
1
Поинты[?]
0
Я хочу сделать так, чтобы звёзды сравнились и удалялись вне зоны видимости игрока. Но звезды ведут себя странно (то есть звезды начинают дергаться и появляться, например, только позади игрока и тому подобное) и через некоторое время выдается ошибка на 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);
    }
}
 
Забаненный
Статус
Оффлайн
Регистрация
22 Мар 2021
Сообщения
1,019
Реакции[?]
315
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ну у тебя где-то у floatrandom аргумент min больше чем max. ТО есть как ты рандомное число собираешься получать с таким диапазоном - непонятно


float FloatRandom(float min, float max)
 
Начинающий
Статус
Оффлайн
Регистрация
11 Авг 2021
Сообщения
22
Реакции[?]
1
Поинты[?]
0
Ну у тебя где-то у floatrandom аргумент min больше чем max. ТО есть как ты рандомное число собираешься получать с таким диапазоном - непонятно


float FloatRandom(float min, float max)
И так понятно, что где-то там min больше чем max, но я не могу понять где именно, там вроде везде где вызывается этот метод минимальное значение меньше чем максимальное (сори за тафталогию)
 
Пользователь
Статус
Оффлайн
Регистрация
19 Авг 2020
Сообщения
222
Реакции[?]
139
Поинты[?]
7K
starPosY = FloatRandom((player.transform.position.y - 10), (11 - player.transform.position.y));
И так понятно, что где-то там min больше чем max, но я не могу понять где именно, там вроде везде где вызывается этот метод минимальное значение меньше чем максимальное (сори за тафталогию)
Ем ты прикалываешься?

если player.transform.position.y = 100
100-10=90
11-100=-89
И типа норм число не меньше 90 и не больше -89?
 
Забаненный
Статус
Оффлайн
Регистрация
22 Мар 2021
Сообщения
1,019
Реакции[?]
315
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
И так понятно, что где-то там min больше чем max, но я не могу понять где именно, там вроде везде где вызывается этот метод минимальное значение меньше чем максимальное (сори за тафталогию)
ну тебе вручную нужно смотреть значения переменных. Так тебе сложно сказать.
Ты учитывай, что тот же transform.position.y может быть также и отрицательным.
Вот твой кусок. Хотя здесь и без этого

starPosY = FloatRandom((player.transform.position.y - 10), (11 - player.transform.position.y));

И в этом случае min больше чем max всегда, когда y больше 10.5
 
Пользователь
Статус
Оффлайн
Регистрация
19 Авг 2020
Сообщения
222
Реакции[?]
139
Поинты[?]
7K
ну тебе вручную нужно смотреть значения переменных. Так тебе сложно сказать.
Ты учитывай, что тот же transform.position.y может быть также и отрицательным.
Вот твой кусок. Хотя здесь и без этого

starPosY = FloatRandom((player.transform.position.y - 10), (11 - player.transform.position.y));

И в этом случае min больше чем max всегда, когда y больше 10.5
У тебя и с x такой прикол... Как ты вообще это использовать собираешься? Типа "Ой дай боже чтобы его никто не поставить в + координаты".
 
Начинающий
Статус
Оффлайн
Регистрация
11 Авг 2021
Сообщения
22
Реакции[?]
1
Поинты[?]
0
У тебя и с x такой прикол... Как ты вообще это использовать собираешься? Типа "Ой дай боже чтобы его никто не поставить в + координаты".
Понял, теперь проблема в том как это проверять, только если делать каждый раз проверку координат игрока, но это муторно
Понял, теперь проблема в том как это проверять, только если делать каждый раз проверку координат игрока, но это муторно
Мб есть ещё какой-нибудь способ?
 
Начинающий
Статус
Оффлайн
Регистрация
28 Янв 2022
Сообщения
23
Реакции[?]
0
Поинты[?]
0
Понял, теперь проблема в том как это проверять, только если делать каждый раз проверку координат игрока, но это муторно

Мб есть ещё какой-нибудь способ?
try{} catch{}
 
Начинающий
Статус
Оффлайн
Регистрация
11 Авг 2021
Сообщения
22
Реакции[?]
1
Поинты[?]
0
А ну можно просто перехватываться ошибки, забыл об этом. Одна проблема решена, но почему звёзды дергались на сцене и вообще впринципе начинали вести себя неадекватно через некоторое время
 
Забаненный
Статус
Оффлайн
Регистрация
22 Мар 2021
Сообщения
1,019
Реакции[?]
315
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А ну можно просто перехватываться ошибки, забыл об этом. Одна проблема решена, но почему звёзды дергались на сцене и вообще впринципе начинали вести себя неадекватно через некоторое время
может видео дашь
 
Начинающий
Статус
Оффлайн
Регистрация
28 Янв 2022
Сообщения
23
Реакции[?]
0
Поинты[?]
0
А ну можно просто перехватываться ошибки, забыл об этом. Одна проблема решена, но почему звёзды дергались на сцене и вообще впринципе начинали вести себя неадекватно через некоторое время
тут нужно и видео и хотя бы предположение из-за какой части кода это происходит
 
Начинающий
Статус
Оффлайн
Регистрация
11 Авг 2021
Сообщения
22
Реакции[?]
1
Поинты[?]
0
Видео щас не могу дать, даже хз из-за чего это может быть. Вечером сюда видео закину
 
Начинающий
Статус
Оффлайн
Регистрация
11 Авг 2021
Сообщения
22
Реакции[?]
1
Поинты[?]
0
Сверху Снизу