• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

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

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
11 Авг 2021
Сообщения
22
Реакции
1
Я хочу сделать так, чтобы звёзды сравнились и удалялись вне зоны видимости игрока. Но звезды ведут себя странно (то есть звезды начинают дергаться и появляться, например, только позади игрока и тому подобное) и через некоторое время выдается ошибка на 87 строчке: ArgumentOutOfRangeException: 'minValue' cannot be greater than maxValue. Parameter name: minValue
Не могу понять где у меня ошибка в коде
C#:
Expand Collapse Copy
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);
    }
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ну у тебя где-то у floatrandom аргумент min больше чем max. ТО есть как ты рандомное число собираешься получать с таким диапазоном - непонятно


float FloatRandom(float min, float max)
 
Ну у тебя где-то у floatrandom аргумент min больше чем max. ТО есть как ты рандомное число собираешься получать с таким диапазоном - непонятно


float FloatRandom(float min, float max)
И так понятно, что где-то там min больше чем max, но я не могу понять где именно, там вроде везде где вызывается этот метод минимальное значение меньше чем максимальное (сори за тафталогию)
 
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?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
И так понятно, что где-то там min больше чем max, но я не могу понять где именно, там вроде везде где вызывается этот метод минимальное значение меньше чем максимальное (сори за тафталогию)
ну тебе вручную нужно смотреть значения переменных. Так тебе сложно сказать.
Ты учитывай, что тот же transform.position.y может быть также и отрицательным.
Вот твой кусок. Хотя здесь и без этого
starPosY = FloatRandom((player.transform.position.y - 10), (11 - player.transform.position.y));
И в этом случае min больше чем max всегда, когда y больше 10.5
 
ну тебе вручную нужно смотреть значения переменных. Так тебе сложно сказать.
Ты учитывай, что тот же transform.position.y может быть также и отрицательным.
Вот твой кусок. Хотя здесь и без этого
starPosY = FloatRandom((player.transform.position.y - 10), (11 - player.transform.position.y));
И в этом случае min больше чем max всегда, когда y больше 10.5
У тебя и с x такой прикол... Как ты вообще это использовать собираешься? Типа "Ой дай боже чтобы его никто не поставить в + координаты".
 
У тебя и с x такой прикол... Как ты вообще это использовать собираешься? Типа "Ой дай боже чтобы его никто не поставить в + координаты".
Понял, теперь проблема в том как это проверять, только если делать каждый раз проверку координат игрока, но это муторно
Понял, теперь проблема в том как это проверять, только если делать каждый раз проверку координат игрока, но это муторно
Мб есть ещё какой-нибудь способ?
 
Понял, теперь проблема в том как это проверять, только если делать каждый раз проверку координат игрока, но это муторно

Мб есть ещё какой-нибудь способ?
try{} catch{}
 
А ну можно просто перехватываться ошибки, забыл об этом. Одна проблема решена, но почему звёзды дергались на сцене и вообще впринципе начинали вести себя неадекватно через некоторое время
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А ну можно просто перехватываться ошибки, забыл об этом. Одна проблема решена, но почему звёзды дергались на сцене и вообще впринципе начинали вести себя неадекватно через некоторое время
может видео дашь
 
А ну можно просто перехватываться ошибки, забыл об этом. Одна проблема решена, но почему звёзды дергались на сцене и вообще впринципе начинали вести себя неадекватно через некоторое время
тут нужно и видео и хотя бы предположение из-за какой части кода это происходит
 
Видео щас не могу дать, даже хз из-за чего это может быть. Вечером сюда видео закину
 
Даже получилось не вечером
 

Вложения

1661012165018.png

можешь пожалуйста скинуть определение этого метода?
 
Назад
Сверху Снизу