Compare commits

...

4 Commits

Author SHA1 Message Date
b09110f8c1 Merge pull request 'DEG-56-몬스터-SFX-추가-작업' (!35) from DEG-56-몬스터-SFX-추가-작업 into main
Reviewed-on: #35
Reviewed-by: jay <ayjindev@gmail.com>
Reviewed-by: Sehyeon <sehyeon1837@gmail.com>
2025-05-12 05:56:02 +00:00
34f63352e2 [feat] 마법사 몬스터 SFX 추가
Work in JIRA ISSUE DEG-56
2025-05-12 14:44:11 +09:00
7ed35864cb [feat] 팔라딘 SFX 추가
- 폭탄 던지는 소리
- 칼 휘두르는 소리 재생 추가
2025-05-12 14:33:50 +09:00
33e356f678 [fix] 지면 높이에 상관 없이 타겟의 pos를 추적하여 장판 생성
- 장판 y 포지션 동적 할당
- 몬스터 SFX 할당 위치 추가
2025-05-12 14:23:23 +09:00
4 changed files with 34 additions and 7 deletions

BIN
Assets/JYY/Prefabs/Alien Big Blink.prefab (Stored with Git LFS)

Binary file not shown.

BIN
Assets/JYY/Prefabs/[Enemy] PldDog.prefab (Stored with Git LFS)

Binary file not shown.

View File

@ -5,6 +5,8 @@ using Random = UnityEngine.Random;
public class CasterDemonController : EnemyController public class CasterDemonController : EnemyController
{ {
// Animation // Animation
public static readonly int Cast = Animator.StringToHash("Cast"); public static readonly int Cast = Animator.StringToHash("Cast");
public static readonly int Flee = Animator.StringToHash("Flee"); public static readonly int Flee = Animator.StringToHash("Flee");
@ -25,6 +27,15 @@ public class CasterDemonController : EnemyController
[SerializeField] private GameObject slowFieldWarning; [SerializeField] private GameObject slowFieldWarning;
[SerializeField] private GameObject slowFieldEffect; [SerializeField] private GameObject slowFieldEffect;
[SerializeField] private GameObject knockbackEffect; [SerializeField] private GameObject knockbackEffect;
// SFX
[Space(10)]
[Header("SFX")]
[SerializeField] private AudioClip magicMissileShotSound;
[SerializeField] private AudioClip teleportSound;
[SerializeField] private AudioClip spinSound;
[SerializeField] private AudioClip slowFieldSound;
private float _knockbackTimer = 10f; private float _knockbackTimer = 10f;
private const float KnockBackThresholdTime = 10f; private const float KnockBackThresholdTime = 10f;
@ -197,7 +208,7 @@ public class CasterDemonController : EnemyController
// 플레이어 위치를 바라보고 // 플레이어 위치를 바라보고
transform.LookAt(aimPosition); transform.LookAt(aimPosition);
SetAnimation(MagicMissile); SetAnimation(MagicMissile);
SFXPlayer(magicMissileShotSound);
// 미사일 생성 및 초기화 // 미사일 생성 및 초기화
var missile = Instantiate( var missile = Instantiate(
magicMissilePrefab, magicMissilePrefab,
@ -246,6 +257,7 @@ public class CasterDemonController : EnemyController
aoe.SetEffect(TeleportEffectData, null, null); aoe.SetEffect(TeleportEffectData, null, null);
SFXPlayer(teleportSound);
// 텔레포트 타겟 위치로 이동 // 텔레포트 타겟 위치로 이동
Agent.Warp(teleportTargetPosition); Agent.Warp(teleportTargetPosition);
SetAnimation(Telepo); SetAnimation(Telepo);
@ -270,9 +282,10 @@ public class CasterDemonController : EnemyController
// 1. 시전 애니메이션 // 1. 시전 애니메이션
transform.LookAt(aimPosition); transform.LookAt(aimPosition);
SetAnimation(Cast); SetAnimation(Cast);
SFXPlayer(slowFieldSound);
// 2. 장판 생성과 세팅 // 2. 장판 생성과 세팅
var fixedPos = new Vector3(aimPosition.x, 0, aimPosition.z); var fixedPos = new Vector3(aimPosition.x, aimPosition.y, aimPosition.z);
var warning = Instantiate(chariotWarning, fixedPos, Quaternion.identity).GetComponent<MagicAoEField>(); var warning = Instantiate(chariotWarning, fixedPos, Quaternion.identity).GetComponent<MagicAoEField>();
warning.SetEffect(SlowFieldEffectData, null, null); warning.SetEffect(SlowFieldEffectData, null, null);
@ -285,6 +298,7 @@ public class CasterDemonController : EnemyController
{ {
// 시전 애니메이션 // 시전 애니메이션
SetAnimation(Spin); SetAnimation(Spin);
SFXPlayer(spinSound);
// 넉백 발생 // 넉백 발생
var knockback = Instantiate(chariotWarning, transform).GetComponent<MagicAoEField>(); var knockback = Instantiate(chariotWarning, transform).GetComponent<MagicAoEField>();
@ -293,6 +307,11 @@ public class CasterDemonController : EnemyController
yield return Wait.For(1f); yield return Wait.For(1f);
} }
private void SFXPlayer(AudioClip clip)
{
SoundManager.Instance.PlaySFX(clip);
}
#region #region
private void SetSequence(Func<IEnumerator> newSequence) private void SetSequence(Func<IEnumerator> newSequence)
{ {

View File

@ -37,6 +37,12 @@ public class PldDogController : EnemyController
[SerializeField] private GameObject horizontalWarning; [SerializeField] private GameObject horizontalWarning;
[SerializeField] private GameObject horizontalSlash; [SerializeField] private GameObject horizontalSlash;
// SFX
[Space(10)]
[Header("SFX")]
[SerializeField] private AudioClip slashSound;
[SerializeField] private AudioClip boomSound;
private float _patternTimer = 0f; private float _patternTimer = 0f;
private int _lastPatternIndex = -1; private int _lastPatternIndex = -1;
private bool _isPatternRunning = false; private bool _isPatternRunning = false;
@ -110,13 +116,14 @@ public class PldDogController : EnemyController
{ {
Debug.Log("BombThrowPattern: 보스가 폭탄을 던집니다."); Debug.Log("BombThrowPattern: 보스가 폭탄을 던집니다.");
SetAnimation(BoomShot); SetAnimation(BoomShot);
SoundManager.Instance.PlaySFX(boomSound);
_isPatternRunning = true; _isPatternRunning = true;
Agent.isStopped = true; Agent.isStopped = true;
for (int i = 0; i < bombCount; i++) for (int i = 0; i < bombCount; i++)
{ {
Vector3 targetPos = TraceTargetTransform.position; Vector3 targetPos = TraceTargetTransform.position;
targetPos.y = 0.1f; // 지면에 맞춤 targetPos.y += 0.1f; // 지면에 맞춤
var warning = Instantiate(chariotSlashWarning, targetPos, Quaternion.identity); var warning = Instantiate(chariotSlashWarning, targetPos, Quaternion.identity);
warning.transform.localScale = bombScale; warning.transform.localScale = bombScale;
@ -203,6 +210,7 @@ public class PldDogController : EnemyController
private void SlashAnimationPlay() private void SlashAnimationPlay()
{ {
SetAnimation(Slash); SetAnimation(Slash);
SoundManager.Instance.PlaySFX(slashSound);
} }
private void PatternClear() private void PatternClear()