feat: 몬스터 피격시 데미지 텍스트 이펙트 추가
This commit is contained in:
@@ -0,0 +1,286 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &2694340896413399810
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7408005748681691554}
|
||||||
|
- component: {fileID: 8730988064188533715}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: TON.DamageEffect
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &7408005748681691554
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2694340896413399810}
|
||||||
|
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: 2677448934548231384}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &8730988064188533715
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2694340896413399810}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8c86fdd904c9e8d41a93d1249c02a506, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
textMesh: {fileID: 34467655947164835}
|
||||||
|
floatSpeed: 1
|
||||||
|
duration: 1
|
||||||
|
--- !u!1 &3215559622947215306
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2677448934548231384}
|
||||||
|
- component: {fileID: 1477627225519892156}
|
||||||
|
- component: {fileID: 2012959595055953831}
|
||||||
|
- component: {fileID: 3615999384750323319}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Canvas
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2677448934548231384
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3215559622947215306}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 0.05, y: 0.05, z: 0.05}
|
||||||
|
m_ConstrainProportionsScale: 1
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 682067139761655396}
|
||||||
|
m_Father: {fileID: 7408005748681691554}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!223 &1477627225519892156
|
||||||
|
Canvas:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3215559622947215306}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 3
|
||||||
|
m_RenderMode: 2
|
||||||
|
m_Camera: {fileID: 0}
|
||||||
|
m_PlaneDistance: 100
|
||||||
|
m_PixelPerfect: 0
|
||||||
|
m_ReceivesEvents: 1
|
||||||
|
m_OverrideSorting: 0
|
||||||
|
m_OverridePixelPerfect: 0
|
||||||
|
m_SortingBucketNormalizedSize: 0
|
||||||
|
m_VertexColorAlwaysGammaSpace: 0
|
||||||
|
m_AdditionalShaderChannelsFlag: 25
|
||||||
|
m_UpdateRectTransformForStandalone: 0
|
||||||
|
m_SortingLayerID: -2014068629
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
--- !u!114 &2012959595055953831
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3215559622947215306}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_UiScaleMode: 0
|
||||||
|
m_ReferencePixelsPerUnit: 100
|
||||||
|
m_ScaleFactor: 1
|
||||||
|
m_ReferenceResolution: {x: 800, y: 600}
|
||||||
|
m_ScreenMatchMode: 0
|
||||||
|
m_MatchWidthOrHeight: 0
|
||||||
|
m_PhysicalUnit: 3
|
||||||
|
m_FallbackScreenDPI: 96
|
||||||
|
m_DefaultSpriteDPI: 96
|
||||||
|
m_DynamicPixelsPerUnit: 1
|
||||||
|
m_PresetInfoIsWorld: 1
|
||||||
|
--- !u!114 &3615999384750323319
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3215559622947215306}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_IgnoreReversedGraphics: 1
|
||||||
|
m_BlockingObjects: 0
|
||||||
|
m_BlockingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 575
|
||||||
|
--- !u!1 &6079040546804672776
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 682067139761655396}
|
||||||
|
- component: {fileID: 1598039331727879914}
|
||||||
|
- component: {fileID: 34467655947164835}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Text (TMP)
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &682067139761655396
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6079040546804672776}
|
||||||
|
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: 2677448934548231384}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 200, y: 50}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &1598039331727879914
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6079040546804672776}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &34467655947164835
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6079040546804672776}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_text: 999,999,999
|
||||||
|
m_isRightToLeft: 0
|
||||||
|
m_fontAsset: {fileID: 11400000, guid: b43a164f1c9ce804bab1090e60c159b4, type: 2}
|
||||||
|
m_sharedMaterial: {fileID: 2333603320826562980, guid: b43a164f1c9ce804bab1090e60c159b4, type: 2}
|
||||||
|
m_fontSharedMaterials: []
|
||||||
|
m_fontMaterial: {fileID: 0}
|
||||||
|
m_fontMaterials: []
|
||||||
|
m_fontColor32:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_enableVertexGradient: 0
|
||||||
|
m_colorMode: 3
|
||||||
|
m_fontColorGradient:
|
||||||
|
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_fontColorGradientPreset: {fileID: 0}
|
||||||
|
m_spriteAsset: {fileID: 0}
|
||||||
|
m_tintAllSprites: 0
|
||||||
|
m_StyleSheet: {fileID: 0}
|
||||||
|
m_TextStyleHashCode: -1183493901
|
||||||
|
m_overrideHtmlColors: 0
|
||||||
|
m_faceColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontSize: 24
|
||||||
|
m_fontSizeBase: 24
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 0
|
||||||
|
m_fontSizeMin: 18
|
||||||
|
m_fontSizeMax: 72
|
||||||
|
m_fontStyle: 0
|
||||||
|
m_HorizontalAlignment: 2
|
||||||
|
m_VerticalAlignment: 256
|
||||||
|
m_textAlignment: 65535
|
||||||
|
m_characterSpacing: 0
|
||||||
|
m_wordSpacing: 0
|
||||||
|
m_lineSpacing: 0
|
||||||
|
m_lineSpacingMax: 0
|
||||||
|
m_paragraphSpacing: 0
|
||||||
|
m_charWidthMaxAdj: 0
|
||||||
|
m_enableWordWrapping: 1
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 0
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 1
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 1
|
||||||
|
m_parseCtrlCharacters: 1
|
||||||
|
m_isOrthographic: 1
|
||||||
|
m_isCullingEnabled: 0
|
||||||
|
m_horizontalMapping: 0
|
||||||
|
m_verticalMapping: 0
|
||||||
|
m_uvLineOffset: 0
|
||||||
|
m_geometrySortingOrder: 0
|
||||||
|
m_IsTextObjectScaleStatic: 0
|
||||||
|
m_VertexBufferAutoSizeReduction: 0
|
||||||
|
m_useMaxVisibleDescender: 1
|
||||||
|
m_pageToDisplay: 1
|
||||||
|
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_isUsingLegacyAnimationComponent: 0
|
||||||
|
m_isVolumetricText: 0
|
||||||
|
m_hasFontAssetChanged: 0
|
||||||
|
m_baseMaterial: {fileID: 0}
|
||||||
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3c12a401b2ee7ee419cf8fecdaa97964
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -45,6 +45,9 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
poolContainer:
|
poolContainer:
|
||||||
|
- objectId: DamageEffect
|
||||||
|
objectPrefab: {fileID: 2694340896413399810, guid: 3c12a401b2ee7ee419cf8fecdaa97964, type: 3}
|
||||||
|
count: 20
|
||||||
- objectId: K0001
|
- objectId: K0001
|
||||||
objectPrefab: {fileID: 6328494989662859589, guid: 25bb8f03ea9cfc941b64e04b75d3a1d9, type: 3}
|
objectPrefab: {fileID: 6328494989662859589, guid: 25bb8f03ea9cfc941b64e04b75d3a1d9, type: 3}
|
||||||
count: 3
|
count: 3
|
||||||
|
|||||||
@@ -777,6 +777,74 @@ Transform:
|
|||||||
m_Children: []
|
m_Children: []
|
||||||
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 &1087677178
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1087677181}
|
||||||
|
- component: {fileID: 1087677180}
|
||||||
|
- component: {fileID: 1087677179}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: EventSystem
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &1087677179
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1087677178}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_SendPointerHoverToParent: 1
|
||||||
|
m_HorizontalAxis: Horizontal
|
||||||
|
m_VerticalAxis: Vertical
|
||||||
|
m_SubmitButton: Submit
|
||||||
|
m_CancelButton: Cancel
|
||||||
|
m_InputActionsPerSecond: 10
|
||||||
|
m_RepeatDelay: 0.5
|
||||||
|
m_ForceModuleActive: 0
|
||||||
|
--- !u!114 &1087677180
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1087677178}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_FirstSelected: {fileID: 0}
|
||||||
|
m_sendNavigationEvents: 1
|
||||||
|
m_DragThreshold: 10
|
||||||
|
--- !u!4 &1087677181
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1087677178}
|
||||||
|
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: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &1128113572
|
--- !u!1 &1128113572
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -1736,3 +1804,4 @@ SceneRoots:
|
|||||||
- {fileID: 1434684281}
|
- {fileID: 1434684281}
|
||||||
- {fileID: 373368149}
|
- {fileID: 373368149}
|
||||||
- {fileID: 71730172}
|
- {fileID: 71730172}
|
||||||
|
- {fileID: 1087677181}
|
||||||
|
|||||||
@@ -29,13 +29,17 @@ namespace TON
|
|||||||
// TODO: 장비 공격력 반영 필요
|
// TODO: 장비 공격력 반영 필요
|
||||||
// float damage = damageCalculator.CalculateBaseDamage(playerData.attackPower, playerData.equipmentAttack, playerData.defensivePower);
|
// float damage = damageCalculator.CalculateBaseDamage(playerData.attackPower, playerData.equipmentAttack, playerData.defensivePower);
|
||||||
|
|
||||||
// 몬스터 방어력 의도값 계산
|
|
||||||
MonsterBase monsterBase = collision.GetComponent<MonsterBase>();
|
MonsterBase monsterBase = collision.GetComponent<MonsterBase>();
|
||||||
|
// 몬스터가 이전 피격으로 이미 죽은 경우우
|
||||||
|
if (monsterBase.currentHP <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// 몬스터 방어력 의도값 계산
|
||||||
float calcMonsterDefence = monsterBase.defencePower / (monsterBase.defencePower + monsterBase.defenceIntention);
|
float calcMonsterDefence = monsterBase.defencePower / (monsterBase.defencePower + monsterBase.defenceIntention);
|
||||||
float damage = damageCalculator.CalculateBaseDamage(playerData.attackPower, 0, calcMonsterDefence);
|
float damage = damageCalculator.CalculateBaseDamage(playerData.attackPower, 0, calcMonsterDefence);
|
||||||
|
|
||||||
// 치명타 적용 (캐릭터는 적용)
|
// 치명타 적용 (캐릭터는 적용)
|
||||||
damage = damageCalculator.ApplyCriticalDamage(damage);
|
damage = damageCalculator.ApplyCriticalDamage(damage, collision.transform.position);
|
||||||
|
|
||||||
collision.GetComponent<IDamage>().ApplyDamage(damage);
|
collision.GetComponent<IDamage>().ApplyDamage(damage);
|
||||||
}
|
}
|
||||||
|
|||||||
60
Gameton-06/Assets/Gameton/Scripts/Character/DamageEffect.cs
Normal file
60
Gameton-06/Assets/Gameton/Scripts/Character/DamageEffect.cs
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using TMPro;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace TON
|
||||||
|
{
|
||||||
|
public class DamageEffect : PoolAble
|
||||||
|
{
|
||||||
|
public TextMeshProUGUI textMesh;
|
||||||
|
public float floatSpeed = 1.0f;
|
||||||
|
public float duration = 1.0f;
|
||||||
|
|
||||||
|
private float timer = 0f;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
// Canvas의 Render Mode가 World Space일 경우, Main Camera를 Event Camera로 설정
|
||||||
|
Canvas canvas = gameObject.GetComponentInChildren<Canvas>();
|
||||||
|
if (canvas.renderMode == RenderMode.WorldSpace && canvas.worldCamera == null)
|
||||||
|
{
|
||||||
|
Debug.Log("test camera");
|
||||||
|
canvas.worldCamera = Camera.main; // Main Camera 할당
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetDamage(int damage, bool isCritical)
|
||||||
|
{
|
||||||
|
// 데미지 값에 따라 색상이나 크기 변경 가능
|
||||||
|
textMesh.text = string.Format("{0:#,###}", damage);
|
||||||
|
|
||||||
|
// 크리티컬 히트일 경우 색상 변경
|
||||||
|
if (isCritical)
|
||||||
|
textMesh.color = Color.yellow;
|
||||||
|
else
|
||||||
|
textMesh.color = Color.white;
|
||||||
|
|
||||||
|
// 타이머 리셋
|
||||||
|
timer = 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
// 위로 떠오르는 효과
|
||||||
|
transform.position += Vector3.up * floatSpeed * Time.deltaTime;
|
||||||
|
|
||||||
|
// 시간에 따른 투명도 조절
|
||||||
|
timer += Time.deltaTime;
|
||||||
|
float alpha = 1.0f - (timer / duration);
|
||||||
|
textMesh.color = new Color(textMesh.color.r, textMesh.color.g, textMesh.color.b, alpha);
|
||||||
|
|
||||||
|
// 지속 시간이 지나면 비활성화
|
||||||
|
if (timer >= duration)
|
||||||
|
{
|
||||||
|
gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8c86fdd904c9e8d41a93d1249c02a506
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -33,15 +33,28 @@ namespace TON
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 치명타 적용 (치명타 확률이 0보다 클 경우에만 적용)
|
/// 치명타 적용 (치명타 확률이 0보다 클 경우에만 적용)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float ApplyCriticalDamage(float damage)
|
public float ApplyCriticalDamage(float damage, Vector3 position)
|
||||||
{
|
{
|
||||||
|
bool critical = false;
|
||||||
if (Random.value < criticalChance) // Random.value는 0.0 ~ 1.0 사이의 랜덤 값
|
if (Random.value < criticalChance) // Random.value는 0.0 ~ 1.0 사이의 랜덤 값
|
||||||
{
|
{
|
||||||
damage *= criticalMultiplier;
|
damage *= criticalMultiplier;
|
||||||
|
critical = true;
|
||||||
Debug.Log("💥 치명타 발생! 💥" + damage);
|
Debug.Log("💥 치명타 발생! 💥" + damage);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Mathf.Round(damage); // 소수점 제거
|
float value = Mathf.Round(damage);
|
||||||
|
|
||||||
|
// 데미지 이펙트 출력
|
||||||
|
ShowDamage((int)value, critical, position);
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ShowDamage(int damage, bool isCritical, Vector3 position)
|
||||||
|
{
|
||||||
|
GameObject damageText = ObjectPoolManager.Instance.GetEffect("DamageEffect");
|
||||||
|
damageText.transform.position = new Vector3(position.x, position.y + 1f, position.z);
|
||||||
|
damageText.GetComponent<DamageEffect>().SetDamage(damage, isCritical);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace TON
|
|||||||
|
|
||||||
public GameObject _hpBarImage; // HP 바 이미지
|
public GameObject _hpBarImage; // HP 바 이미지
|
||||||
private float _maxHP;
|
private float _maxHP;
|
||||||
private float currentHP;
|
public float currentHP { get; private set; } // 몬스터 현재 체력
|
||||||
private float hpMaxWidth;
|
private float hpMaxWidth;
|
||||||
|
|
||||||
private MonsterData _monsterData;
|
private MonsterData _monsterData;
|
||||||
|
|||||||
@@ -42,15 +42,20 @@ namespace TON
|
|||||||
// TODO: 장비 공격력 반영 필요
|
// TODO: 장비 공격력 반영 필요
|
||||||
// float damage = damageCalculator.CalculateBaseDamage(playerData.attackPower, playerData.equipmentAttack, playerData.defensivePower);
|
// float damage = damageCalculator.CalculateBaseDamage(playerData.attackPower, playerData.equipmentAttack, playerData.defensivePower);
|
||||||
|
|
||||||
// 몬스터 방어력 의도값 계산
|
|
||||||
MonsterBase monsterBase = collision.GetComponent<MonsterBase>();
|
MonsterBase monsterBase = collision.GetComponent<MonsterBase>();
|
||||||
|
|
||||||
|
// 몬스터가 이전 피격으로 이미 죽은 경우우
|
||||||
|
if (monsterBase.currentHP <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// 몬스터 방어력 의도값 계산
|
||||||
float calcMonsterDefence = monsterBase.defencePower / (monsterBase.defencePower + monsterBase.defenceIntention);
|
float calcMonsterDefence = monsterBase.defencePower / (monsterBase.defencePower + monsterBase.defenceIntention);
|
||||||
float damage = damageCalculator.CalculateBaseDamage(playerData.attackPower, 0, calcMonsterDefence);
|
float damage = damageCalculator.CalculateBaseDamage(playerData.attackPower * this.damage, 0, calcMonsterDefence);
|
||||||
|
|
||||||
Debug.Log("Projectile" + damage);
|
Debug.Log("Projectile" + damage);
|
||||||
|
|
||||||
// 치명타 적용
|
// 치명타 적용
|
||||||
damage = damageCalculator.ApplyCriticalDamage(damage);
|
damage = damageCalculator.ApplyCriticalDamage(damage, collision.transform.position);
|
||||||
collision.GetComponent<IDamage>().ApplyDamage(damage);
|
collision.GetComponent<IDamage>().ApplyDamage(damage);
|
||||||
ReleaseObject();
|
ReleaseObject();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user