OldBlueWater/BlueWater/Assets/02.Scripts/GameManager.cs
NTG c63377124f 슬라임 및 로직 수정(상세내용 아래 참고)
수정 내역
1. 토끼 이미지, 크기 변경
2. 슬라임 이미지(색감), 크기 변경
3. 슬라임 그림자 이미지 변경
4. 슬라임 얼룩자국 이미지(색감) 변경
5. 토끼 슬라임 최대 4단계로 변경
6. 맵 이동 및 재시작 과정에서 전투플레이어 삭제 후 생성하는 로직으로 변경
7. 1단계 슬라임이 점프할 때, 카메라 흔들림 효과 강화
8. 슬라임 시작 또는 분열할 때, 0.5초 무적 기능 추가

버그 수정 내역
1. 일반 슬라임이 본체로 인식되는 버그 수정
2. 간헐적으로 슬라임 얼룩 자국이 남아있는 버그 수정
3. 마지막 보스를 스킬로 잡을 때, 전투플레이어 오류 수정
4. 대쉬 중에 디버프를 받는 버그 수정
2024-05-12 17:41:13 +09:00

106 lines
3.3 KiB
C#

using System;
using System.Collections;
using Sirenix.OdinInspector;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
[DefaultExecutionOrder(-1)]
public class GameManager : Singleton<GameManager>
{
public ShipPlayer ShipPlayer { get; private set; }
// Combat
[Title("Combat")]
[SerializeField] private GameObject combatPlayerPrefab;
public CombatPlayer CurrentCombatPlayer { get; set; }
public event Action<Transform> OnInstantiateCombatPlayer;
// Tycoon
[Title("Tycoon")]
public TycoonPlayer TycoonPlayer { get; private set; }
public bool IsBuildMode { get; set; }
[field: SerializeField] public bool IsOnFollowCamera { get; set; }
// Game Data
[Title("Game Data")]
[Range(0f, 1f)]
[SerializeField] private float slowSpeed = 0.1f;
private const string IN_ISLAND_PLAYER_NAME = "InIslandPlayer";
private void Init()
{
TycoonPlayer = FindAnyObjectByType<TycoonPlayer>();
ShipPlayer = FindAnyObjectByType<ShipPlayer>();
}
protected override void OnAwake()
{
Init();
}
private void Start()
{
Cursor.lockState = CursorLockMode.Confined;
}
public IEnumerator ApplySlowMotion(float targetTimeScale, float duration)
{
var startScale = Time.timeScale;
var time = 0f;
while (time < duration)
{
Time.timeScale = Mathf.Lerp(startScale, targetTimeScale, time / duration);
Time.fixedDeltaTime = 0.02f * Time.timeScale;
time += Time.unscaledDeltaTime;
yield return null;
}
Time.timeScale = targetTimeScale;
}
public void SlowSpeedMode()
{
Time.timeScale = slowSpeed;
Time.fixedDeltaTime = 0.02f * Time.timeScale;
}
public void DefaultSpeedMode()
{
Time.timeScale = 1f;
Time.fixedDeltaTime = 0.02f;
}
public void SetCurrentInIslandPlayer(IInIslandPlayer inIslandPlayer)
{
// PlayerInput currentPlayerInput;
//
// if (CurrentInIslandPlayer != null)
// {
// currentPlayerInput = CurrentInIslandPlayer.Transform.GetComponent<PlayerInput>();
// if (currentPlayerInput != null)
// {
// currentPlayerInput.enabled = false;
// }
// }
//
// CurrentInIslandPlayer = inIslandPlayer;
// InIslandCamera.Inst.SetTarget(inIslandPlayer.Transform);
//
// currentPlayerInput = CurrentInIslandPlayer.Transform.GetComponent<PlayerInput>();
// if (currentPlayerInput != null)
// {
// currentPlayerInput.enabled = true;
// }
}
public void InstantiateCombatPlayer(Vector3 position, Quaternion rotation = default)
{
var instantiatePlayer = Instantiate(combatPlayerPrefab, position, rotation);
OnInstantiateCombatPlayer?.Invoke(instantiatePlayer.transform);
}
}
}