-1
我有兩個不同的空gameObjects
,其中currentweapon
得到實例化,哪一個依賴於槍,因爲他們需要在不同的位置。我想在兩個空的gameObjects
內尋找某個tags
,如果他們內部的object
有那個tag
,就播放那個特定的槍聲。然而,有兩個問題,awp槍沒有被實例化到正確的空gameObject
並且槍聲不起作用。搜索遊戲對象中的標籤,然後播放聲音
WeaponManager
腳本,其中槍被分配給槍保持器(空遊戲物體):
[SerializeField]
private Transform tecweaponHolder;
[SerializeField]
private Transform awpweaponHolder;
[SerializeField]
private PlayerWeapon primaryWeapon;
[SerializeField]
private PlayerWeapon secondaryWeapon;
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;
}
的PlayerShoot
腳本其搜索標籤和播放適當的噴槍聲音:
[SerializeField]
private Transform tecweaponHolder;
[SerializeField]
private Transform awpweaponHolder;
void Start()
{
if (cam == null)
{
Debug.LogError("PlayerShoot: No camera referenced!");
this.enabled = false;
}
weaponManager = GetComponent<WeaponManager>();
}
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");
}
}