From d5297951cf04efc50093c31b9573188529c79c25 Mon Sep 17 00:00:00 2001 From: Samir Badi Date: Thu, 2 Nov 2023 10:09:02 -0400 Subject: [PATCH] Character can shoot porjectile now --- Assets/Datas/Characters/Character-Blue.asset | 1 + Assets/Datas/Characters/Character-Green.asset | 1 + Assets/Datas/Characters/Character-Red.asset | 1 + .../PlayerVisuals/CharacterVisual-Blue.prefab | 67 ++++++- .../CharacterVisual-Green.prefab | 67 ++++++- .../PlayerVisuals/CharacterVisual-Red.prefab | 67 ++++++- Assets/Prefabs/RegularProjectiles.meta | 8 + .../RegularProjectiles/Circle-RP.prefab | 167 ++++++++++++++++ .../RegularProjectiles/Circle-RP.prefab.meta | 7 + .../RegularProjectiles/Square-RP.prefab | 177 +++++++++++++++++ .../RegularProjectiles/Square-RP.prefab.meta | 7 + .../RegularProjectiles/Triangle-RP.prefab | 180 ++++++++++++++++++ .../Triangle-RP.prefab.meta | 7 + Assets/Scenes/SampleScene.unity | 9 +- Assets/Scripts/Characters/CharacterObject.cs | 6 +- Assets/Scripts/Characters/CharacterSO.cs | 2 + Assets/Scripts/Cores.meta | 8 + Assets/Scripts/Cores/RegularProjectile.cs | 28 +++ .../Scripts/Cores/RegularProjectile.cs.meta | 11 ++ Assets/Scripts/Players/PlayerMain.cs | 22 ++- Assets/Scripts/Players/PlayerMain_Attack.cs | 11 +- Assets/Scripts/Players/PlayerMain_Visual.cs | 24 +-- 22 files changed, 844 insertions(+), 34 deletions(-) create mode 100644 Assets/Prefabs/RegularProjectiles.meta create mode 100644 Assets/Prefabs/RegularProjectiles/Circle-RP.prefab create mode 100644 Assets/Prefabs/RegularProjectiles/Circle-RP.prefab.meta create mode 100644 Assets/Prefabs/RegularProjectiles/Square-RP.prefab create mode 100644 Assets/Prefabs/RegularProjectiles/Square-RP.prefab.meta create mode 100644 Assets/Prefabs/RegularProjectiles/Triangle-RP.prefab create mode 100644 Assets/Prefabs/RegularProjectiles/Triangle-RP.prefab.meta create mode 100644 Assets/Scripts/Cores.meta create mode 100644 Assets/Scripts/Cores/RegularProjectile.cs create mode 100644 Assets/Scripts/Cores/RegularProjectile.cs.meta diff --git a/Assets/Datas/Characters/Character-Blue.asset b/Assets/Datas/Characters/Character-Blue.asset index ad30040..a069726 100644 --- a/Assets/Datas/Characters/Character-Blue.asset +++ b/Assets/Datas/Characters/Character-Blue.asset @@ -13,3 +13,4 @@ MonoBehaviour: m_Name: Character-Blue m_EditorClassIdentifier: visual: {fileID: -4413060711985458707, guid: fee6a0905f76ca9429469e6fc24d9152, type: 3} + regularProjectilePrefab: {fileID: 5606404166462406291, guid: d0ade2ab60fd7554885b86bfb438aa05, type: 3} diff --git a/Assets/Datas/Characters/Character-Green.asset b/Assets/Datas/Characters/Character-Green.asset index e1f0df5..3e99748 100644 --- a/Assets/Datas/Characters/Character-Green.asset +++ b/Assets/Datas/Characters/Character-Green.asset @@ -13,3 +13,4 @@ MonoBehaviour: m_Name: Character-Green m_EditorClassIdentifier: visual: {fileID: 3720866698639095966, guid: a38b7af5e2dfcd14e8742dfa865ac642, type: 3} + regularProjectilePrefab: {fileID: 6591282292413975965, guid: c506f904fbe6e8448967526166195cce, type: 3} diff --git a/Assets/Datas/Characters/Character-Red.asset b/Assets/Datas/Characters/Character-Red.asset index 9d02e25..5973164 100644 --- a/Assets/Datas/Characters/Character-Red.asset +++ b/Assets/Datas/Characters/Character-Red.asset @@ -13,3 +13,4 @@ MonoBehaviour: m_Name: Character-Red m_EditorClassIdentifier: visual: {fileID: -4496310365104306180, guid: 0846afb1b6dd56049bc60c2f2398b00a, type: 3} + regularProjectilePrefab: {fileID: 1219787284255607918, guid: 1ec7c3e183303ca40b6b04f30e49d276, type: 3} diff --git a/Assets/Prefabs/PlayerVisuals/CharacterVisual-Blue.prefab b/Assets/Prefabs/PlayerVisuals/CharacterVisual-Blue.prefab index 71d2e7d..f8a4bc8 100644 --- a/Assets/Prefabs/PlayerVisuals/CharacterVisual-Blue.prefab +++ b/Assets/Prefabs/PlayerVisuals/CharacterVisual-Blue.prefab @@ -31,6 +31,8 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4036086214640701615} + - {fileID: 8793694557818063381} + - {fileID: 3050366982735027224} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &-4413060711985458707 @@ -45,7 +47,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4224d6107d5e7894693e80f4571e0d59, type: 3} m_Name: m_EditorClassIdentifier: - shootingPoint: {fileID: 0} + horizontalShootingPoint: {fileID: 8793694557818063381} + verticalShootingPoint: {fileID: 3050366982735027224} --- !u!1 &2663764682251594756 GameObject: m_ObjectHideFlags: 0 @@ -215,3 +218,65 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &7037229623299904324 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3050366982735027224} + m_Layer: 0 + m_Name: VerticalShootingPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3050366982735027224 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7037229623299904324} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: -0.003, y: 1.497, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 787892284532640699} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} +--- !u!1 &7463298282596956399 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8793694557818063381} + m_Layer: 0 + m_Name: HorizontalShootingPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8793694557818063381 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7463298282596956399} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.845, y: 0.912, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 787892284532640699} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Prefabs/PlayerVisuals/CharacterVisual-Green.prefab b/Assets/Prefabs/PlayerVisuals/CharacterVisual-Green.prefab index 88b3430..b842554 100644 --- a/Assets/Prefabs/PlayerVisuals/CharacterVisual-Green.prefab +++ b/Assets/Prefabs/PlayerVisuals/CharacterVisual-Green.prefab @@ -31,6 +31,8 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3576563661194587730} + - {fileID: 7853943446845806742} + - {fileID: 4152505961465364833} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &3720866698639095966 @@ -45,7 +47,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4224d6107d5e7894693e80f4571e0d59, type: 3} m_Name: m_EditorClassIdentifier: - shootingPoint: {fileID: 0} + horizontalShootingPoint: {fileID: 7853943446845806742} + verticalShootingPoint: {fileID: 4152505961465364833} --- !u!1 &5256027320013452675 GameObject: m_ObjectHideFlags: 0 @@ -131,6 +134,37 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &6497007267761885982 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7853943446845806742} + m_Layer: 0 + m_Name: HorizontalShootingPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7853943446845806742 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6497007267761885982} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.845, y: 0.477, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4837197990537739891} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &7110561435340823434 GameObject: m_ObjectHideFlags: 0 @@ -215,3 +249,34 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &8785705008738564328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4152505961465364833} + m_Layer: 0 + m_Name: VerticalShootingPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4152505961465364833 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8785705008738564328} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: -0.003, y: 1.497, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4837197990537739891} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} diff --git a/Assets/Prefabs/PlayerVisuals/CharacterVisual-Red.prefab b/Assets/Prefabs/PlayerVisuals/CharacterVisual-Red.prefab index a203981..042b201 100644 --- a/Assets/Prefabs/PlayerVisuals/CharacterVisual-Red.prefab +++ b/Assets/Prefabs/PlayerVisuals/CharacterVisual-Red.prefab @@ -1,5 +1,36 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &2985372611902022605 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5389837615321668340} + m_Layer: 0 + m_Name: HorizontalShootingPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5389837615321668340 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2985372611902022605} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.845, y: 1.343, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5794434337033297906} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &5187731018528474026 GameObject: m_ObjectHideFlags: 0 @@ -31,6 +62,8 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1647310808306953429} + - {fileID: 5389837615321668340} + - {fileID: 6310539930048001117} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &-4496310365104306180 @@ -45,7 +78,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4224d6107d5e7894693e80f4571e0d59, type: 3} m_Name: m_EditorClassIdentifier: - shootingPoint: {fileID: 0} + horizontalShootingPoint: {fileID: 5389837615321668340} + verticalShootingPoint: {fileID: 6310539930048001117} --- !u!1 &5507699080222957821 GameObject: m_ObjectHideFlags: 0 @@ -130,6 +164,37 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &8258451163462482886 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6310539930048001117} + m_Layer: 0 + m_Name: VerticalShootingPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6310539930048001117 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8258451163462482886} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: -0.003, y: 1.497, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5794434337033297906} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} --- !u!1 &9137876422307670354 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/RegularProjectiles.meta b/Assets/Prefabs/RegularProjectiles.meta new file mode 100644 index 0000000..4d61bdf --- /dev/null +++ b/Assets/Prefabs/RegularProjectiles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e23dce616254f8c408701d8aa0669632 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/RegularProjectiles/Circle-RP.prefab b/Assets/Prefabs/RegularProjectiles/Circle-RP.prefab new file mode 100644 index 0000000..39e40e3 --- /dev/null +++ b/Assets/Prefabs/RegularProjectiles/Circle-RP.prefab @@ -0,0 +1,167 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &597591406047118283 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2534199754902221427} + - component: {fileID: 4926445913320951471} + m_Layer: 0 + m_Name: Circle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2534199754902221427 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597591406047118283} + 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: 1555364246203066298} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &4926445913320951471 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597591406047118283} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 0, g: 1, b: 0.9452326, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &8603746644562697894 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1555364246203066298} + - component: {fileID: 5606404166462406291} + - component: {fileID: 1364856365888286577} + m_Layer: 0 + m_Name: Circle-RP + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1555364246203066298 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8603746644562697894} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2534199754902221427} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5606404166462406291 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8603746644562697894} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6248fad7f71a61746a1495a8766cb4a1, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!58 &1364856365888286577 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8603746644562697894} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + serializedVersion: 2 + m_Radius: 0.5 diff --git a/Assets/Prefabs/RegularProjectiles/Circle-RP.prefab.meta b/Assets/Prefabs/RegularProjectiles/Circle-RP.prefab.meta new file mode 100644 index 0000000..a4ae98e --- /dev/null +++ b/Assets/Prefabs/RegularProjectiles/Circle-RP.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d0ade2ab60fd7554885b86bfb438aa05 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/RegularProjectiles/Square-RP.prefab b/Assets/Prefabs/RegularProjectiles/Square-RP.prefab new file mode 100644 index 0000000..f8ce3e0 --- /dev/null +++ b/Assets/Prefabs/RegularProjectiles/Square-RP.prefab @@ -0,0 +1,177 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2873158214941298327 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1415657121511947187} + - component: {fileID: 1219787284255607918} + - component: {fileID: 4278561378677756187} + m_Layer: 0 + m_Name: Square-RP + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1415657121511947187 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2873158214941298327} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3876144162908948735} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1219787284255607918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2873158214941298327} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6248fad7f71a61746a1495a8766cb4a1, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!61 &4278561378677756187 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2873158214941298327} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 +--- !u!1 &5308200993837681289 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3876144162908948735} + - component: {fileID: 5041279135132562652} + m_Layer: 0 + m_Name: Visual + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3876144162908948735 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5308200993837681289} + 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: 1415657121511947187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &5041279135132562652 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5308200993837681289} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3} + m_Color: {r: 1, g: 0.6227779, b: 0, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 diff --git a/Assets/Prefabs/RegularProjectiles/Square-RP.prefab.meta b/Assets/Prefabs/RegularProjectiles/Square-RP.prefab.meta new file mode 100644 index 0000000..16e67b8 --- /dev/null +++ b/Assets/Prefabs/RegularProjectiles/Square-RP.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1ec7c3e183303ca40b6b04f30e49d276 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/RegularProjectiles/Triangle-RP.prefab b/Assets/Prefabs/RegularProjectiles/Triangle-RP.prefab new file mode 100644 index 0000000..f4655ac --- /dev/null +++ b/Assets/Prefabs/RegularProjectiles/Triangle-RP.prefab @@ -0,0 +1,180 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3325356939141929016 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5001935234956304478} + - component: {fileID: 6591282292413975965} + - component: {fileID: 3735751291904609908} + m_Layer: 0 + m_Name: Triangle-RP + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5001935234956304478 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3325356939141929016} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6570784811530364164} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6591282292413975965 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3325356939141929016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6248fad7f71a61746a1495a8766cb4a1, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!60 &3735751291904609908 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3325356939141929016} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 0.6, y: 0} + - {x: -0.3, y: 0.525} + - {x: -0.3, y: -0.525} + m_UseDelaunayMesh: 0 +--- !u!1 &5713042779864278770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6570784811530364164} + - component: {fileID: 8357649188641906963} + m_Layer: 0 + m_Name: Visual + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6570784811530364164 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5713042779864278770} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5001935234956304478} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} +--- !u!212 &8357649188641906963 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5713042779864278770} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 7482667652216324306, guid: 75f5f34dc1b5347e0b8351032682f224, type: 3} + m_Color: {r: 0.29910004, g: 1, b: 0, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 diff --git a/Assets/Prefabs/RegularProjectiles/Triangle-RP.prefab.meta b/Assets/Prefabs/RegularProjectiles/Triangle-RP.prefab.meta new file mode 100644 index 0000000..b6739fc --- /dev/null +++ b/Assets/Prefabs/RegularProjectiles/Triangle-RP.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c506f904fbe6e8448967526166195cce +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 428b2b6..3654af3 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -533,8 +533,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d673274af6c36104abfc3cb26d0d9d80, type: 3} m_Name: m_EditorClassIdentifier: + characters: + - {fileID: 11400000, guid: 64632c3f35ba931498cb6403c3064410, type: 2} + - {fileID: 11400000, guid: ed8b37ae4c6cc2e4ca39d8fdc571beca, type: 2} + - {fileID: 11400000, guid: 669eb3734bbebe24f8e7188e39e51011, type: 2} character: {fileID: 3771630860942019281} - shootingPoint: {fileID: 0} speed: 8 jumpVelocity: 40 groundLayer: @@ -542,10 +545,6 @@ MonoBehaviour: m_Bits: 64 groundDistance: 0.2 drawDebugRaycasts: 1 - characters: - - {fileID: 11400000, guid: 64632c3f35ba931498cb6403c3064410, type: 2} - - {fileID: 11400000, guid: ed8b37ae4c6cc2e4ca39d8fdc571beca, type: 2} - - {fileID: 11400000, guid: 669eb3734bbebe24f8e7188e39e51011, type: 2} --- !u!114 &1094939062 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Characters/CharacterObject.cs b/Assets/Scripts/Characters/CharacterObject.cs index 7708e33..613019e 100644 --- a/Assets/Scripts/Characters/CharacterObject.cs +++ b/Assets/Scripts/Characters/CharacterObject.cs @@ -4,7 +4,9 @@ using UnityEngine; public class CharacterObject : MonoBehaviour { - [SerializeField] private Transform shootingPoint; + [SerializeField] private Transform horizontalShootingPoint; + [SerializeField] private Transform verticalShootingPoint; - public Transform GetShootingPoint() => shootingPoint; + public Transform GetHorizontalShootingPoint() => horizontalShootingPoint; + public Transform GetVerticalShootingPoint() => verticalShootingPoint; } diff --git a/Assets/Scripts/Characters/CharacterSO.cs b/Assets/Scripts/Characters/CharacterSO.cs index 1545f7f..c818b39 100644 --- a/Assets/Scripts/Characters/CharacterSO.cs +++ b/Assets/Scripts/Characters/CharacterSO.cs @@ -6,6 +6,8 @@ using UnityEngine; public class CharacterSO : ScriptableObject { [SerializeField] private CharacterObject visual; + [SerializeField] private RegularProjectile regularProjectilePrefab; public CharacterObject Visual => visual; + public RegularProjectile GetRegularProjectile() => regularProjectilePrefab; } \ No newline at end of file diff --git a/Assets/Scripts/Cores.meta b/Assets/Scripts/Cores.meta new file mode 100644 index 0000000..f206098 --- /dev/null +++ b/Assets/Scripts/Cores.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f3ed91e683d092c4ab3f067189e9f246 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Cores/RegularProjectile.cs b/Assets/Scripts/Cores/RegularProjectile.cs new file mode 100644 index 0000000..57ba357 --- /dev/null +++ b/Assets/Scripts/Cores/RegularProjectile.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class RegularProjectile : MonoBehaviour +{ + private const float LIVE_TIME = 15f; + private float _speed; + + private void Start() + { + Destroy(gameObject, LIVE_TIME); + } + + private void Update() + { + transform.position += transform.right * (_speed * Time.deltaTime); + } + + public void SetSpeed(float speed) => _speed = speed; + + private void OnTriggerEnter2D(Collider2D other) + { + if(other.gameObject != PlayerMain.Instance.gameObject) + Destroy(gameObject); + } +} diff --git a/Assets/Scripts/Cores/RegularProjectile.cs.meta b/Assets/Scripts/Cores/RegularProjectile.cs.meta new file mode 100644 index 0000000..4b55665 --- /dev/null +++ b/Assets/Scripts/Cores/RegularProjectile.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6248fad7f71a61746a1495a8766cb4a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Players/PlayerMain.cs b/Assets/Scripts/Players/PlayerMain.cs index 4f7abd6..9e391c0 100644 --- a/Assets/Scripts/Players/PlayerMain.cs +++ b/Assets/Scripts/Players/PlayerMain.cs @@ -8,12 +8,14 @@ public partial class PlayerMain : MonoBehaviour { public static PlayerMain Instance {get; private set;} + [SerializeField] private List characters; [SerializeField] private CharacterObject character; - + private PlayerInputHandler _input; private Rigidbody2D _rigidbody2D; private BoxCollider2D _collider2D; - + private CharacterSO _characterSO; + private int _characterIndex; private void Awake() { @@ -36,8 +38,8 @@ public partial class PlayerMain : MonoBehaviour _input.OnJumpTrigger += Input_OnJumpTrigger; _input.OnChangeCharacterTrigger += Input_OnChangeCharacterTrigger; _input.OnRegularAttackTrigger += Input_OnRegularAttackTrigger; - - UpdateCharacterVisual(); + + UpdateCharacter(); _footOffset = _collider2D.size.x / 2f; } @@ -52,4 +54,16 @@ public partial class PlayerMain : MonoBehaviour MovementHandler(); FacingDir(); } + + private void Input_OnChangeCharacterTrigger(object sender, EventArgs e) + { + _characterIndex = (_characterIndex + 1) % characters.Count; + UpdateCharacter(); + } + + private void UpdateCharacter() + { + _characterSO = characters[_characterIndex]; + UpdateCharacterVisual(); + } } diff --git a/Assets/Scripts/Players/PlayerMain_Attack.cs b/Assets/Scripts/Players/PlayerMain_Attack.cs index 66ed33e..d4d5259 100644 --- a/Assets/Scripts/Players/PlayerMain_Attack.cs +++ b/Assets/Scripts/Players/PlayerMain_Attack.cs @@ -5,11 +5,16 @@ using UnityEngine; public partial class PlayerMain { - [Header("Attack")] - [SerializeField] private Transform shootingPoint; - private void Input_OnRegularAttackTrigger(object sender, EventArgs e) { + + RegularProjectile projectile = Instantiate(_characterSO.GetRegularProjectile(), + character.GetHorizontalShootingPoint().position, + Quaternion.identity); + + projectile.transform.right = _facingDir > 0 ? transform.right : -transform.right; + + projectile.SetSpeed(15f); } } \ No newline at end of file diff --git a/Assets/Scripts/Players/PlayerMain_Visual.cs b/Assets/Scripts/Players/PlayerMain_Visual.cs index 9987360..8f46dc1 100644 --- a/Assets/Scripts/Players/PlayerMain_Visual.cs +++ b/Assets/Scripts/Players/PlayerMain_Visual.cs @@ -6,20 +6,10 @@ using UnityEngine.Serialization; public partial class PlayerMain { - [Header("Visual")] - [SerializeField] private List characters; - private const float THRESHOLD = 0.01f; - private Transform _visualTransform; + private Transform _characterVisualTransform; private float _facingDir = 1f; - private int _characterIndex; - - private void Input_OnChangeCharacterTrigger(object sender, EventArgs e) - { - _characterIndex = (_characterIndex + 1) % characters.Count; - UpdateCharacterVisual(); - } private void UpdateCharacterVisual() { @@ -27,11 +17,11 @@ public partial class PlayerMain Destroy(character.gameObject); character = Instantiate(characters[_characterIndex].Visual, transform); - _visualTransform = character.transform; - _visualTransform.localPosition = Vector3.zero; - Vector3 scale = _visualTransform.localScale; + _characterVisualTransform = character.transform; + _characterVisualTransform.localPosition = Vector3.zero; + Vector3 scale = _characterVisualTransform.localScale; scale.x *= _facingDir; - _visualTransform.localScale = scale; + _characterVisualTransform.localScale = scale; } private void FacingDir() @@ -39,9 +29,9 @@ public partial class PlayerMain if (_facingDir * _input.MoveAxis > -THRESHOLD) return; - Vector3 scale = _visualTransform.localScale; + Vector3 scale = _characterVisualTransform.localScale; _facingDir *= -1f; scale.x *= -1f; - _visualTransform.localScale = scale; + _characterVisualTransform.localScale = scale; } } \ No newline at end of file