Ответы пользователя по тегу C#
  • Как решить проблему с компиляцией .apk файла в Unity?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Неужели из лога не ясно что у вас две папки для ресурсов гугл сервисов
    "res\values"
    вам даже пишет что одно для версии 10.0.1 второе для версии 10.2.0.
    Удалите старую. и вообще удалите сервисы версии 10.0.1.
    Ответ написан
    Комментировать
  • Как исправить CS0119?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    А теперь по делу.
    transform.rotation = Quaternion (new Vector3 (transform.rotation, transform.rotation, rotation));
    Вы СОЗДАЕТЕ объект типа Quaternion , а при создании объектов используется new (выделение памяти и тд и тп).
    тоесть должно бы быть
    transform.rotation = new Quaternion (new Vector3 (transform.rotation, transform.rotation, rotation));

    Если же все таки вы используете не новый созданный объект, а хотите просто метод над кватернионом , то было бы
    Quaternion.НужныйМетод(параметры метода). а в вашем случае вы использовать пробуете конструктор объекта (параметры для него) без выделения как такового объета

    Многовато повторений и так уже, но повторюсь - вам бы какой нибудь курс "Основы программирования" в обязательном порядке
    Ответ написан
    1 комментарий
  • Как написать библиотеку под Unity3D чтобы она работала на Android?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Вот вам пару ссылка из документации про плагины.
    https://docs.unity3d.com/Manual/NativePlugins.html
    И вот урок по ним
    https://unity3d.com/ru/learn/tutorials/topics/scri...
    Ответ написан
  • Стрельба из лука, как реализовать выброс стрелы?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    arrowPrefab у вас объект с Rigidbody ?
    Отлично работает AddForce в случае наличия физического тела. Просто не забыть что тип силы бывает разный, для случая стрелы отлично подходит импульс.

    как то так
    arrow.AddForce(arrow.transform.forward * forcePower, ForceMode.Impulse);
    Ответ написан
    4 комментария
  • Не перемещается персонаж?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Давайте я вам укажу на основную проблему в логике

    tempPos.z = tempPos.z * speed * Time.deltaTime;//изменяем позицию игрока

    вот в этой строчке.
    просто поподставляйте значения. ДельтаТайм по сути меньше 1, а скорость константа. Положение персонажа тоже по сути константа.

    Тоесть по сути если по началу положение tempPos.z отличное от нуля, то вы его просто уменьшаете, стремите к нулю, беря дробную часть.

    Как вариант вам нужно что-то вроде прибавления к текущей позиции смещения
    tempPos.z = tempPos.z + speed * Time.deltaTime * transform.forward;//к текущей позиции добавили в направлении вперед немного))
    Ответ написан
    1 комментарий
  • Как реализовать триггеры?

    MrMureno
    @MrMureno
    VR for all
    Когда то давно использовали вот такую штуку www.quartz-scheduler.net и документация вроде была, и в инетах найти можно было решение проблем. хотя и были свои заморочки из-за того что использовали не как планировщик задач) а как жуткий костыль для отложенного выполнения задач на сервере))))
    Ответ написан
    Комментировать
  • Как правильно рейкастить тач на 2д объект?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    А теперь по делу.
    Простой рейкаст - работает с 3d коллайдерами.
    Для 2D есть своя физика и рейкасты. что-то вроде :

    var worldTouch = Camera.main.ScreenToWorldPoint(touch.Position);
    var hit : RaycastHit2D;
    hit = Physics2D.Raycast (Vector2(worldTouch.x,worldTouch.y),Vector2.zero, Mathf.Infinity);

    почитайте чуток документацию ;)
    Ответ написан
    3 комментария
  • Как реализовать двойной клик (Double Click)?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    простая реализация?) и на объекты кликать.
    тогда если умеете кодить (судя по описанию вопроса маловероятно) вот вам план так сказать

    1) отследить первое нажатие и запустить таймер
    2) отследить второе нажатие
    3) проверить что таймер не больше значения (что достаточно быстро совершен двойной клик, потом этот параметр можно и поднастроить для приятного экспириенса)
    4) проверить что первый и второй клик произошли рядом (координаты не далеко, какие-нибудь меньше 1 процента экранного места друг от друга)

    если и таймер маленький и клики рядом - считает что был дабл клик.

    а там хоть лучом, хоть по интерфеису, принцип останется таким же.

    и все это не оч сложно( но с телефона писать сюда для вас код увы) да и полезно будет самому сделать
    Ответ написан
    3 комментария
  • Как вращает кватернион?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    и снова здраствуйте Дмитрий)
    "с достаточной ли скоростью" ? что?
    кватернионы это всего лишь вариант математического описания поворотов, для более "правильного" что-ли их сложения и прочих операций)
    С какой скоростью будете вращать - с такой и будет вращаться.
    Заменить этакий "определитель попали в зону или нет" состоящий из коллайдера, на объект который во все стороны лучи шлет. Скорее всего сомнительная затея. Как по производительности, так еще и куча проблем если вдруг нужна форма не круга, а квадрат, ромб. Не дай боже в объеме, а не просто в плоскости надо будет.

    Легче уже тогда завести список объектов и после их перемещения проходить по списку и определять расстояние) мол ближе чем 5 метров к центру "источника"
    Ответ написан
    7 комментариев
  • Как можно райкастом узнать колличество полигонов у объекта?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Правильно сказали, у вас после рейкаста
    void FixedUpdate()
        {
            RaycastHit hit;
    
            if (Physics.Raycast(transform.position, -Vector3.up, out hit))
            {
                print("Found an object - distance: " + hit.distance);
            }
        }


    есть (в объекте hit) ссылка на коллайдер/объект.

    а дальше, все что хотите достаете

    hit.collider.GetComponent<ЛЮБАЯ ИНФА>()
    mesh - геометрия
    transform - позиция и размеры
    ну и дальше из рендера материал, текстуру и прочая любая гадость навешанная на объект с этим коллайдером.
    Ответ написан
    Комментировать
  • Как написать OnCollisionEnter()?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    OnCollisionEnter там параметр коллизия, а не колллайдер. У коллизии не бывает тегов и прочего.
    oid OnCollisionEnter(Collision bullet)
        {
            if (bullet.(ТУТ УЗНАТЬ КОЛЛАЙДЕР ИЗ КОЛЛИЗИИ).CompareTag("Ring"))
            {
                r = true;
                Debug.Log("R");
            }


    и дальше по аналогии. Коллизия - по сути просто инфа о точках пересечения.
    Ответ написан
    3 комментария
  • Как можно используя трансформ не проходить объекты с колайдером насквозь?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Уже написали использовать Rigidbody и двигать его через методы Rigidbody .
    даже в документации написано было,что двигать через трансформ и хотеть обрабатывать корректно физику столкновений - как бы глупо.

    https://docs.unity3d.com/ScriptReference/Rigidbody...
    Ответ написан
    Комментировать
  • Как сделать одинаковую силу прыжка в unity?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    docs.unity3d.com/ScriptReference/Rigidbody.AddForc...

    Там есть параметр - тип применяемой силы, вам я так понимаю нужен docs.unity3d.com/ScriptReference/ForceMode.Impulse.html

    Импульс. разовое применение силы. эдакий пинок под зад)
    Ответ написан
    Комментировать