Невозможно воспроизвести отключенный источник звука (Unity 2d) - PullRequest
0 голосов
/ 18 декабря 2018

У меня маленькая проблема;Я пытаюсь разработать свою собственную игру по бесконечным прыжкам.Вот почему я создал вражеский тип, который может стрелять небольшими снарядами.Каждый раз, когда он стреляет, должен звучать звук, но это не так.Отладка: «Невозможно воспроизвести отключенный источник звука».

Изначально это не сработало только для префабов, но недавно это не сработало и для первого, оригинального оппонента.(Я вроде как что-то напутал в коде)

Каждое предлагаемое решение мне очень помогло бы:)

Я знаю, есть некоторые посты на эту тему, но ни один из них не имеетпомогло еще ...

Какой-то грязный код:

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

public class FlyingEnemy : MonoBehaviour {

public float startTimeBtwShots;
private float timeBtwShots;
private Vector3 spawnPoint;

public AudioSource shot;

public Animator animator;

private float flyingSpeed;
private float turningPoint;

private bool moving;

public GameObject projectile;

public GameObject player;

void Start () 
{
    turningPoint = Mathf.Abs(transform.position.x);
    flyingSpeed = 0.008f;
    timeBtwShots = startTimeBtwShots;
    moving = true;
    shot.enabled = true;
}

void Update () 
{
    //Ignore, moves enemy from left to right and back 
    if (moving)
    {
        transform.position = new Vector3(transform.position.x + flyingSpeed, transform.position.y, transform.position.z);
    }
    if (transform.position.x >= turningPoint || transform.position.x <= turningPoint * -1)
    {
        flyingSpeed *= -1;
        transform.position = new Vector3(transform.position.x + flyingSpeed, transform.position.y, transform.position.z);
        if (flyingSpeed <= 0) transform.eulerAngles = new Vector3(0, 180, 0);
        else if (flyingSpeed >= 0) transform.eulerAngles = new Vector3(0, 0, 0);
    }

    //Important part: projectile gets spawn and a bit earlier the sound should be played...
    if (timeBtwShots <= 0)
    {
        spawnPoint = transform.position;
        spawnPoint.y -= 0.35f; 
        Instantiate(projectile, spawnPoint, Quaternion.identity);
        timeBtwShots = startTimeBtwShots;
        animator.SetBool("Shooting", false);
    }
    else
    {
        timeBtwShots -= Time.deltaTime;
        if (timeBtwShots <= 0.3)
        {
            shot.volume = 1;
            shot.Play();
        }
        if (timeBtwShots <= 0.6)
        {
            animator.SetBool("Shooting", true);
        }
    }

    if (player.transform.position.y >= transform.position.y + 5.5f)
    {
        Destroy(gameObject);
    }
}
}

Заранее спасибо !!

Эго |Jakob

1 Ответ

0 голосов
/ 19 декабря 2018

Вам следует примерить функцию Start: shot.gameObject.SetActive (true);Это может быть проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...