2016-11-13 85 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")