2016-11-13 82 views
-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"); 
        } 
       } 

回答

2

替换

if(gameObject.tag == "Tec") 

if(child.gameObject.tag == "Tec") 

而更换

if(gameObject.tag == "Awp") 

if(child.gameObject.tag == "Awp")