齿轮音效

This commit is contained in:
2024-12-31 04:38:47 +08:00
parent cc8ac8bf62
commit 2fcbea4056
13 changed files with 399 additions and 6 deletions
@@ -19,6 +19,7 @@ namespace AibisDream.FixSystem
public IEnumerator CharacterInit(string characterName)
{
// 异步加载角色预制体(psb
ResourceRequest request = Resources.LoadAsync<GameObject>($"Characters/{characterName}");
yield return request;
@@ -40,6 +41,7 @@ namespace AibisDream.FixSystem
GameObject characterPrefab = request.asset as GameObject;
_curCharacter = Instantiate(characterPrefab, transform);
Debug.LogError(_curCharacter.gameObject.name);
// 初始化处理
_curCharacter.SetActive(false);
_blinkLayer = _curCharacter.transform.Find("闭眼").GetComponent<SpriteRenderer>();
@@ -61,7 +63,7 @@ namespace AibisDream.FixSystem
private static void ActiveLayer(Transform root, string layerName = null)
{
var childLayers = root.GetComponentsInChildren<SpriteRenderer>();
var childLayers = root.GetComponentsInChildren<SpriteRenderer>(true);
if (childLayers.Length == 0) return;
foreach (var layer in childLayers)
@@ -79,7 +81,7 @@ namespace AibisDream.FixSystem
private void SetCharacterAlpha(float alpha)
{
_characterAlpha = alpha;
SpriteRenderer[] renderers = _curCharacter.GetComponentsInChildren<SpriteRenderer>();
SpriteRenderer[] renderers = _curCharacter.GetComponentsInChildren<SpriteRenderer>(true);
foreach (var childRenderer in renderers)
{
Color color = childRenderer.color;
@@ -9,6 +9,7 @@ namespace AibisDream
{
private const string LoopSource = "Loop";
private const string LoopSource2 = "Loop2";
private const string LoopSource3 = "Loop3";
private const string InteractionSource = "Interaction";
private const string VoiceSource = "Voice";
private const string MemorySource = "Memery";
@@ -17,6 +18,7 @@ namespace AibisDream
private AudioSource _loopSource;
private AudioSource _loopSource2;
private AudioSource _loopSource3;
private AudioSource _interactionSource;
private AudioSource _voiceSource;
private AudioSource _memorySource;
@@ -29,6 +31,7 @@ namespace AibisDream
{
_loopSource = transform.Find(LoopSource).GetComponent<AudioSource>();
_loopSource2 = transform.Find(LoopSource2).GetComponent<AudioSource>();
_loopSource3 = transform.Find(LoopSource3).GetComponent<AudioSource>();
_interactionSource = transform.Find(InteractionSource).GetComponent<AudioSource>();
_voiceSource = transform.Find(VoiceSource).GetComponent<AudioSource>();
_memorySource = transform.Find(MemorySource).GetComponent<AudioSource>();
@@ -138,6 +141,26 @@ namespace AibisDream
Instance._loopSource2.Pause();
}
[YarnCommand("play_loop3_audio")]
public static void PlayLoop3Audio(string audioName)
{
AudioClip clip = Resources.Load<AudioClip>($"Audio/{audioName}");
if (clip == null)
{
clip = Instance.RandomLoadAudioClip(3, $"Audio/{audioName}");
}
Instance._loopSource3.clip = clip;
Instance._loopSource3.Play();
}
[YarnCommand("pause_loop3_audio")]
public static void PauseLoop3Audio()
{
Instance._loopSource3.Pause();
}
public void ContinueLoopAudio()
{
_loopSource.UnPause();
@@ -49,6 +49,14 @@ namespace AibisDream.Framework
{
if (Input.GetKeyDown(KeyCode.K))
{
Debug.Log(1);
ClinicYarnCommand.CharacterInit("石头");
}
if (Input.GetKeyDown(KeyCode.A))
{
ClinicYarnCommand.CharacterFadeIn();
ClinicYarnCommand.CharacterFace("正常微微笑");
}
}
}
@@ -103,6 +103,14 @@ namespace AibisDream
public void CheckGearSystemState()
{
if (_isTargetReached)
{
AudioManager.PlayLoop3Audio("gears_running");
}
else
{
AudioManager.PauseLoop3Audio();
}
DialogController.Instance.StartDialogNode("齿轮系统状态变化");
}
@@ -128,6 +136,7 @@ namespace AibisDream
public IEnumerator OpenCover()
{
AudioManager.PlayLoop2Audio("amb_gearbox");
// 旋转拉杆
yield return _coverStick.DORotate(new Vector3(0, 0, -90), 1.5f).WaitForCompletion();
// 开盖
@@ -139,6 +148,8 @@ namespace AibisDream
public IEnumerator CloseCover()
{
AudioManager.PauseLoopAudio();
AudioManager.PauseLoop2Audio();
// 关盖
var sq = DOTween.Sequence();
sq.Join(_cover.transform.DOLocalMove(coverDownPos, 1.5f));
+13
View File
@@ -1,5 +1,6 @@
using System;
using AibisDream.Framework;
using AibisDream.Utility;
using DG.Tweening;
using Newtonsoft.Json;
using UnityEngine;
@@ -91,6 +92,7 @@ namespace AibisDream
childGear = gear;
gear.transform.parent = transform;
_gearSystem.ChangeGraphVertex(GetInstanceID());
// 面板里的齿轮才能触发
if (transform.parent.name == "Shafts")
{
@@ -101,6 +103,12 @@ namespace AibisDream
private void OnGearPlugIn()
{
// 插入音效
if (!CommonUtil.IsZero(speed) && IsBroken)
{
AudioManager.PlayLoopAudio("gearbox_bad");
}
// 破损齿轮插进来就发一次事件,交给yarn处理
if (IsBroken)
{
@@ -115,6 +123,11 @@ namespace AibisDream
public void PlugOutGear()
{
if (IsBroken)
{
AudioManager.PauseLoopAudio();
}
// 拔出时齿轮停转
childGear.UpdateRotation(0, _speedScale);