Я пытаюсь понять, какое оружие мы в настоящее время укомплектовали, и воспроизвести этот звук, который я делаю, ища тег оружия. Тем не менее, я получаю сообщение об ошибке «Тип PlayerWeapon не содержит определения для тега, и не может быть найден тег метода расширения типа PlayerWeapon».Использование GameObject.Tag
Это раздел playershoot сценария прикрепленного к игроку префабу, который обрабатывает тег:
weaponManager = GetComponent<WeaponManager>();
}
void Update()
{
currentWeapon = weaponManager.GetCurrentWeapon();
if (PauseMenu.IsOn)
return;
if (currentWeapon.fireRate <= 0f)
{
if (Input.GetButtonDown("Fire1"))
{
Shoot();
if(currentWeapon.tag = "Tec")
{
CmdPlayTecShootSound();
}
}
И это соответствующий раздел из сценария weaponmanager:
private PlayerWeapon currentWeapon;
private WeaponGraphics currentGraphics;
private Transform currentHolder;
void Start()
{
currentHolder = awpweaponHolder;
EquipWeapon(primaryWeapon);
}
void Update()
{
if(Input.GetAxis("WeaponSwitch") >0f)
{
currentHolder = tecweaponHolder;
EquipWeapon(secondaryWeapon);
Debug.Log("switched weapon");
}
else if (Input.GetAxis("WeaponSwitch")<0f)
{
currentHolder = awpweaponHolder;
EquipWeapon(primaryWeapon);
Debug.Log("switched weapon back");
}
}
public PlayerWeapon GetCurrentWeapon()
{
return currentWeapon;
}
public WeaponGraphics GetCurrentGraphics()
{
return currentGraphics;
}
void EquipWeapon (PlayerWeapon _weapon)
{
foreach (Transform child in tecweaponHolder)
{
Destroy(child.gameObject);
}
currentWeapon = _weapon;
UPDATE:
void Update()
{
currentWeapon = weaponManager.GetCurrentWeapon();
if (PauseMenu.IsOn)
return;
if (currentWeapon.fireRate <= 0f)
{
if (Input.GetButtonDown("Fire1"))
{
Shoot();
foreach (Transform child in tecweaponHolder)
{
if(gameObject.tag == "Tec")
{
CmdPlayTecShootSound();
Debug.Log("tec sound played");
}
}
foreach (Transform child in awpweaponHolder)
{
if(gameObject.tag == "Awp")
{
CmdPlayAwpShootSound();
Debug.Log("awp sound played");
}
}
}
Как определяется класс 'PlayerWeapon'? –
Просто небольшой комментарий к вашему коду, вы продолжаете проверять одно и то же условие в циклах, которые не собираются возвращать другой результат независимо от того, сколько раз вы повторяете петли ... gameobject возвращает игровой объект, к которому прикреплен этот скрипт к, а не к игровому объекту ребенка, который вы повторяете. – Alox