Пятница, 19 Апреля 2024, 04:19

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • mrFrankensteinДата: Четверг, 25 Августа 2016, 15:23 | Сообщение # 8081
    частый гость
    Сейчас нет на сайте
    Vicka,
    Так не получиться?

    //Move
    if (Input.GetKeyDown(KeyCode.LeftArrow) ) {
    speed = -speedX;
    }
    if (Input.GetKeyUp(KeyCode.LeftArrow)) {
    speed = 0;
    }
    //run

    if (Input.GetKeyDown(KeyCode.LeftShift) && (!Input.GetKeyDown(KeyCode.LeftArrow) )) {
    speedX = runSpeed;
    run = true;
    }
    if (Input.GetKeyUp(KeyCode.LeftShift)) {
    speedX = oldSpeedX;
    run = false;
    }

    }


    Сообщение отредактировал mrFrankenstein - Четверг, 25 Августа 2016, 15:24
    seamanДата: Четверг, 25 Августа 2016, 15:25 | Сообщение # 8082
    старожил
    Сейчас нет на сайте
    скорость меняется только при нажатии кнопок стрелок. Если кнопка стрелки уже нажата - скорость никак не изменится. Изменится только при следующем нажатии на стрелку.
    Я бы сделал так:
    Код
            if (Input.GetKeyDown(KeyCode.LeftArrow)) {
                speed = -speedX;
                }
            if (Input.GetKeyUp(KeyCode.LeftArrow)) {
                speed = 0;
                }
          //run

            if (Input.GetKeyDown(KeyCode.LeftShift)) {
                speed *= runSpeed;
                run = true;
                }
            if (Input.GetKeyUp(KeyCode.LeftShift)) {
                speed /= runSpeed;
                run = false;
                }


    Сообщение отредактировал seaman - Четверг, 25 Августа 2016, 15:26
    mrFrankensteinДата: Четверг, 25 Августа 2016, 15:54 | Сообщение # 8083
    частый гость
    Сейчас нет на сайте
    seaman,
    Цитата seaman ()
    скорость меняется только при нажатии кнопок стрелок. Если кнопка стрелки уже нажата - скорость никак не изменится. Изменится только при следующем нажатии на стрелку.
    Я бы сделал так:
    Код
    if (Input.GetKeyDown(KeyCode.LeftArrow)) {
    speed = -speedX;
    }
    if (Input.GetKeyUp(KeyCode.LeftArrow)) {
    speed = 0;
    }
    //run

    if (Input.GetKeyDown(KeyCode.LeftShift)) {
    speed *= runSpeed;
    run = true;
    }
    if (Input.GetKeyUp(KeyCode.LeftShift)) {
    speed /= runSpeed;
    run = false;
    }

    Если, конечно, это всё не в Update. Иначе, скорость каждый кадр будет делиться.


    Сообщение отредактировал mrFrankenstein - Четверг, 25 Августа 2016, 15:55
    seamanДата: Четверг, 25 Августа 2016, 16:28 | Сообщение # 8084
    старожил
    Сейчас нет на сайте
    Цитата
    скорость каждый кадр будет делиться.

    С чего вдруг? У Вас такая бешенная реакция? Можете каждый кадр нажать и отпустить кнопку?
    И даже ограничение скорости делать не надо...


    Сообщение отредактировал seaman - Четверг, 25 Августа 2016, 16:30
    ShortKedrДата: Четверг, 25 Августа 2016, 16:30 | Сообщение # 8085
    Renword Studio
    Сейчас нет на сайте
    Vicka, mrFrankenstein, ну вы умники =)
    Ещё разочек прочтите что написал seaman и поймите, что GetComponentInChildren<T>() не возвращает массив, а возвращает первый компонента типа T этого generic метода.
    А теперь небольшая логическая задачка, аля "найди отличия":
    GetComponentInChildren
    GetComponentsInChildren


    Сообщение отредактировал ShortKedr - Четверг, 25 Августа 2016, 16:31
    VickaДата: Четверг, 25 Августа 2016, 16:33 | Сообщение # 8086
    Another ART
    Сейчас нет на сайте
    Цитата ShortKedr ()
    Vicka, mrFrankenstein, ну вы умники =)

    я отметила то что бросилось в глаза.
    Если чего-то не знаю я с советами и не лезу.


    ShortKedrДата: Четверг, 25 Августа 2016, 16:51 | Сообщение # 8087
    Renword Studio
    Сейчас нет на сайте
    Цитата Vicka ()
    Хм..
    Вопрос такой.
    Есть бег есть ходьба
    Если нажать в начале кнопку бега потом ходьбы все нормально персонаж бежит. Если нажать кнопку бега во время нажатой кнопки ходьбы персонаж на бег не переходит.
    В чем косяг?

    Vicka, всегда нужно выстраивать правильную логическую цепочку причинно-следственных связей(если что-то не должно работать при определённом условии, то код должен быть написан так, что бы это реально не работало при всех возможных условиях работы этого), а так получается что у тебя все условия при определённых проказах могут сработать, ну формально все, а на самом деле 2 из 4 сработают. Сразу вопрос что такое oldSpeedX, откуда взялся и что с ним происходит. Второй вопрос, как часто этот код происходит, FixedUpdate или Update.

    И оптимальное простое решение, которое должно работать при любых значениях неизвестных мне переменных:
    Код

        if (Input.GetKey(KeyCode.LeftArrow)) {
            speed = -speedX;
        }
        else {
            speed = 0;
        }
          //run

        if (Input.GetKey(KeyCode.LeftShift)) {
            speedX = runSpeed;
            run = true;
        }
        else {
            speedX = oldSpeedX;
            run = false;
        }

            }


    На самом деле я уверен, что это ничего не изменит и вопрос всё таки в общей логике по большей части лежит, вот так)

    Добавлено (25 августа 2016, 16:51)
    ---------------------------------------------

    Цитата Vicka ()
    я отметила то что бросилось в глаза.
    Если чего-то не знаю я с советами и не лезу.

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


    Сообщение отредактировал ShortKedr - Четверг, 25 Августа 2016, 16:46
    mrFrankensteinДата: Четверг, 25 Августа 2016, 19:53 | Сообщение # 8088
    частый гость
    Сейчас нет на сайте
    Цитата ShortKedr ()
    Vicka, mrFrankenstein, ну вы умники =)
    Ещё разочек прочтите что написал seaman и поймите, что GetComponentInChildren<T>() не возвращает массив, а возвращает первый компонента типа T этого generic метода.
    А теперь небольшая логическая задачка, аля "найди отличия":
    GetComponentInChildren
    GetComponentsInChildren


    Спасибо.
    darkangel223Дата: Понедельник, 29 Августа 2016, 18:23 | Сообщение # 8089
    был не раз
    Сейчас нет на сайте
    Добрый день, можете подсказать какой-нибудь видео(текстовой) урок как правильно виставить якоря для Android игры (2d).
    Пробовал сам и то нужные элементы перекрываются, то все выглядит совсем ужасно(
    berilДата: Понедельник, 29 Августа 2016, 18:52 | Сообщение # 8090
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    А чем официальные не угодили ?
    Создание интерфейса (UI) под разные разрешения экрана
    https://www.youtube.com/watch?v=FeheZqu85WI




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    OtinagiДата: Среда, 31 Августа 2016, 08:27 | Сообщение # 8091
    постоянный участник
    Сейчас нет на сайте
    Два вопросика возникло:
    1. Можно ли как-то рейкастить видимую модель, а не её физическую составляющую? В инете видел способ, где ручками доходили до отдельных полигонов и там уже определяли точку пересечения луча. Как-то слишком муторно, неужели нет другого способа или, может, какого готового и проверенного решения на ассете сторе?
    2. Могли бы посоветовать толковую систему декалей, в частности интересуют дырки от пуль. И бесплатную. Опять же с учётом пункта 1, т.к. одна более менее норм система как-то очень странно себя ведёт, если физ. модель не совпадает с видимой, а также при смене способа рендеринга.

    Спасибо.


    «Смерти меньше всего боятся те люди, чья жизнь имеет наибольшую ценность.»
    Иммануил Кант
    mrFrankensteinДата: Вторник, 06 Сентября 2016, 15:48 | Сообщение # 8092
    частый гость
    Сейчас нет на сайте
    Цитата Otinagi ()
    1. Можно ли как-то рейкастить видимую модель, а не её физическую составляющую?

    Попробуете через тег найти.

    if(Hit.collider.tag == "Enemy")
    {
    .....
    }

    Добавлено (06 сентября 2016, 15:48)
    ---------------------------------------------
    Помогите пожалуйста. При помощи райкаста я получаю обьект, он сохраняется в Hit. НО, необходимо влезть в скрипт на обьекте Hit (это враг), а через Hit это сделать не получается. Подскажите, как сделать?


    Сообщение отредактировал mrFrankenstein - Вторник, 06 Сентября 2016, 15:55
    LertmindДата: Вторник, 06 Сентября 2016, 16:15 | Сообщение # 8093
    заслуженный участник
    Сейчас нет на сайте
    mrFrankenstein, варианты:
    Код
    Компонент c = hit.transform.GetComponent<Компонент>();
    Компонент c = hit.collider.GetComponent<Компонент>();
    Компонент c = hit.rigidbody.GetComponent<Компонент>();
    mrFrankensteinДата: Вторник, 06 Сентября 2016, 18:40 | Сообщение # 8094
    частый гость
    Сейчас нет на сайте
    Цитата Lertmind ()
    mrFrankenstein, варианты:
    Код
    Компонент c = hit.transform.GetComponent<Компонент>();
    Компонент c = hit.collider.GetComponent<Компонент>();
    Компонент c = hit.rigidbody.GetComponent<Компонент>();

    Спасибо, помогло)
    berilДата: Вторник, 06 Сентября 2016, 19:20 | Сообщение # 8095
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    GAIA кто то пользуется? У меня намертво редактор тормозит когда нажимаешь "Visualiser" не понимаю как это решить. Деву написал, но пока он ответит..... %)



    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    mrFrankensteinДата: Среда, 07 Сентября 2016, 01:23 | Сообщение # 8096
    частый гость
    Сейчас нет на сайте
    Скажите, как добавить Gif в UI так, чтобы она продолжила воспроизводиться?
    VickaДата: Среда, 07 Сентября 2016, 09:30 | Сообщение # 8097
    Another ART
    Сейчас нет на сайте
    mrFrankenstein,
    Цитата mrFrankenstein ()
    Скажите, как добавить Gif в UI так, чтобы она продолжила воспроизводиться?

    Да вы батенька с извера...
    Так но на кой?


    LertmindДата: Среда, 07 Сентября 2016, 12:59 | Сообщение # 8098
    заслуженный участник
    Сейчас нет на сайте
    Vicka, зависимость от System.Drawing.dll, шикарно.
    mrFrankenstein, гугл даёт неплохой проект UnityGifDecoder (видюшка от него https://www.youtube.com/watch?v=WRHKV7BEKhc). Конечно для UI придётся адаптировать и как пишет автор, могут быть проблемы производительности на мобильных устройства.
    Использовать gif - тупость конечно, но если очень надо проще сделать разложение в атлас со всеми настройками.
    BarbatosДата: Среда, 07 Сентября 2016, 13:18 | Сообщение # 8099
    3D-моделлер/Руководитель
    Сейчас нет на сайте
    Lertmind,
    А смысл, если есть куча конверторов гифа в анимрованные спрайты?
    http://gif2sprite.com/


    Его остатки и на хлеб не намазать. Мой тебе совет Пабло - относись к жизни как к веселухе, но непродолжительной. @Эш
    LertmindДата: Среда, 07 Сентября 2016, 13:53 | Сообщение # 8100
    заслуженный участник
    Сейчас нет на сайте
    Barbatos, я написал об этом "Использовать gif - тупость конечно, но если очень надо проще сделать разложение в атлас со всеми настройками.".
    Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вопрос-[ответ] по Unity (Задаём свои вопросы)
    Поиск:

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