Unity 2D падение оружия на земле не работает - PullRequest
0 голосов
/ 17 апреля 2020

Я использовал этот код для сброса активного оружия.

weapons = GameObject.FindGameObjectWithTag("Weapons");
activeGunDir = weapons.transform.position;

            int children = weapons.transform.childCount;
            for (int i = 0; i < children; ++i)
            {
                if (Input.GetKeyDown(KeyCode.E))
                {

                    activeGun = weapons.transform.GetChild(i).gameObject;


                if (activeGun.activeInHierarchy)
                    {   

                    switch (activeGun.name)
                        {
                            case "Pistol":
                                GameObject aa = Instantiate(pistol_prefab, activeGunDir, Quaternion.identity) as GameObject;
                                aa.name = aa.name.Replace("(Clone)", "");
                            break;
                            case "Uzi":
                                GameObject ab = Instantiate(uzi_prefab, activeGunDir, Quaternion.identity) as GameObject;
                                ab.name = ab.name.Replace("(Clone)", "");
                            break;
                        }

                    weapons.transform.GetChild(i).gameObject.SetActive(false);
                    goToNext = true;
                    }

оружие - пустой GameObject, где я храню оружие. Это своего рода работа, но .. Не совсем. Если узи активен и переключается с пистолетом, он бросает узи, но если я попытаюсь сделать это снова (переключить пистолет с узи), то клонирую оба (узи и пистолет). Я не могу найти проблему, и я думаю, что это легко исправить, но я глуп (я новичок в этом). Это происходит потому, что после этого кода, то же самое для метода забрать? (Способ получения)

                    if (goToNext)
                    {

                    switch (gameObject.name)
                    {
                        case "Uzi":
                                weapons.transform.GetChild(2).gameObject.SetActive(true);
                                goToNext = false;
                                Destroy(gameObject);
                                break;
                        case "Pistol":
                                weapons.transform.GetChild(0).gameObject.SetActive(true);
                                goToNext = false;
                                Destroy(gameObject);
                            break;
                    }
                    }

И все в OnTriggerStay2D

1 Ответ

0 голосов
/ 17 апреля 2020

Почему вы используете activeGun.activeInHierarchy? activeInHierarchy сообщает, активен ли игровой объект в редакторе. Если это необходимо для проверки активации оружия, измените его на activeGun.activeSelf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...