Я использовал этот код для сброса активного оружия.
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