Reviewed-on: #24 Reviewed-by: Lim0_C <dladudcks22@gmail.com> Reviewed-by: jay <ayjindev@gmail.com>
This commit is contained in:
commit
51c2545e35
@ -56,6 +56,10 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
|
||||
Joystick = FindObjectOfType<FixedJoystick>();
|
||||
}
|
||||
|
||||
// isBattle 초기화 (임시)
|
||||
bool isHousingScene = SceneManager.GetActiveScene().name.Contains("Housing");
|
||||
_isBattle = !isHousingScene;
|
||||
|
||||
AssignCharacterController();
|
||||
AssignAnimator();
|
||||
}
|
||||
@ -67,13 +71,6 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
|
||||
hitEffectController = GetComponentInChildren<PlayerHitEffectController>();
|
||||
|
||||
PlayerInit();
|
||||
|
||||
// isBattle 초기화 (임시)
|
||||
/*bool isHousingScene = SceneManager.GetActiveScene().name.Contains("Housing");
|
||||
_isBattle = !isHousingScene;
|
||||
Debug.Log("_isBattle: " + _isBattle);*/
|
||||
|
||||
SwitchBattleMode();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
@ -96,7 +93,9 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
|
||||
|
||||
// 공격 입력 처리
|
||||
if (Input.GetKeyDown(KeyCode.X) && (_currentAction == null || !_currentAction.IsActive)
|
||||
&& (CurrentState != PlayerState.Win && CurrentState != PlayerState.Dead)) {
|
||||
&& (CurrentState != PlayerState.Win && CurrentState != PlayerState.Dead))
|
||||
{
|
||||
GameManager.Instance.PlayPlayerAttackSound();
|
||||
StartAttackAction();
|
||||
}
|
||||
|
||||
@ -400,6 +399,7 @@ public class PlayerController : CharacterBase, IObserver<GameObject>
|
||||
if (character != this) return;
|
||||
if (CurrentState == PlayerState.Dead) return;
|
||||
|
||||
GameManager.Instance.PlayPlayerHitSound();
|
||||
SetState(PlayerState.Hit);
|
||||
}
|
||||
|
||||
|
BIN
Assets/JYY/Prefabs/Alien Big Blink.prefab
(Stored with Git LFS)
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)
BIN
Assets/JYY/Prefabs/[Enemy] PldDog.prefab
(Stored with Git LFS)
Binary file not shown.
@ -10,6 +10,9 @@ public class DungeonLogic : MonoBehaviour
|
||||
[NonSerialized] public bool isCompleted = false; // 던전 클리어 여부
|
||||
[NonSerialized] public bool isFailed = false; // 던전 실패 여부
|
||||
|
||||
[SerializeField] private List<GameObject> bossPrefabs;
|
||||
[SerializeField] private Transform spawnPosition; // 보스가 스폰될 위치
|
||||
|
||||
private PlayerController _player;
|
||||
private EnemyController _enemy;
|
||||
|
||||
@ -17,11 +20,15 @@ public class DungeonLogic : MonoBehaviour
|
||||
public event Action OnDungeonSuccess;
|
||||
public event Action OnDungeonFailure;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
SpawnBossForCurrentStage();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// tag를 통해 할당 / 추후 플레이어와 에너미 태그 추가 필요
|
||||
_player = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>();
|
||||
_enemy = GameObject.FindGameObjectWithTag("Enemy").GetComponent<EnemyController>();
|
||||
|
||||
// 죽음 이벤트 구독
|
||||
if (_player != null)
|
||||
@ -29,6 +36,17 @@ public class DungeonLogic : MonoBehaviour
|
||||
_player.OnGetHit += OnPlayerGetHit;
|
||||
_player.OnDeath += OnPlayerDeath;
|
||||
}
|
||||
}
|
||||
|
||||
private void SpawnBossForCurrentStage()
|
||||
{
|
||||
int currentStage = GameManager.Instance.StageLevel;
|
||||
|
||||
if (currentStage <= bossPrefabs.Count && currentStage > 0)
|
||||
{
|
||||
GameObject bossPrefab = bossPrefabs[currentStage - 1];
|
||||
GameObject bossObj = Instantiate(bossPrefab, spawnPosition.position, Quaternion.identity);
|
||||
_enemy = bossObj.GetComponent<EnemyController>();
|
||||
|
||||
if (_enemy != null)
|
||||
{
|
||||
@ -36,6 +54,7 @@ public class DungeonLogic : MonoBehaviour
|
||||
_enemy.OnDeath += OnEnemyDeath;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPlayerGetHit(CharacterBase player)
|
||||
{
|
||||
@ -52,6 +71,8 @@ public class DungeonLogic : MonoBehaviour
|
||||
|
||||
private void OnEnemyGetHit(CharacterBase enemy)
|
||||
{
|
||||
Debug.Log("enemyGETHIT");
|
||||
|
||||
if (isFailed || isCompleted) return;
|
||||
|
||||
// TODO: 에너미 피격 효과음
|
||||
@ -92,8 +113,9 @@ public class DungeonLogic : MonoBehaviour
|
||||
_player.SetState(PlayerState.Win);
|
||||
|
||||
// TODO: 강화 시스템으로 넘어가고 일상 맵으로 이동
|
||||
GameManager.Instance.PanelManager.GetPanel("ClearPanelBG");
|
||||
|
||||
StartCoroutine(DelayedSceneChange()); // 3초 대기 후 전환
|
||||
StartCoroutine(DelayedSceneChange()); // 5초 대기 후 전환
|
||||
}
|
||||
}
|
||||
|
||||
@ -112,13 +134,15 @@ public class DungeonLogic : MonoBehaviour
|
||||
_player.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast");
|
||||
_enemy.SetState(EnemyState.Idle);
|
||||
|
||||
StartCoroutine(DelayedSceneChange()); // 3초 대기 후 전환
|
||||
GameManager.Instance.PanelManager.GetPanel("FailedPanelBG");
|
||||
|
||||
StartCoroutine(DelayedSceneChange()); // 5초 대기 후 전환
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator DelayedSceneChange()
|
||||
{
|
||||
yield return new WaitForSeconds(3f);
|
||||
yield return new WaitForSeconds(5f);
|
||||
GameManager.Instance.ChangeToHomeScene();
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 103d1c060596bdd4bbe4361b2d571cdd
|
||||
guid: 4193e9c8c0cfacb48ac9b3d855367a0c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
BIN
Assets/KSH/ReDungeon.unity
(Stored with Git LFS)
Normal file
BIN
Assets/KSH/ReDungeon.unity
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1,6 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 14ced887e59fe2247ad5ac97a92b7003
|
||||
folderAsset: yes
|
||||
guid: b7412a4a2ee433447afcb28700cb50a9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
BIN
Assets/KSH/ReDungeon/NavMesh-Ground.asset
Normal file
BIN
Assets/KSH/ReDungeon/NavMesh-Ground.asset
Normal file
Binary file not shown.
8
Assets/KSH/ReDungeon/NavMesh-Ground.asset.meta
Normal file
8
Assets/KSH/ReDungeon/NavMesh-Ground.asset.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 75d6602e946891641821809218b5ccb8
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 23800000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/KSH/ReHousing.unity
(Stored with Git LFS)
BIN
Assets/KSH/ReHousing.unity
(Stored with Git LFS)
Binary file not shown.
@ -2,20 +2,23 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
public class PanelManager : MonoBehaviour
|
||||
public class PanelManager : Singleton<PanelManager>
|
||||
{
|
||||
private Canvas _canvas;
|
||||
private Dictionary<string, GameObject> _panels = new Dictionary<string, GameObject>();
|
||||
|
||||
private void Awake()
|
||||
private void Start()
|
||||
{
|
||||
if (_canvas == null)
|
||||
FindCanvas();
|
||||
LoadPanels();
|
||||
}
|
||||
|
||||
private void FindCanvas()
|
||||
{
|
||||
_canvas = GameObject.Find("Canvas").GetComponent<Canvas>();
|
||||
}
|
||||
LoadPanels();
|
||||
}
|
||||
|
||||
//패널을 딕셔너리에 오브젝트 이름으로 로드
|
||||
private void LoadPanels()
|
||||
@ -27,9 +30,12 @@ public class PanelManager : MonoBehaviour
|
||||
_panels[prefab.name] = prefab;
|
||||
}
|
||||
}
|
||||
|
||||
//패널 이름을 딕셔너리 키로 찾음
|
||||
public GameObject GetPanel(string panelName)
|
||||
{
|
||||
if(_canvas == null) FindCanvas();
|
||||
|
||||
if (_panels.TryGetValue(panelName, out GameObject prefab))
|
||||
{
|
||||
return Instantiate(prefab, _canvas.transform);
|
||||
@ -41,4 +47,5 @@ public class PanelManager : MonoBehaviour
|
||||
return null;
|
||||
}
|
||||
|
||||
protected override void OnSceneLoaded(Scene scene, LoadSceneMode mode) { }
|
||||
}
|
||||
|
@ -36,24 +36,38 @@ public class SettingsPanelController : PanelController
|
||||
public void SFXSliderButtonClicked()
|
||||
{
|
||||
sfxSliderButton.OnClicked();
|
||||
//todo: sfxSliderButton.IsActive를 기준으로 뮤트 여부 확인 및 뮤트 적용
|
||||
ApplySFXSettings(sfxSliderButton.IsActive, sfxSlider.value);
|
||||
}
|
||||
|
||||
public void BGMSliderButtonClicked()
|
||||
{
|
||||
bgmSliderButton.OnClicked();
|
||||
//todo: sfxSliderButton.IsActive를 기준으로 뮤트 여부 확인 및 뮤트 적용
|
||||
ApplyBGMSettings(bgmSliderButton.IsActive, bgmSlider.value);
|
||||
}
|
||||
|
||||
//슬라이더 변경 시 마다 호출
|
||||
public void OnSFXSliderValueChanged(float value)
|
||||
{
|
||||
//todo: 소리 볼륨 조절
|
||||
ApplySFXSettings(sfxSliderButton.IsActive, value);
|
||||
}
|
||||
|
||||
public void OnBGMSliderValueChanged(float value)
|
||||
{
|
||||
//todo: 소리 볼륨 조절
|
||||
ApplyBGMSettings(bgmSliderButton.IsActive, value);
|
||||
}
|
||||
|
||||
// 효과음 설정 적용 메서드
|
||||
private void ApplySFXSettings(bool isActive, float volume)
|
||||
{
|
||||
float actualVolume = isActive ? volume : 0f;
|
||||
SoundManager.Instance.SetSFXVolume(actualVolume);
|
||||
}
|
||||
|
||||
// 배경음 설정 적용 메서드
|
||||
private void ApplyBGMSettings(bool isActive, float volume)
|
||||
{
|
||||
float actualVolume = isActive ? volume : 0f;
|
||||
SoundManager.Instance.SetBGMVolume(actualVolume);
|
||||
}
|
||||
|
||||
public void OnCloseButtonClicked()
|
||||
|
BIN
Assets/PIH/Assets/RpgBgmDungeon/RPG_Dungeon.wav
(Stored with Git LFS)
BIN
Assets/PIH/Assets/RpgBgmDungeon/RPG_Dungeon.wav
(Stored with Git LFS)
Binary file not shown.
@ -1,24 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6278383b82513424bb58a3faeeb8a9db
|
||||
timeCreated: 1545638758
|
||||
licenseType: Store
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 6
|
||||
defaultSettings:
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -6,8 +6,6 @@ using UnityEngine.SceneManagement;
|
||||
|
||||
public partial class GameManager : Singleton<GameManager>
|
||||
{
|
||||
private Canvas _canvas;
|
||||
|
||||
// 게임 진행 상태
|
||||
private int currentDay = 1; // 날짜
|
||||
public int CurrentDay => currentDay;
|
||||
@ -66,12 +64,14 @@ public partial class GameManager : Singleton<GameManager>
|
||||
|
||||
public void ChangeToGameScene()
|
||||
{
|
||||
SceneManager.LoadScene("DungeonTestScene"); // 던전 Scene
|
||||
SceneManager.LoadScene("ReDungeon"); // 던전 Scene
|
||||
HandleSceneAudio("Dungeon");
|
||||
}
|
||||
|
||||
public void ChangeToHomeScene()
|
||||
{
|
||||
SceneManager.LoadScene("ReHousing"); // Home Scene
|
||||
HandleSceneAudio("Housing");
|
||||
}
|
||||
|
||||
// TODO: Open Setting Panel 등 Panel 처리
|
||||
|
@ -32,7 +32,7 @@ public partial class GameManager
|
||||
[SerializeField] private AudioClip victorySFX;
|
||||
|
||||
[Header("플레이어 전투 효과음")]
|
||||
[SerializeField] private AudioClip housingFootstepSFX;
|
||||
[SerializeField] private AudioClip playerHitSFX;
|
||||
[SerializeField] private AudioClip dungeonFootstepSFX;
|
||||
[SerializeField] private AudioClip playerAttackSFX;
|
||||
|
||||
@ -85,7 +85,7 @@ public partial class GameManager
|
||||
if (sleepingSFX != null) SafeSoundManager?.LoadAudioClip("Sleeping", sleepingSFX);
|
||||
|
||||
// 플레이어 전투 효과음 등록
|
||||
if (housingFootstepSFX != null) SafeSoundManager?.LoadAudioClip("HousingFootstep", housingFootstepSFX);
|
||||
if (playerHitSFX != null) SafeSoundManager?.LoadAudioClip("PlayerHit", playerHitSFX);
|
||||
if (dungeonFootstepSFX != null) SafeSoundManager?.LoadAudioClip("DungeonFootstep", dungeonFootstepSFX);
|
||||
if (playerAttackSFX != null) SafeSoundManager?.LoadAudioClip("PlayerAttack", playerAttackSFX);
|
||||
|
||||
@ -154,7 +154,7 @@ public partial class GameManager
|
||||
{
|
||||
targetScene = "Housing";
|
||||
}
|
||||
else if (sceneName.Contains("Game"))
|
||||
else if (sceneName.Contains("Dungeon"))
|
||||
{
|
||||
targetScene = "Game";
|
||||
}
|
||||
@ -173,6 +173,7 @@ public partial class GameManager
|
||||
{
|
||||
SafeSoundManager?.PlayBGM(bgmClip, true, 1.5f);
|
||||
currentBGMTrack = targetScene;
|
||||
wasPlayingBGM = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -223,6 +224,12 @@ public partial class GameManager
|
||||
|
||||
public void PlayInteractionSound(ActionType actionType)
|
||||
{
|
||||
if (sceneBGMMap.TryGetValue(currentBGMTrack, out AudioClip bgmClip))
|
||||
{
|
||||
previousBGMClip = bgmClip;
|
||||
wasPlayingBGM = true;
|
||||
}
|
||||
|
||||
// 배경음 중지 (페이드아웃)
|
||||
SafeSoundManager?.StopBGM(true, 0.5f);
|
||||
|
||||
@ -301,9 +308,9 @@ public partial class GameManager
|
||||
|
||||
#region 플레이어 전투 효과음 제어
|
||||
|
||||
public void PlayHousingFootstepSound()
|
||||
public void PlayPlayerHitSound()
|
||||
{
|
||||
SafeSoundManager?.PlaySFX("HousingFootstep");
|
||||
SafeSoundManager?.PlaySFX("PlayerHit");
|
||||
}
|
||||
|
||||
public void PlayDungeonFootstepSound()
|
||||
|
@ -23,7 +23,7 @@ public class SoundManager : Singleton<SoundManager>
|
||||
// 페이드 효과 진행 여부
|
||||
private bool isFading = false;
|
||||
|
||||
private void Awake()
|
||||
private void Start()
|
||||
{
|
||||
InitializeAudioSources();
|
||||
}
|
||||
|
@ -9,6 +9,6 @@ EditorBuildSettings:
|
||||
path: Assets/KSH/ReHousing.unity
|
||||
guid: b748e35b920bde64cbd6ffe5fdb43e23
|
||||
- enabled: 1
|
||||
path: Assets/KSH/DungeonTestScene.unity
|
||||
guid: 4563b107911b0e54cbdf659694a6f17a
|
||||
path: Assets/KSH/ReDungeon.unity
|
||||
guid: b7412a4a2ee433447afcb28700cb50a9
|
||||
m_configObjects: {}
|
||||
|
Loading…
x
Reference in New Issue
Block a user