Анимация и звуковые эффекты Unity не синхронизированыC#

Место общения программистов C#
Anonymous
Анимация и звуковые эффекты Unity не синхронизированы

Сообщение Anonymous »

Я пытаюсь создать игру-шутер от первого лица (FPS) на Unity.
В настоящее время я сталкиваюсь с проблемами анимации и звуковых эффектов (sfx), поскольку они не синхронизируются.
Звуковой эффект стрельбы воспроизводится между воспроизведением анимации.
Ниже приведен мой основной сценарий оружия и объект сценария, который он использует:

Код: Выделить всё

using System.Collections;
using UnityEngine;

public class Gun : MonoBehaviour
{
public GunsSO GunData;
public Animator gun_animator;

int current_ammo;
bool isReloading = false;
float nextTimeToFire = 0f;

public AudioSource shoot_sfx;
public AudioSource reload_sfx;

private void Start()
{
current_ammo = GunData.mag_size;
}

private void Update()
{
// Shoot
if (Input.GetMouseButtonDown(0))
{
TryShoot();
}

// Reload
if (Input.GetKeyDown(KeyCode.R))
{
TryReload();
}
}

void TryReload()
{
if (!isReloading && current_ammo < GunData.mag_size)
{
StartCoroutine(Reload());
}
}

IEnumerator Reload()
{
isReloading = true;

// Optional: play reload animation
if (gun_animator != null)
{
gun_animator.SetTrigger("Reload");
}
reload_sfx.Play();

yield return new WaitForSeconds(GunData.reloading_time);

current_ammo = GunData.mag_size;
isReloading = false;
}

void TryShoot()
{
if (isReloading)
return;

if (current_ammo = nextTimeToFire)
{
nextTimeToFire = Time.time + GunData.shoot_time;
HandleShoot();
}
}

void HandleShoot()
{
current_ammo--;

// Play shoot animation using trigger
if (gun_animator != null)
{
gun_animator.SetTrigger("Shoot");
}

if (!shoot_sfx.isPlaying)
{
shoot_sfx.Play();
}
}
}

Код: Выделить всё

using UnityEngine;

[CreateAssetMenu(fileName = "GunsSO", menuName = "Scriptable Objects/GunsSO")]
public class GunsSO : ScriptableObject
{
public string Name;
public float shoot_time;
public float reloading_time;
public int mag_size;
public AudioSource shoot_sfx;
}
Как это исправить?
Должен ли звуковой эффект выстрела иметь ту же длину, что и анимация выстрела?
Самое главное, как профессионалы справляются с этой ситуацией?

Вернуться в «C#»