ee
This commit is contained in:
parent
f4ce7ba206
commit
b06747778c
|
|
@ -1334,8 +1334,17 @@ MonoBehaviour:
|
|||
normalRange: 15
|
||||
normalSpeed: 20
|
||||
attackCooldown: 0.5
|
||||
maxChargeTime: 2
|
||||
chargeStages: []
|
||||
maxChargeTime: 3
|
||||
chargeStages:
|
||||
- chargeTime: 1
|
||||
damageMult: 1.5
|
||||
rangeMult: 1.2
|
||||
- chargeTime: 2
|
||||
damageMult: 2
|
||||
rangeMult: 1.5
|
||||
- chargeTime: 3
|
||||
damageMult: 2.5
|
||||
rangeMult: 2
|
||||
--- !u!114 &8160405634931995834
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,32 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1102 &-6348460053703279695
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: root_Fire
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: -755189870364517574}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 7400000, guid: 3ce83050456edc94a879c6b7b098b0b8, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1101 &-6240735469404449033
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
|
|
@ -64,7 +91,32 @@ BlendTree:
|
|||
m_UseAutomaticThresholds: 0
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 0
|
||||
--- !u!1101 &-6062631903822798585
|
||||
--- !u!1101 &-3373107724525767724
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Throw
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1136321875733057157}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.7815534
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &-2537943261611436803
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
|
|
@ -81,83 +133,9 @@ AnimatorStateTransition:
|
|||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.1
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.7972973
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1102 &-5106414194645963998
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: ThrowAnime2
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: -2340117145942438922}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -4469183485442372851, guid: fe0db969c25fbba449e6b9dc582f974e, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1101 &-3373107724525767724
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Attack
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1136321875733057157}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.7815534
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &-2340117145942438922
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 5832328692256868789}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.90384614
|
||||
m_ExitTime: 0.8
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
|
|
@ -234,6 +212,28 @@ AnimatorStateTransition:
|
|||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &-755189870364517574
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 5832328692256868789}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.8
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!91 &9100000
|
||||
AnimatorController:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -249,12 +249,6 @@ AnimatorController:
|
|||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
- m_Name: Attack
|
||||
m_Type: 9
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
- m_Name: Throw
|
||||
m_Type: 9
|
||||
m_DefaultFloat: 0
|
||||
|
|
@ -292,31 +286,6 @@ AnimatorController:
|
|||
m_IKPass: 0
|
||||
m_SyncedLayerAffectsTiming: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
--- !u!1101 &732024821610739442
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Throw
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: -5106414194645963998}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.7972973
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1102 &1136321875733057157
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
|
|
@ -362,15 +331,15 @@ AnimatorStateMachine:
|
|||
- serializedVersion: 1
|
||||
m_State: {fileID: -2088444459569361171}
|
||||
m_Position: {x: 340, y: -140, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1284588245125541513}
|
||||
m_Position: {x: 120, y: 60, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -5106414194645963998}
|
||||
m_Position: {x: -230, y: -70, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1136321875733057157}
|
||||
m_Position: {x: 410, y: 240, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 5685718804930466242}
|
||||
m_Position: {x: 373.32153, y: 331.04327, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -6348460053703279695}
|
||||
m_Position: {x: 380, y: 410, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions:
|
||||
- {fileID: 4333065019228860351}
|
||||
|
|
@ -383,34 +352,31 @@ AnimatorStateMachine:
|
|||
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||
m_DefaultState: {fileID: 5832328692256868789}
|
||||
--- !u!1102 &1284588245125541513
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
--- !u!1101 &1249653965778530027
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Throw_Ready
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 732024821610739442}
|
||||
- {fileID: -6062631903822798585}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -203655887218126122, guid: fe0db969c25fbba449e6b9dc582f974e, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Throw
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: -6348460053703279695}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.100000024
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.7727272
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!206 &2519930613719260005
|
||||
BlendTree:
|
||||
m_ObjectHideFlags: 1
|
||||
|
|
@ -434,7 +400,7 @@ BlendTree:
|
|||
m_UseAutomaticThresholds: 1
|
||||
m_NormalizedBlendValues: 0
|
||||
m_BlendType: 0
|
||||
--- !u!1101 &2866321221530538164
|
||||
--- !u!1101 &3453174925999685758
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
|
|
@ -446,14 +412,14 @@ AnimatorStateTransition:
|
|||
m_ConditionEvent: isCharging
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1284588245125541513}
|
||||
m_DstState: {fileID: 5685718804930466242}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25000006
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.5543414
|
||||
m_ExitTime: 0.7815534
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
|
|
@ -484,6 +450,34 @@ AnimatorStateTransition:
|
|||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1102 &5685718804930466242
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Aiming
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 1249653965778530027}
|
||||
- {fileID: -2537943261611436803}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 7400000, guid: ed3776af6fb028c4c897ad83453f61c7, type: 2}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1102 &5832328692256868789
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
|
|
@ -495,8 +489,8 @@ AnimatorState:
|
|||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 2866321221530538164}
|
||||
- {fileID: -3373107724525767724}
|
||||
- {fileID: 3453174925999685758}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
|
|
|
|||
922221
Assets/Player Character/Main character/Celycia/Meshes/root_Charging 1.anim
Normal file
922221
Assets/Player Character/Main character/Celycia/Meshes/root_Charging 1.anim
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ed3776af6fb028c4c897ad83453f61c7
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 7400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
127022
Assets/Player Character/Main character/Celycia/Meshes/root_Fire.anim
Normal file
127022
Assets/Player Character/Main character/Celycia/Meshes/root_Fire.anim
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3ce83050456edc94a879c6b7b098b0b8
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 7400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -5,9 +5,9 @@ using System.Collections.Generic;
|
|||
public class PlayerAttack : MonoBehaviour
|
||||
{
|
||||
[Header("--- 활 설정 ---")]
|
||||
[SerializeField] private GameObject arrowPrefab; // 화살 프리팹
|
||||
[SerializeField] private Transform firePoint; // 발사 위치
|
||||
[SerializeField] private PlayerAnimator pAnim; // 애니메이션 제어
|
||||
[SerializeField] private GameObject arrowPrefab;
|
||||
[SerializeField] private Transform firePoint;
|
||||
[SerializeField] private PlayerAnimator pAnim;
|
||||
|
||||
[Header("--- 일반 공격 (좌클릭) ---")]
|
||||
[SerializeField] private float normalDamage = 10f;
|
||||
|
|
@ -33,7 +33,9 @@ public class PlayerAttack : MonoBehaviour
|
|||
private bool _isCharging = false;
|
||||
private bool _isAttacking = false;
|
||||
|
||||
// 🔥 추가: 애니메이션 이벤트 발생 시점에 사용할 데이터 저장용 변수
|
||||
// 재장전 잠금 장치 (한 발 쏘면 우클릭 뗄 때까지 발사 불가)
|
||||
private bool _waitForRelease = false;
|
||||
|
||||
private float _pendingDamage;
|
||||
private float _pendingSpeed;
|
||||
private float _pendingRange;
|
||||
|
|
@ -67,27 +69,29 @@ public class PlayerAttack : MonoBehaviour
|
|||
}
|
||||
}
|
||||
|
||||
// 1. 좌클릭: 일반 공격 시도 (데이터만 저장하고 애니메이션 재생)
|
||||
// --- [1] 일반 공격 ---
|
||||
public void PerformNormalAttack()
|
||||
{
|
||||
if (Time.time < _lastAttackTime + attackCooldown) return;
|
||||
if (_isAttacking) return;
|
||||
|
||||
// ✅ 여기서 바로 발사하지 않고 정보만 저장합니다.
|
||||
_pendingDamage = normalDamage;
|
||||
_pendingSpeed = normalSpeed;
|
||||
_pendingRange = normalRange;
|
||||
|
||||
_lastAttackTime = Time.time;
|
||||
|
||||
// 애니메이션 트리거 실행
|
||||
if (pAnim != null) pAnim.TriggerThrow();
|
||||
|
||||
StartCoroutine(AttackRoutine());
|
||||
}
|
||||
|
||||
// --- [2] 차징 시작 ---
|
||||
public void StartCharging()
|
||||
{
|
||||
// 🔒 잠금 상태(방금 쏨)라면 차징 시작 안 함 (손 떼야 풀림)
|
||||
if (_waitForRelease) return;
|
||||
|
||||
_isCharging = true;
|
||||
_chargeTimer = 0f;
|
||||
|
||||
|
|
@ -95,7 +99,8 @@ public class PlayerAttack : MonoBehaviour
|
|||
if (CinemachineShake.Instance != null) CinemachineShake.Instance.SetZoom(true);
|
||||
}
|
||||
|
||||
public void CancelCharging()
|
||||
// 내부용: 효과 끄기
|
||||
private void ResetChargingEffects()
|
||||
{
|
||||
_isCharging = false;
|
||||
_chargeTimer = 0f;
|
||||
|
|
@ -104,7 +109,14 @@ public class PlayerAttack : MonoBehaviour
|
|||
if (CinemachineShake.Instance != null) CinemachineShake.Instance.SetZoom(false);
|
||||
}
|
||||
|
||||
// 2. 우클릭 중 좌클릭: 차징 발사 시도 (수치 계산 후 애니메이션 재생)
|
||||
// 외부 호출: 우클릭 뗐을 때 (여기서 잠금을 풉니다)
|
||||
public void CancelCharging()
|
||||
{
|
||||
ResetChargingEffects();
|
||||
_waitForRelease = false; // ✅ 잠금 해제! 다시 쏠 수 있음
|
||||
}
|
||||
|
||||
// --- [3] 차징 발사 ---
|
||||
public void ReleaseAttack()
|
||||
{
|
||||
if (!_isCharging) return;
|
||||
|
|
@ -115,20 +127,20 @@ public class PlayerAttack : MonoBehaviour
|
|||
if (_chargeTimer >= stage.chargeTime) currentStage = stage;
|
||||
}
|
||||
|
||||
// ✅ 계산된 결과값을 저장해둡니다.
|
||||
_pendingDamage = normalDamage * currentStage.damageMult;
|
||||
_pendingSpeed = normalSpeed * currentStage.rangeMult;
|
||||
_pendingRange = normalRange * currentStage.rangeMult;
|
||||
|
||||
// 애니메이션 트리거 실행
|
||||
if (pAnim != null) pAnim.TriggerThrow();
|
||||
|
||||
CancelCharging();
|
||||
// 🔒 발사했으므로 잠금! (우클릭 뗄 때까지 차징 불가)
|
||||
_waitForRelease = true;
|
||||
|
||||
_lastAttackTime = Time.time;
|
||||
StartCoroutine(AttackRoutine());
|
||||
}
|
||||
|
||||
// 3. 🎯 핵심: 애니메이션의 'OnShootArrow' 이벤트 타이밍에 맞춰 실제 화살 생성
|
||||
// --- [4] 이벤트: 화살 생성 ---
|
||||
public void OnShootArrow()
|
||||
{
|
||||
if (arrowPrefab == null || firePoint == null) return;
|
||||
|
|
@ -138,16 +150,31 @@ public class PlayerAttack : MonoBehaviour
|
|||
|
||||
if (arrowScript != null)
|
||||
{
|
||||
// 미리 저장해둔(_pending...) 수치를 사용해 화살 초기화
|
||||
arrowScript.Initialize(_pendingDamage, _pendingSpeed, _pendingRange);
|
||||
}
|
||||
}
|
||||
|
||||
// --- [5] 이벤트: 공격 끝 (정상적인 경우) ---
|
||||
public void OnAttackEnd()
|
||||
{
|
||||
_isAttacking = false;
|
||||
ResetChargingEffects();
|
||||
}
|
||||
|
||||
// --- [6] 안전장치 코루틴 ---
|
||||
private IEnumerator AttackRoutine()
|
||||
{
|
||||
_isAttacking = true;
|
||||
yield return new WaitForSeconds(0.2f);
|
||||
|
||||
// 🚨 안전장치: 0.6초 뒤에는 무조건 공격 상태를 풉니다!
|
||||
// (애니메이션 이벤트 OnAttackEnd가 씹혀도 멈추지 않게 함)
|
||||
yield return new WaitForSeconds(0.6f);
|
||||
|
||||
if (_isAttacking)
|
||||
{
|
||||
_isAttacking = false;
|
||||
ResetChargingEffects();
|
||||
}
|
||||
}
|
||||
|
||||
public void StartWeaponCollision() { }
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user