Compare commits

...

21 Commits

Author SHA1 Message Date
jay
bac6ec5f34 Merge pull request 'DEG-148 [FEAT] 공격 대시 버튼 연동 및 카메라 수정' (!36) from DEG-148-공격-대시-버튼-연동-및-카메라-수정 into main
Reviewed-on: #36
Reviewed-by: Sehyeon <sehyeon1837@gmail.com>
Reviewed-by: Lim0_C <dladudcks22@gmail.com>
2025-05-12 06:40:55 +00:00
Jay
791e4b901c DEG-148 [FEAT] 공격 대시 버튼 연동 및 카메라 수정 2025-05-12 15:31:43 +09:00
Lim0_C
27598b1f82 [HOTFIX] 씬 요소 프리팹화 2025-05-12 15:18:19 +09:00
e4bfba9780 Merge pull request 'DEG-140 [feat] 일시정지 기능 추가' (!34) from DEG-140-게임-일시정지 into main
Reviewed-on: #34
Reviewed-by: jay <ayjindev@gmail.com>
Reviewed-by: Sehyeon <sehyeon1837@gmail.com>
2025-05-12 06:12:04 +00:00
Lim0_C
7823d44746 DEG-140 [Fix] 씬 제외 및 코드 복구 2025-05-12 15:10:49 +09:00
Lim0_C
a946eed728 Revert "DEG-140 [feat] 일시정지 기능 추가"
This reverts commit fe521317c1c5533137a571ce717fa2e504286296.
2025-05-12 15:06:55 +09:00
Lim0_C
5f8080ff9c DEG-140 [Feat] 진짜 일시정지 기능 추가 2025-05-12 15:05:57 +09:00
Lim0_C
8b1b1c1a15 DEG-140 [feat] 일시정지 기능 추가 2025-05-12 15:03:42 +09:00
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
Lim0_C
47d19aa428 DEG-140 [fix] 불필요한 코드 삭제 2025-05-12 14:23:47 +09:00
33e356f678 [fix] 지면 높이에 상관 없이 타겟의 pos를 추적하여 장판 생성
- 장판 y 포지션 동적 할당
- 몬스터 SFX 할당 위치 추가
2025-05-12 14:23:23 +09:00
Lim0_C
fe521317c1 DEG-140 [feat] 일시정지 기능 추가 2025-05-12 14:09:45 +09:00
6ed9548735 Merge pull request 'DEG-139-던전-수정' (!33) from DEG-139-던전-수정 into main
Reviewed-on: #33
Reviewed-by: Sehyeon <sehyeon1837@gmail.com>
Reviewed-by: jay <ayjindev@gmail.com>
2025-05-12 04:11:27 +00:00
ab99c57847 Merge pull request 'DEG-56- VFX 추가' (!32) from DEG-56 into main
Reviewed-on: #32
Reviewed-by: Sehyeon <sehyeon1837@gmail.com>
Reviewed-by: jay <ayjindev@gmail.com>
2025-05-12 04:09:40 +00:00
Parkillhwan
35fdb77717 DEG-139-던전-수정-프리팹-정리-CONVEX-최적화 2025-05-12 13:00:09 +09:00
ff455a3885 [feat] 시바 몬스터 아우라 추가, 몬스터 테스트 씬 수정
- 몬스터 테스트 씬에서 사용하지 않는 오브젝트 제거
- 마법사 몬스터에서 사용되지 않는 객체 제거

Work in JIRA ISSUE DEG-56
2025-05-12 11:39:05 +09:00
81336b02ec [feat] 마법사 몬스터 아우라 추가
- 보라색 스파크 아우라 추가
2025-05-12 11:22:25 +09:00
0215ca6c2d [feat] 캐스터 몬스터 이펙트 추가
- 텔레포트 이펙트 추가
- 넉백 이펙트 추가
- 매직 미사일 머테리얼과 이펙트 추가

Work in JIRA ISSUE DEG-56
2025-05-12 11:15:41 +09:00
Parkillhwan
21f6739a54 DEG-139-던전맵-수정 2025-05-12 11:04:31 +09:00
64 changed files with 337 additions and 38395 deletions

View File

@ -341,6 +341,16 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
effect.transform.localScale = scale;
}
}
public void OnAttackButtonPressed()
{
if ((_currentAction == null || !_currentAction.IsActive) &&
CurrentState != PlayerState.Win && CurrentState != PlayerState.Dead)
{
GameManager.Instance.PlayPlayerAttackSound();
StartAttackAction();
}
}
#endregion
@ -352,9 +362,9 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
return dir.sqrMagnitude > 0.01f ? dir.normalized : transform.forward;
}
public void DashButtonPressed()
public void OnDashButtonPressed()
{
if (!_actionDash.IsActive)
if (!_actionDash.IsActive && CurrentState != PlayerState.Win && CurrentState != PlayerState.Dead)
{
StartDashAction();
}

BIN
Assets/JYY/Materials/MagicMissaile.mat (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 396a4d0e1fb987e4e8f12e4480ecd48d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

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

Binary file not shown.

Binary file not shown.

BIN
Assets/JYY/Prefabs/Bullets/Magic Missaile.prefab (Stored with Git LFS) Normal file

Binary file not shown.

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

Binary file not shown.

BIN
Assets/JYY/Scenes/MonsterTest.unity (Stored with Git LFS)

Binary file not shown.

BIN
Assets/KSH/ReDungeon.unity (Stored with Git LFS)

Binary file not shown.

BIN
Assets/KSH/ReHousing.unity (Stored with Git LFS)

Binary file not shown.

View File

@ -13,7 +13,17 @@ public class MenuPanelController : PanelController
popupPanel.GetComponent<PopupPanelController>().Show("정말 나가시겠습니까?",
() =>
{
//todo: 메인으로 가거나 하우징 으로 감
GameManager.Instance.ResumeGame();
if (SceneManager.GetActiveScene().name == "ReDungeon")
{
GameManager.Instance.ChangeToHomeScene();
}
if (SceneManager.GetActiveScene().name == "ReHousing")
{
//todo: 메인화면
}
},
() =>
{
@ -29,6 +39,7 @@ public class MenuPanelController : PanelController
public void OnClickBackButton()
{
GameManager.Instance.ResumeGame();
Hide();
}
}

View File

@ -20,7 +20,7 @@ public class PanelController : MonoBehaviour
public void Show()
{
if (_canvasGroup == null) return;
_canvasGroup.DOFade(1, 0.5f);
_canvasGroup.DOFade(1, 0.5f).SetUpdate(true);
}
public void Hide(bool doDestroy = true)

View File

@ -6,7 +6,7 @@ public class PauseButton : MonoBehaviour
{
public void OnClicked()
{
//todo: 게임 일시정지 필요
GameManager.Instance.PauseGame();
var menuPanel = GameManager.Instance.PanelManager.GetPanel("MenuPanel");
menuPanel.GetComponent<MenuPanelController>().Show();
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 82c315512bfc10d4fb967a510a7a8920
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReDungeon/Canvas.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c536ba54292bdd447bc0b2d3a36efdf3
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReDungeon/Directional Light.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 69165d36595b137468c30ddf556aaba7
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReDungeon/DungeonLogic.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5a8e95e1909a4454c98e4e1dfb56eb14
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReDungeon/EffectManager.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f8462795d095a4642835dc6048e3e6f2
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReDungeon/EventSystem.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: bf787b5379d37a04fae426019a17e50a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReDungeon/Light.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e9dff1594c9fc8b429e720ace647e2af
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReDungeon/Main Camera.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 00a74f435b1b5b44e8fdb048b1b1a5a2
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReDungeon/Player.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b88cac8fe5c8c0241986a80d35db997f
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReDungeon/Prefab.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7fed050970daa5546b8304fc003275a2
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReDungeon/SpawnPoint.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 977850f571e11a64781ab874e973d49a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1988d7f6f99d88c4aa2e4ff1bf6ed217
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReHousing/Canvas.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e6246c48cab2202468d046bc0eb3f282
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReHousing/Cat.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5f04b03d40fc5804a99bb7b32f8b105a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReHousing/Directional Light.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d111880718f5372408e1576f0a0f6ac8
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReHousing/EventSystem.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7c81ff6b78ef4684baf71340620968cc
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReHousing/Global Volume.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9b70533f6892e9c469843ec124f1a048
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReHousing/Interior.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 55dec1d1037251447b3810359677a0d9
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReHousing/Main Camera.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: db3f5ad1f383fc844b9b1f596ba6dd0f
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReHousing/Player (1).prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 40c45ae89d2b8184da32fcb724072824
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReHousing/PlayerStat.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1cc1e598032448e46b411f728bb092a1
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReHousing/Room.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7782bbf175adbf0459c425490772d0dd
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Prefabs/ReHousing/SoundManager.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f05acbd3a05f5b1418c7d255221cf49c
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -5,6 +5,8 @@ using Random = UnityEngine.Random;
public class CasterDemonController : EnemyController
{
// Animation
public static readonly int Cast = Animator.StringToHash("Cast");
public static readonly int Flee = Animator.StringToHash("Flee");
@ -12,7 +14,6 @@ public class CasterDemonController : EnemyController
public static readonly int Telepo = Animator.StringToHash("Telepo");
public static readonly int Spin = Animator.StringToHash("Spin");
[SerializeField] private Transform teleportTransform;
[SerializeField] private Transform bulletShotPosition;
[SerializeField] private GameObject magicMissilePrefab;
[SerializeField] private GameObject teleportEffectPrefab;
@ -26,6 +27,15 @@ public class CasterDemonController : EnemyController
[SerializeField] private GameObject slowFieldWarning;
[SerializeField] private GameObject slowFieldEffect;
[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 const float KnockBackThresholdTime = 10f;
@ -198,7 +208,7 @@ public class CasterDemonController : EnemyController
// 플레이어 위치를 바라보고
transform.LookAt(aimPosition);
SetAnimation(MagicMissile);
SFXPlayer(magicMissileShotSound);
// 미사일 생성 및 초기화
var missile = Instantiate(
magicMissilePrefab,
@ -239,22 +249,31 @@ public class CasterDemonController : EnemyController
private void Teleport()
{
Vector3 startPos = transform.position;
if (teleportEffectPrefab != null)
Instantiate(teleportEffectPrefab, startPos, Quaternion.identity);
var startTelepoEffect = Instantiate(teleportEffectPrefab, startPos, Quaternion.identity);
// 텔레포트와 함께 시전하는 범위 공격
var aoe = Instantiate(chariotWarning, startPos, Quaternion.identity).GetComponent<ChariotAoeController>();
aoe.SetEffect(TeleportEffectData, null, null);
SFXPlayer(teleportSound);
// 텔레포트 타겟 위치로 이동
Agent.Warp(teleportTargetPosition);
SetAnimation(Telepo);
if (teleportEffectPrefab != null)
Instantiate(teleportEffectPrefab, teleportTargetPosition, Quaternion.identity);
var endTelepoEffect = Instantiate(teleportEffectPrefab, teleportTargetPosition, Quaternion.identity);
StartCoroutine(DelayedEffectDestroyer(startTelepoEffect, endTelepoEffect));
}
private IEnumerator DelayedEffectDestroyer(GameObject effect, GameObject effect2)
{
yield return Wait.For(1f);
Destroy(effect);
yield return Wait.For(0.4f);
Destroy(effect2);
}
private IEnumerator SlowFieldSpell()
@ -263,9 +282,10 @@ public class CasterDemonController : EnemyController
// 1. 시전 애니메이션
transform.LookAt(aimPosition);
SetAnimation(Cast);
SFXPlayer(slowFieldSound);
// 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>();
warning.SetEffect(SlowFieldEffectData, null, null);
@ -278,6 +298,7 @@ public class CasterDemonController : EnemyController
{
// 시전 애니메이션
SetAnimation(Spin);
SFXPlayer(spinSound);
// 넉백 발생
var knockback = Instantiate(chariotWarning, transform).GetComponent<MagicAoEField>();
@ -286,6 +307,11 @@ public class CasterDemonController : EnemyController
yield return Wait.For(1f);
}
private void SFXPlayer(AudioClip clip)
{
SoundManager.Instance.PlaySFX(clip);
}
#region
private void SetSequence(Func<IEnumerator> newSequence)
{

View File

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

View File

@ -49,6 +49,17 @@ public partial class GameManager : Singleton<GameManager>
#endregion
//일시 정지
public void PauseGame()
{
Time.timeScale = 0;
}
public void ResumeGame()
{
Time.timeScale = 1;
}
// 날짜 진행
public void AdvanceDay()
{