0
\$\begingroup\$

So I have a script for an object that when shot explodes and it worked literally perfectly until I tried to add sound at which point it not only didn't play the sound but also stopped exploding, which was pretty rude of it.

Here's my code since I have no idea what's wrong: (Unity C#)

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ShootyTarget : MonoBehaviour
{
    public float health;

    public GameObject destructionPrefab;


    public GameObject explosion;
    public GameObject shockwave;
    public GameObject debris;

    public AudioSource splodeSound;

    void Start()
    {
        splodeSound = gameObject.GetComponent<AudioSource>();
    }

    void FuckingDie()
    {
        splodeSound.Play();

        Instantiate(explosion, transform.position, transform.rotation);
        Destroy(gameObject);
        Instantiate(shockwave, transform.position, Quaternion.Euler(new Vector3(90, 0, 0)));
        Instantiate(destructionPrefab, transform.position, transform.rotation);
        Instantiate(debris, transform.position, transform.rotation);
    }

    public void takedamage(float amount)
    {
        health -= amount;
        if (health <= 0f)
        {
            FuckingDie();
        }
    }
}
```
\$\endgroup\$
6
  • 1
    \$\begingroup\$ Have you made sure the audiosource has a clip attached to it? It might cause a NullRef if not. \$\endgroup\$ Commented Mar 13, 2020 at 0:39
  • 1
    \$\begingroup\$ Do you get any error output in your console window? \$\endgroup\$
    – DMGregory
    Commented Mar 13, 2020 at 1:18
  • \$\begingroup\$ The AudioSource has the right clip assigned to it and no errors are made. Sound still doesn't play \$\endgroup\$ Commented Mar 13, 2020 at 1:33
  • \$\begingroup\$ The most likely cause here is if you forgot to put the AudioSource on the same object as this script. Then GetComponent returns null, so then the first line of the death function throws a null reference exception and aborts execution of the rest. If that's not what's happening, then you should attach a debugger and set a breakpoint in your takedamage function, so when taking lethal damage you can step through your code one line at a time until you find a line where the program does something different than what you expect. \$\endgroup\$
    – DMGregory
    Commented Mar 13, 2020 at 11:55
  • 1
    \$\begingroup\$ Can you share a screenshot of your inspector pane, showing the full AudioSource settings? E.g. it's possible that the sound is fully spatial, but the volume falloff curve is short enough so as to cause a given distance to silence it. Also for reference, can you play other sounds normally, and can you confirm the splode sound sounds properly in e.g. Audacity? \$\endgroup\$ Commented Mar 14, 2020 at 9:32

0

You must log in to answer this question.

Browse other questions tagged .