Пятница, 29 Марта 2024, 14:13

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • LertmindДата: Вторник, 29 Марта 2016, 01:36 | Сообщение # 7701
    заслуженный участник
    Сейчас нет на сайте
    llogi, как вариант, текст тоже можешь добавить в префаб, а после создания установить у них родителя Canvas с помощью Transform.SetParent.
    Чтобы после установки родителя не терялась позиция, копируешь anchoredPosition у RectTransform, а потом ставишь:
    Код
        public GameObject TextP;
        public Transform CanvasT;

        void Start()
        {
            GameObject go = Instantiate<GameObject>(TextP);
            RectTransform rt = go.GetComponent<RectTransform>();
            Vector2 ap = rt.anchoredPosition;
            rt.SetParent(CanvasT);
            rt.anchoredPosition = ap;
        }
    Возможно есть более элегантный способ.


    Сообщение отредактировал Lertmind - Вторник, 29 Марта 2016, 02:01
    allodsДата: Вторник, 29 Марта 2016, 03:07 | Сообщение # 7702
    почти ветеран
    Сейчас нет на сайте
    У кого такая проблема как у меня?
    В UI toggle вызывает 2 раза функцию при нажатии... ? angry
    LertmindДата: Вторник, 29 Марта 2016, 16:05 | Сообщение # 7703
    заслуженный участник
    Сейчас нет на сайте
    allods, похоже только у тебя, в новом проекте в Unity 5.3.4f1 всё работает правильно. Если хочешь решить проблему, то стоит предоставить больше информации.
    allodsДата: Среда, 30 Марта 2016, 16:39 | Сообщение # 7704
    почти ветеран
    Сейчас нет на сайте
    у меня 5,3,2f1

    Добавлено (30 марта 2016, 16:39)
    ---------------------------------------------


    Сообщение отредактировал allods - Среда, 30 Марта 2016, 16:47
    БозингарДата: Четверг, 31 Марта 2016, 10:11 | Сообщение # 7705
    почетный гость
    Сейчас нет на сайте
    Что-то я упустил... А куда из пятой версии пропал MovePosition? В документации почему-то ответа не нашёл.
    _________________

    Вроде разобрался.


    #Хийвэл бүү ай, айвал бүү хий.

    Сообщение отредактировал Бозингар - Четверг, 31 Марта 2016, 10:30
    STRATEG766Дата: Четверг, 31 Марта 2016, 20:53 | Сообщение # 7706
    частый гость
    Сейчас нет на сайте
    Как сделать , чтобы игрок при столкновении с некоторыми объектами, игрок проходил сквозь объектов?
    seamanДата: Четверг, 31 Марта 2016, 22:50 | Сообщение # 7707
    старожил
    Сейчас нет на сайте
    Цитата STRATEG766 ()
    Как сделать , чтобы игрок при столкновении с некоторыми объектами, игрок проходил сквозь объектов?

    http://docs.unity3d.com/Manual/LayerBasedCollision.html
    berilДата: Четверг, 31 Марта 2016, 23:51 | Сообщение # 7708
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Ребят есть к примеру обьект ISItemBase item. Как создать копию этого обьекта item ? Не хочется вручную все переменные назначать.....



    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    LertmindДата: Пятница, 01 Апреля 2016, 00:54 | Сообщение # 7709
    заслуженный участник
    Сейчас нет на сайте
    beril, это легко ищется. В C# для маленьких классов надо самому писать Copy/Clone методы, для больших используют сериализацию. Здесь http://stackoverflow.com/questions/78536/deep-cloning-objects пример метода клонирования через сериализацию, класс должен быть с атрибутом Serializable и его поля иметь сериализуемые типы, например int подойдёт, а Vector3 уже нет.
    berilДата: Пятница, 01 Апреля 2016, 01:57 | Сообщение # 7710
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Цитата Lertmind ()
    beril, это легко ищется. В C# для маленьких классов надо самому писать Copy/Clone методы, для больших используют сериализацию. Здесь http://stackoverflow.com/questions/78536/deep-cloning-objects пример метода клонирования через сериализацию, класс должен быть с атрибутом Serializable и его поля иметь сериализуемые типы, например int подойдёт, а Vector3 уже нет.

    спасибо, но я уже понял, что "волшебного" способа нету... biggrin Проще вручную присвоить переменным значения wink




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    seamanДата: Пятница, 01 Апреля 2016, 08:53 | Сообщение # 7711
    старожил
    Сейчас нет на сайте
    Есть "волшебный" способ!
    Object.MemberwiseClone
    Цитата
    Метод MemberwiseClone создает поверхностную копию текущего объекта, а именно он создает новый объект, а затем копирует все нестатические поля текущего объекта в этот новый объект. Если поле имеет тип значения, выполняется копирование разрядной поля. Если же поле относится к ссылочному типу, то копируются ссылки, но не сами объекты, на которые они указывают; следовательно, ссылки в исходном объекте и в его клоне указывают на один и тот же объект.
    allodsДата: Пятница, 01 Апреля 2016, 15:04 | Сообщение # 7712
    почти ветеран
    Сейчас нет на сайте
    Ребят, у меня есть объект с Rigidbody и 2мя wheel collider.

    Нужно повернуть объект через rigidbody.AddRelativeTorque по горизонтали.
    Проблема в том что не возможно повернуть объект таким способом покуда есть 2 wheel collider а с motorTorque = 0. Такого не было в Unity4, появилось в unity 5.

    Я мог вертеть через rigidbody.AddRelativeTorque к примеру машину с 4 колесами без проблем. Они скользили . В Unity5 даже с силой 99999м объект просто отказывается вертеться, как будто колеса приклеены.
    Как можно это исправить ?
    STRATEG766Дата: Пятница, 01 Апреля 2016, 16:29 | Сообщение # 7713
    частый гость
    Сейчас нет на сайте
    Цитата seaman ()
    http://docs.unity3d.com/Manual/LayerBasedCollision.html

    Спасибо, то что надо
    LertmindДата: Пятница, 01 Апреля 2016, 20:47 | Сообщение # 7714
    заслуженный участник
    Сейчас нет на сайте
    Цитата allods ()
    Нужно повернуть объект через rigidbody.AddRelativeTorque по горизонтали.
    Ты про ось Y?
    Цитата allods ()
    В Unity5 даже с силой 99999м объект просто отказывается вертеться, как будто колеса приклеены.
    Не правда, я сейчас попробовал. Зависит от массы, у меня масса 100 (колёса по 20) и силы в 100 хватает чтобы расшатать машину:
    Код
    void FixedUpdate()
    {
         float turn = Input.GetAxis("Horizontal");
         rb.AddRelativeTorque(Vector3.up * 100f * turn);
    }

    Можно вообще без учёта массы с ForceMode.Acceleration. Если хочешь "машину на льду", то ставишь Suspension Distance в 0.
    Я на самом деле не понял зачем тебе машину шатать.


    Сообщение отредактировал Lertmind - Пятница, 01 Апреля 2016, 20:49
    allodsДата: Воскресенье, 03 Апреля 2016, 18:35 | Сообщение # 7715
    почти ветеран
    Сейчас нет на сайте
    Цитата Lertmind ()
    Можно вообще без учёта массы с ForceMode.Acceleration. Если хочешь "машину на льду", то ставишь Suspension Distance в 0.
    Я на самом деле не понял зачем тебе машину шатать.

    Не шатать а вертеть.
    Хз но у меня с массой в 10к при силе в 2000 не вертит ее
    LertmindДата: Воскресенье, 03 Апреля 2016, 19:43 | Сообщение # 7716
    заслуженный участник
    Сейчас нет на сайте
    Цитата allods ()
    Хз но у меня с массой в 10к при силе в 2000 не вертит ее
    Ха, там при массе 1000 уже надо силы порядка 10000 или 100000 не помню, чтобы сдвинуть.
    Цитата allods ()
    Не шатать а вертеть.
    Я и говорю, чтобы вертеть надо либо Suspension Distance в 0, либо отключать временно колёса. При этом физический материал не поможет - физика колёс считается отдельно от остальной физики.
    Так зачем тебе поворот? Поворот будет когда машина неподвижна, в гараже например? В этом случае тебе не нужна физика колёс. Если во время движения, то нужна особая настройка, в таком я не разбираюсь.


    Сообщение отредактировал Lertmind - Воскресенье, 03 Апреля 2016, 19:44
    allodsДата: Понедельник, 04 Апреля 2016, 16:20 | Сообщение # 7717
    почти ветеран
    Сейчас нет на сайте
    К примеру я делаю танк, проще вращать его так чем одни колеса назад другие в перед

    Добавлено (04 апреля 2016, 16:19)
    ---------------------------------------------
    кто может дополнить мой Шейдер

    Мне нужны тени на объектах, что надо дописать?
    Код
    Shader "Transparent/VertexLit with Z" {
        Properties {
         _Color ("Main Color", Color) = (1,1,1,1)
         _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
        }
      
        SubShader {
         Tags {"RenderType"="Transparent" "Queue"="Transparent"}
         // Render into depth buffer only
             Pass {
             ColorMask 0
         }
         // Render normally
         Pass {
             ZWrite Off
             Blend SrcAlpha OneMinusSrcAlpha
             ColorMask RGB
             Material {
                 Diffuse [_Color]
                 Ambient [_Color]
             }
             Lighting On
             SetTexture [_MainTex] {
                 Combine texture * primary DOUBLE, texture * primary
             }
         }

        }
        FallBack "Transparent/Cutout/VertexLit"
    }


    Добавлено (04 апреля 2016, 16:20)
    ---------------------------------------------
    Цитата Lertmind ()
    Если во время движения, то нужна особая настройка, в таком я не разбираюсь.


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


    Сообщение отредактировал allods - Понедельник, 04 Апреля 2016, 16:21
    VickaДата: Понедельник, 04 Апреля 2016, 17:19 | Сообщение # 7718
    Another ART
    Сейчас нет на сайте
    Вот чей-то за хрень?



    Почему в горизонтально плоскости все ок а вертикальный такой вот резкий поворот на 180 градусов?
    Код

      //Поворот на цель
           transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(SpotTarget.transform.position - transform.position), speed * Time.deltaTime);


    allodsДата: Понедельник, 04 Апреля 2016, 17:33 | Сообщение # 7719
    почти ветеран
    Сейчас нет на сайте
    Код
    Vector3 rot = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(SpotTarget.transform.position - transform.position), speed * Time.deltaTime).eulerAngles;

    transform.eulerAngles = new Vector3(rot.x,0,rot.z);


    Может прокатит

    или по какой оси у вас идет разворот на 180


    Сообщение отредактировал allods - Понедельник, 04 Апреля 2016, 17:38
    VickaДата: Понедельник, 04 Апреля 2016, 17:45 | Сообщение # 7720
    Another ART
    Сейчас нет на сайте
    allods, не не прокатило)
    Я специально видео прикрепила для наглядности.
    Резкий поворот идет по Y


    Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вопрос-[ответ] по Unity (Задаём свои вопросы)
    Поиск:

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