Прикрепить факел к руке

Общие вопросы о Unity3D

Прикрепить факел к руке

Сообщение MrDmitry 03 фев 2020, 14:12

Здравствуйте, не могу прикрепить к кости руки факел.

Имеется модель с костями и анимацией. Сделал одному из пальцев тег TorchPoint.
Изображение
Написал следующий код

Синтаксис:
Используется csharp
    static public void AddTorch(GameObject Torch, GameObject Player)
    {
        //Изменяем анимацию на анимацию с факелом
        Animator anim = Player.GetComponent<Animator>();
        anim.SetBool("Torch", true);
        //Ищем кость на модели к которой крепим факел
        foreach (Transform child in Player.transform)
        {
            if (child.tag == "TorchPoint")
            {
                //Создаем факел
                GameObject to = Instantiate(Torch, child.position, Quaternion.Euler(-90, 0, 0));
                to.transform.SetParent(child.transform);
                break;
            }
        }
    }


После чего факел появляется в нулевых координатах персонажа. Изменял строчку на локальную позицию
Синтаксис:
Используется csharp
...
GameObject to = Instantiate(Torch, child.localPosition, Quaternion.Euler(-90, 0, 0));
...

После чего факел появляется хрен пойми где.
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Прикрепить факел к руке

Сообщение 1max1 03 фев 2020, 14:17

Вот это в лог выведи:

Синтаксис:
Используется csharp
        foreach (Transform child in Player.transform)
        {
            if (child.tag == "TorchPoint")
            {
                //Создаем факел
                GameObject to = Instantiate(Torch, child.position, Quaternion.Euler(-90, 0, 0));
                to.transform.SetParent(child.transform);

                print(child.name);
                print(child.position);
                print(to.transform.position);

                break;
            }
        }
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Прикрепить факел к руке

Сообщение MrDmitry 03 фев 2020, 18:40

К сожелению сейчас нет возможности это проверить, но я проверял имя и позицию, имя совпало child.name = IThumb3
child.position = 0.0, 0.0, 0.0
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Прикрепить факел к руке

Сообщение 1max1 03 фев 2020, 18:57

child.position = 0.0, 0.0, 0.0

А вот это очень странно...
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Прикрепить факел к руке

Сообщение MrDmitry 03 фев 2020, 19:32

Я подумал что это потому что это координаты относительно все модели, но нет. Не понимаю в чем дело.
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Прикрепить факел к руке

Сообщение MrDmitry 04 фев 2020, 06:14

Вот результат
lThumb3
(-4.5, 1.0, 56.7)
(0.0, 0.0, 0.0)
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Прикрепить факел к руке

Сообщение 1max1 04 фев 2020, 12:15

Бред какой-то. Задавай позицию факела тогда напрямую, а не в инстансе.
to.transform.position = child.position;
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Прикрепить факел к руке

Сообщение MrDmitry 04 фев 2020, 16:45

Я так сразу пробывал, тоже самое ( Может модель какая то кривая?
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Прикрепить факел к руке

Сообщение 1max1 04 фев 2020, 18:12

Больше никаких скриптов нету, которые управляют позицией факела? Может ты где-то в другом месте его меняешь в 0, вообще очень странно. Когда такая магия происходит, рекомендую создать чистый проект и повторить эту проблемную ситуацию, может что обнаружится.

п.с. вряд ли в модели дело)
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Прикрепить факел к руке

Сообщение MrDmitry 05 фев 2020, 06:53

переписал скрипт без цикла и все заработало...
Синтаксис:
Используется csharp
//Ищем кость на модели к которой крепим факел
        Transform child = GameObject.FindGameObjectWithTag("TorchPoint").transform;
        //Изменяем анимацию на анимацию с факелом
        Animator anim = Player.GetComponent<Animator>();
        anim.SetBool("Torch", true);
        //Создаем факел
        GameObject to = Instantiate(Torch, child.position, Quaternion.Euler(0, 90, 0));
        to.transform.SetParent(child.transform);
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Прикрепить факел к руке

Сообщение 1max1 05 фев 2020, 13:42

А выведи в лог вот это print(GameObject.FindGameObjectsWithTag("TorchPoint").Length);
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Прикрепить факел к руке

Сообщение MrDmitry 05 фев 2020, 18:48

Я в очередной раз переписал скрипт и все прекрасно работает


Синтаксис:
Используется csharp
    static public void AddTorch(GameObject Obj, GameObject Player)
    {
        //Ищем кость на модели к которой крепим факел
        foreach (Transform child in Player.GetComponentsInChildren<Transform>())
        {
            if (child.tag == "TorchPoint")
            {
                Obj.transform.SetParent(child.transform);
                Obj.transform.position = new Vector3(child.transform.position.x, child.transform.position.y - 0.02f, child.transform.position.z + 0.035f);
                Obj.transform.localRotation = Quaternion.Euler(0, 90, 0);
                break;
            }
        }
    }
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12