搜索游戏对象中的标签,然后播放声音
问题描述:
我有两个不同的空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");
}
}
答
替换
if(gameObject.tag == "Tec")
与
if(child.gameObject.tag == "Tec")
而更换
if(gameObject.tag == "Awp")
与
if(child.gameObject.tag == "Awp")