Пятница, 22 Ноября 2024, 06:46

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • drcrackДата: Пятница, 01 Марта 2019, 07:10 | Сообщение # 8721
    старожил
    Сейчас нет на сайте
    Physics2D.Raycast принимает начальную позицию и направление
    Debug.DrawLine принимает начальную и конечную позиции
    ты же передаешь в них одни и те же вектора и удивляешься что оно не туда линию рисует
    попробуй подсказки в IDE почитать когда аргументы вбиваешь прежде чем искать баги в юнити

    Цитата
    Магия была нужна, так как обычным методом, как у всех, не работало.

    что у тебя не работало? без this свойство не читалось? или неявный каст не работал?
    тебе кроме багов юнити еще и баги c# мешают жить теперь? :D

    Цитата
    и еще одна тема, проблема с рейкастом так же на официальном форуме.

    у него маска 11 вместо 1 << 11
    но дело конечно в багах юнити

    Цитата
    if (hitToBite != null){

    эта проверка не имеет смысла, оно никогда не будет null, даже если рейкаст ничего не заденет (проверять нужно hitToBite.collider != null)

    кроме того ее надо сделать локальной переменной чтобы не засорять область видимости + чтобы оно было на стеке, для производительности


    Сообщение отредактировал drcrack - Пятница, 01 Марта 2019, 07:28
    ДанилаСтержневДата: Пятница, 01 Марта 2019, 17:13 | Сообщение # 8722
    постоянный участник
    Сейчас нет на сайте
    Народ, помогите, пожалуйста. На уровне существует несколько одинаковых объектов, допустим 6. Им нужно раздать значения переменной из списка (т.е. заранее заданных). Например, список: картошка, морковь, помидор, яблоко, арбуз, чеснок. Но таким образом, чтобы все значения были розданы и не было объектов с одинаковым значением. Подскажите, пожалуйста, если не код, то хотя бы логику такой механики для написания кода. Можно также спавнить эти объекты, задавая попутно значения

    Красочная сюжетно ориентированная игра-головоломка
    drcrackДата: Пятница, 01 Марта 2019, 18:18 | Сообщение # 8723
    старожил
    Сейчас нет на сайте
    Код

    public static T PullRandom<T>(this List<T> list) {

        if (list.Count == 0) return default(T);

        var index = UnityEngine.Random.Range(0, list.Count);
        var result = list[index];

        list.RemoveAt(index);

        return result;
    }

    ^ вытаскивает из списка случайное значение
    т.е. ты используешь как-то так:
    Код

    list.Add("картошка");
    list.Add("помидор");
    // ...
    gameObject1.tag = list.PullRandom();
    gameObject2.tag = list.PullRandom();


    Сообщение отредактировал drcrack - Пятница, 01 Марта 2019, 18:19
    web_sstasДата: Пятница, 01 Марта 2019, 18:30 | Сообщение # 8724
    частый гость
    Сейчас нет на сайте
    drcrack, опередил меня с моим говнокодом), что, кстати возвращает return default(T)? Null или структуру какую-то?
    drcrackДата: Пятница, 01 Марта 2019, 18:38 | Сообщение # 8725
    старожил
    Сейчас нет на сайте
    зависит от типа
    если reference тип то null
    если например int то 0
    и тд
    ДанилаСтержневДата: Пятница, 01 Марта 2019, 20:50 | Сообщение # 8726
    постоянный участник
    Сейчас нет на сайте
    drcrack, если вас не затруднит, можно комментарии к каждой строчке? А то, я гуманитарий)

    Красочная сюжетно ориентированная игра-головоломка
    YanfireДата: Пятница, 01 Марта 2019, 23:11 | Сообщение # 8727
    был не раз
    Сейчас нет на сайте
    Ух, атаманы-молодцы, беда!
    Начну пожалуй: Скачал я с просторов интернета, известный ассет(CETO OCEAN SYSTEM), для работы с водой.
    Так вот и так как ассет уже немолодой, а его поддержка автором прекратилась, то Юнити его уже не переваривает, а именно, выдает ошибки в скриптах при импорте пакета в проект. Они связаны с устаревшим API скриптов. Обновление API скриптов не дало никаких результатов, мне выдалось сообщение:
    [img]https:///docs.unity3d.com/ru/530/uploads/Main/APIUpdaterOtherErrors.png[/img]
    “Some scripts have compilation errors which may prevent obsolete API usages to get updated. Obsolete API updating will continue automatically after these errors get fixed.”
    То бишь на русском:"Некоторые скрипты имеют ошибки компиляции, которые могут препятствовать обновлению устаревших API. Обновление устаревших API будет продолжаться автоматически после исправления этих ошибок.”
    Всего ошибок в консоли 187, но разновидности лишь 2: CS0117 и CS1061(2-я преобладает многократно).

    Кто знает как бороться сей напастью, слезно прошу ответить!


    Сообщение отредактировал Yanfire - Суббота, 02 Марта 2019, 23:44
    drcrackДата: Суббота, 02 Марта 2019, 08:00 | Сообщение # 8728
    старожил
    Сейчас нет на сайте
    Цитата
    drcrack, если вас не затруднит, можно комментарии к каждой строчке? А то, я гуманитарий)

    чето лень. какие именно строчки непонятны?)

    Цитата
    Кто знает как бороться сей напастью, слезно прошу ответить!

    для начала скопировать все 187 ошибок, залить на pastebin.com и тут оставить ссылку
    mmmaksДата: Суббота, 02 Марта 2019, 12:44 | Сообщение # 8729
    был не раз
    Сейчас нет на сайте
    Народ, здравствуйте!
    Помогите начинающему создателю игр.

    Хочу сделать игру для Android - аркада, внешне напоминающая Бонус уровень из игры Соник, как на картинке (при желании можно глянуть "Sonic Bonus Level - YouTube").


    Игр раньше не делал, но туториалы разные изучал, правдо давно это было.
    Пара вопросов:
    1. Что лучше для такой игры 2D или 3D?
    Камера будет стационарной. Двигаться будет земля и объекты. В принцепе игра явно 3D, но реализовать можно и в 2D, если будет значительное преимущество в производительности.

    2. Какой версией Unity лучше пользоваться ? Какаю стабильнйю версию посоветуете?
    Просто скачал последнюю версию Unity (2018.3.6), но старые проекты после конвертации не работают (в принцепе не большая потеря). Еще из Asset Store я так понял тоже не все работает.
    ДанилаСтержневДата: Суббота, 02 Марта 2019, 17:34 | Сообщение # 8730
    постоянный участник
    Сейчас нет на сайте
    Цитата drcrack ()
    чето лень. какие именно строчки непонятны?)

    Добавление элементов списка просто для его формирования использовать?


    Красочная сюжетно ориентированная игра-головоломка
    drcrackДата: Суббота, 02 Марта 2019, 17:38 | Сообщение # 8731
    старожил
    Сейчас нет на сайте
    да, это пример
    ДанилаСтержневДата: Воскресенье, 03 Марта 2019, 21:12 | Сообщение # 8732
    постоянный участник
    Сейчас нет на сайте
    Как найти ближайший экземпляр объекта?
    Вот так
    Код
    Transform GetClosestEnemy(Transform[] enemies)
    {
        Transform tMin = null;
        float minDist = Mathf.Infinity;
        Vector3 currentPos = transform.position;
        foreach (Transform t in enemies)
        {
            float dist = Vector3.Distance(t.position, currentPos);
            if (dist < minDist)
            {
                tMin = t;
                minDist = dist;
            }
        }
        return tMin;
    }

    Добавлено (06 Марта 2019, 13:56)
    ---------------------------------------------
    Народ, подскажите. Если объект становится дочкой другого, будет ли работать проверка столкновения по его имени или тегу?


    Красочная сюжетно ориентированная игра-головоломка

    Сообщение отредактировал ДанилаСтержнев - Понедельник, 04 Марта 2019, 15:37
    drcrackДата: Среда, 06 Марта 2019, 14:37 | Сообщение # 8733
    старожил
    Сейчас нет на сайте
    Цитата
    Как найти ближайший экземпляр объекта?
    Вот так

    если это происходит часто и обьектов много, то для оптимизации под мобилки, можно использовать квадрат расстояния:
    Код

    // float dist = Vector3.Distance(t.position, currentPos);
    float dist = (t.position - currentPos).sqrMagnitude;

    а если дело происходит на плоскости, то можно вообще исключить одну координату (предположим что это 2д вид сбоку, т.е. нету Z):
    Код

    float dist = t.position.x * currentPos.x +t.position.y * currentPos.y;

    ну это мелочи канеш, прост мне делать нех :D

    Цитата
    Народ, подскажите. Если объект становится дочкой другого, будет ли работать проверка столкновения по его имени или тегу?

    так, а что именно значит "проверка столкновения по его имени или тегу"?
    ДанилаСтержневДата: Среда, 06 Марта 2019, 19:38 | Сообщение # 8734
    постоянный участник
    Сейчас нет на сайте
    Цитата drcrack ()
    так, а что именно значит "проверка столкновения по его имени или тегу"?

    Будет ли зафиксировано столкновение или сработает ли триггер

    Есть код
    Код
    void OnTriggerEnter (Collider col)
        {
      if (col.gameObject.tag == "Picture") {

       Debug.Log ("slotNumber");
      }
        }
    Вроде бы стандартный. На этом объекте есть коллайдр с включеным триггером, на другом объекте есть ригидбоди и коллайдр. Все должно работать, но не работает. Мне нужно срабатывание, если второй объект является дочерним, но не работает даже если он сам по себе


    Красочная сюжетно ориентированная игра-головоломка

    Сообщение отредактировал ДанилаСтержнев - Среда, 06 Марта 2019, 19:40
    drcrackДата: Среда, 06 Марта 2019, 20:41 | Сообщение # 8735
    старожил
    Сейчас нет на сайте
    Попробуй без if ты может просто не тот обьект проверяешь
    ДанилаСтержневДата: Воскресенье, 10 Марта 2019, 18:15 | Сообщение # 8736
    постоянный участник
    Сейчас нет на сайте
    Насколько затратен по производительности процесс спавна экземпляров объекта? Есть ли случаи, когда от него стоит отказаться в пользу другого метода?

    Красочная сюжетно ориентированная игра-головоломка
    drcrackДата: Воскресенье, 10 Марта 2019, 18:50 | Сообщение # 8737
    старожил
    Сейчас нет на сайте
    затратен
    если спаунишь много и часто, используй пулинг
    если спаунишь ОЧЕНЬ много подумай о том чтобы рендерить это все без создания обьектов (т.е. через Graphics.Draw*, CommandBuffers или вообще на GPU)
    ДанилаСтержневДата: Воскресенье, 10 Марта 2019, 19:07 | Сообщение # 8738
    постоянный участник
    Сейчас нет на сайте
    Если я спавню 10 экземпляров раз в минуту, стоит ли на этом сэкономить?

    Красочная сюжетно ориентированная игра-головоломка

    Сообщение отредактировал ДанилаСтержнев - Воскресенье, 10 Марта 2019, 19:14
    drcrackДата: Воскресенье, 10 Марта 2019, 19:19 | Сообщение # 8739
    старожил
    Сейчас нет на сайте
    если ничего не тормозит то забей
    tseriesДата: Четверг, 28 Марта 2019, 10:45 | Сообщение # 8740
    уже был
    Сейчас нет на сайте
    Приветствую всех. Мой вопрос заключается в следующем: необходимо сделать движение игрока с мячом примерно как на данной гиф. Создана модель игрока, настроен рэгдол, есть мяч с определенной массой, записана и импортирована похожая анимация. Каким образом можно добиться синхронизации между анимацией и мячом?
    Сначала я подумал, что есть два возможных варианта: 1) Пытаться работать через реальную коллизию колайдера ноги и мяча либо 2)Химичить с IsKinematiс или перемещать между слоями чтобы временно отключать взаимодействия физики и искусственно передвигать мяч, что уже кажется не очень хорошим ходом.
    В первом случае не вижу каким образом в принципе можно контролировать силу попадания по мячу, а во втором не очень понятно как подгонять мяч под саму анимацию. Из этой же области вопрос реализации чеканки мяча, но уже более явно (в конце гифки).
    Возможно есть какой-то логичный способ контролировать взаимодействие мяча и игрока? Задача казалось бы базовая, но с моим не самым большим опытом, видимо, упускаю что-то важное. Сейчас мне хотя бы понять направление в котором следует копать дальше.

    Гиф, о которой идет речь
    http://rgho.st/7xwDy2p4M


    Сообщение отредактировал tseries - Четверг, 28 Марта 2019, 10:48
    Поиск:

    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг