TimeScale 기능 VisualFeedbackManager로 이동
+ 전투 맵 수정 + CombatPlayer MainSkillUi 초기화 오류 수정 + 메뉴UI Close버튼 미작동 수정 + HitStop과 SlowMotion 겹치는 문제 수정
This commit is contained in:
parent
6d72198a34
commit
498162d4a8
File diff suppressed because it is too large
Load Diff
@ -51,6 +51,7 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
var targetLayer = iMeleeComboAttackable.TargetLayer;
|
var targetLayer = iMeleeComboAttackable.TargetLayer;
|
||||||
var ui = CombatUiManager.Inst.MainSkillUi;
|
var ui = CombatUiManager.Inst.MainSkillUi;
|
||||||
|
ui.ResetSkillUi();
|
||||||
ui.gameObject.SetActive(true);
|
ui.gameObject.SetActive(true);
|
||||||
|
|
||||||
instantiateMainSkill.SkillInputData.InitInputData(transform, col, rb, null, visualLook, anim, null, targetLayer, ui);
|
instantiateMainSkill.SkillInputData.InitInputData(transform, col, rb, null, visualLook, anim, null, targetLayer, ui);
|
||||||
|
@ -147,10 +147,10 @@ namespace BlueWaterProject
|
|||||||
case SaveStage.TUTORIAL:
|
case SaveStage.TUTORIAL:
|
||||||
break;
|
break;
|
||||||
case SaveStage.SLIME:
|
case SaveStage.SLIME:
|
||||||
FindAnyObjectByType<SlimeBossMapController>().InitBossMap();
|
FindAnyObjectByType<SlimeBossMapController>()?.InitBossMap();
|
||||||
break;
|
break;
|
||||||
case SaveStage.RHINOCEROS:
|
case SaveStage.RHINOCEROS:
|
||||||
FindAnyObjectByType<RhinocerosBossMapController>().InitBossMap();
|
FindAnyObjectByType<RhinocerosBossMapController>()?.InitBossMap();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new ArgumentOutOfRangeException();
|
throw new ArgumentOutOfRangeException();
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
|
||||||
using Sirenix.OdinInspector;
|
using Sirenix.OdinInspector;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@ -23,13 +22,6 @@ namespace BlueWaterProject
|
|||||||
public bool IsBuildMode { get; set; }
|
public bool IsBuildMode { get; set; }
|
||||||
[field: SerializeField] public bool IsOnFollowCamera { 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()
|
private void Init()
|
||||||
{
|
{
|
||||||
TycoonPlayer = FindAnyObjectByType<TycoonPlayer>();
|
TycoonPlayer = FindAnyObjectByType<TycoonPlayer>();
|
||||||
@ -44,57 +36,6 @@ namespace BlueWaterProject
|
|||||||
{
|
{
|
||||||
Cursor.lockState = CursorLockMode.Confined;
|
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)
|
public void InstantiateCombatPlayer(Vector3 position, Quaternion rotation = default)
|
||||||
{
|
{
|
||||||
|
@ -9,7 +9,7 @@ namespace BlueWaterProject
|
|||||||
{
|
{
|
||||||
base.Close();
|
base.Close();
|
||||||
|
|
||||||
FindAnyObjectByType<PlayerInput>().SwitchCurrentActionMap(CombatInput.COMBAT);
|
FindAnyObjectByType<PlayerInput>()?.SwitchCurrentActionMap(CombatInput.COMBAT);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void InitAndUpdateInventory()
|
protected override void InitAndUpdateInventory()
|
||||||
|
@ -9,7 +9,7 @@ namespace BlueWaterProject
|
|||||||
{
|
{
|
||||||
base.Close();
|
base.Close();
|
||||||
|
|
||||||
FindAnyObjectByType<PlayerInput>().SwitchCurrentActionMap(ShipPlayer.OCEAN);
|
FindAnyObjectByType<PlayerInput>()?.SwitchCurrentActionMap(ShipPlayer.OCEAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void InitAndUpdateInventory()
|
protected override void InitAndUpdateInventory()
|
||||||
|
@ -49,7 +49,7 @@ public class SlimeBossMapController : BossMapController
|
|||||||
|
|
||||||
private IEnumerator DieRabbitCoroutine()
|
private IEnumerator DieRabbitCoroutine()
|
||||||
{
|
{
|
||||||
GameManager.Inst.SlowSpeedMode();
|
VisualFeedbackManager.Inst.SetBaseTimeScale(0.1f);
|
||||||
AllDestroyBoss();
|
AllDestroyBoss();
|
||||||
CombatUiManager.Inst.FadeInOut();
|
CombatUiManager.Inst.FadeInOut();
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ public class SlimeBossMapController : BossMapController
|
|||||||
elapsedTime += Time.unscaledDeltaTime;
|
elapsedTime += Time.unscaledDeltaTime;
|
||||||
yield return null;
|
yield return null;
|
||||||
}
|
}
|
||||||
GameManager.Inst.DefaultSpeedMode();
|
VisualFeedbackManager.Inst.SetBaseTimeScale(1f);
|
||||||
|
|
||||||
elapsedTime = 0f;
|
elapsedTime = 0f;
|
||||||
while (elapsedTime <= 2f)
|
while (elapsedTime <= 2f)
|
||||||
|
@ -11,7 +11,7 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
if (!CombatUiManager.Inst.IsPopupListEmpty()) return;
|
if (!CombatUiManager.Inst.IsPopupListEmpty()) return;
|
||||||
|
|
||||||
FindAnyObjectByType<PlayerInput>().SwitchCurrentActionMap(CombatInput.COMBAT);
|
FindAnyObjectByType<PlayerInput>()?.SwitchCurrentActionMap(CombatInput.COMBAT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -15,17 +15,19 @@ namespace BlueWaterProject
|
|||||||
[field: SerializeField] public Image Fill { get; set; }
|
[field: SerializeField] public Image Fill { get; set; }
|
||||||
[field: SerializeField] public UIView Fade { get; set; }
|
[field: SerializeField] public UIView Fade { get; set; }
|
||||||
|
|
||||||
public void Cooldown(float waitTime)
|
private Coroutine cooldownCoroutine;
|
||||||
{
|
|
||||||
StartCoroutine(CooldownCoroutine(waitTime));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
Fill.fillAmount = 0f;
|
Fill.fillAmount = 0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Cooldown(float waitTime)
|
||||||
|
{
|
||||||
|
cooldownCoroutine = StartCoroutine(CooldownCoroutine(waitTime));
|
||||||
|
}
|
||||||
|
|
||||||
public IEnumerator CooldownCoroutine(float waitTime)
|
private IEnumerator CooldownCoroutine(float waitTime)
|
||||||
{
|
{
|
||||||
Fill.fillAmount = 1f;
|
Fill.fillAmount = 1f;
|
||||||
|
|
||||||
@ -37,5 +39,16 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
Fade.Show();
|
Fade.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ResetSkillUi()
|
||||||
|
{
|
||||||
|
if (cooldownCoroutine != null)
|
||||||
|
{
|
||||||
|
StopCoroutine(cooldownCoroutine);
|
||||||
|
cooldownCoroutine = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Fill.fillAmount = 0f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -9,6 +9,34 @@ namespace BlueWaterProject
|
|||||||
{
|
{
|
||||||
public class VisualFeedbackManager : Singleton<VisualFeedbackManager>
|
public class VisualFeedbackManager : Singleton<VisualFeedbackManager>
|
||||||
{
|
{
|
||||||
|
private float baseTimeScale = 1f;
|
||||||
|
private float currentHitStopCoefficient = 1f;
|
||||||
|
|
||||||
|
public void SetBaseTimeScale(float value)
|
||||||
|
{
|
||||||
|
baseTimeScale = value;
|
||||||
|
UpdateTimeScale();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetHitStop(float value)
|
||||||
|
{
|
||||||
|
currentHitStopCoefficient = value;
|
||||||
|
UpdateTimeScale();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ResetTimeScale()
|
||||||
|
{
|
||||||
|
baseTimeScale = 1f;
|
||||||
|
currentHitStopCoefficient = 1f;
|
||||||
|
UpdateTimeScale();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateTimeScale()
|
||||||
|
{
|
||||||
|
Time.timeScale = baseTimeScale * currentHitStopCoefficient;
|
||||||
|
Time.fixedDeltaTime = Time.timeScale * 0.02f;
|
||||||
|
}
|
||||||
|
|
||||||
#region HitStop
|
#region HitStop
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -22,10 +50,9 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
private IEnumerator HitStopCoroutine(float duration)
|
private IEnumerator HitStopCoroutine(float duration)
|
||||||
{
|
{
|
||||||
var originalTimeScale = 1;
|
SetHitStop(0.05f);
|
||||||
Time.timeScale = 0.05f;
|
|
||||||
yield return new WaitForSecondsRealtime(duration);
|
yield return new WaitForSecondsRealtime(duration);
|
||||||
Time.timeScale = originalTimeScale;
|
SetHitStop(1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -108,6 +108,37 @@ MeshCollider:
|
|||||||
m_Convex: 0
|
m_Convex: 0
|
||||||
m_CookingOptions: 30
|
m_CookingOptions: 30
|
||||||
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
|
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
--- !u!1 &1160217028477158790
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3528589141546779327}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Lights
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &3528589141546779327
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1160217028477158790}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 7580754897896246193}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &1393939264629856146
|
--- !u!1 &1393939264629856146
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -621,6 +652,38 @@ Transform:
|
|||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 665791185885374265}
|
m_Father: {fileID: 665791185885374265}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &5568453933648760757
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7798505859049167048}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: GroundFogs
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &7798505859049167048
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5568453933648760757}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 7639058301001315723}
|
||||||
|
m_Father: {fileID: 7580754897896246193}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &5654157948257255679
|
--- !u!1 &5654157948257255679
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -748,7 +811,7 @@ Transform:
|
|||||||
m_LocalScale: {x: 5, y: 1, z: 5}
|
m_LocalScale: {x: 5, y: 1, z: 5}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 7580754897896246193}
|
m_Father: {fileID: 7798505859049167048}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!33 &1170900988332598305
|
--- !u!33 &1170900988332598305
|
||||||
MeshFilter:
|
MeshFilter:
|
||||||
@ -855,11 +918,12 @@ Transform:
|
|||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 2986811746704976679}
|
- {fileID: 2986811746704976679}
|
||||||
- {fileID: 665791185885374265}
|
- {fileID: 665791185885374265}
|
||||||
|
- {fileID: 7798505859049167048}
|
||||||
|
- {fileID: 3528589141546779327}
|
||||||
- {fileID: 7778690860228022480}
|
- {fileID: 7778690860228022480}
|
||||||
- {fileID: 5483604360458066655}
|
- {fileID: 5483604360458066655}
|
||||||
- {fileID: 8874040642671342955}
|
- {fileID: 8874040642671342955}
|
||||||
- {fileID: 5292453453235858255}
|
- {fileID: 5292453453235858255}
|
||||||
- {fileID: 7639058301001315723}
|
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &9198442223207540368
|
--- !u!1 &9198442223207540368
|
||||||
|
Loading…
Reference in New Issue
Block a user