From 73b9200f747cd4c18920994e1b0b7898885e0805 Mon Sep 17 00:00:00 2001 From: Jeremy Smitherman Date: Sun, 24 Aug 2025 22:16:25 -0500 Subject: [PATCH] Added punch animations --- Assets/Scripts/Managers/PlayerJoiner.cs | 4 +- Assets/Scripts/Pawn.cs | 19 ++- Assets/Scripts/Player/InputRouter.cs | 14 +- ...tateMachine.meta => PawnStateMachine.meta} | 0 .../Scripts/State/PawnStateMachine/Attack.cs | 21 +++ .../State/PawnStateMachine/Attack.cs.meta | 3 + Assets/Scripts/State/PawnStateMachine/Idle.cs | 30 ++++ .../Idle.cs.meta | 0 .../PawnStateMachine.cs} | 5 +- .../PawnStateMachine.cs.meta} | 0 .../Scripts/State/PlayerStateMachine/Idle.cs | 13 -- Assets/Sprites/BLOODJOE/Human.controller | 62 ++++++- Assets/Sprites/BLOODJOE/Punch.anim | 75 +++++++++ Assets/Sprites/BLOODJOE/Punch.anim.meta | 8 + Assets/Sprites/BLOODJOE/StrongPunch.anim | 84 ++++++++++ Assets/Sprites/BLOODJOE/StrongPunch.anim.meta | 8 + Assets/Sprites/BLOODJOE/Vigilante_Punch_1.png | Bin 0 -> 365 bytes .../BLOODJOE/Vigilante_Punch_1.png.meta | 156 ++++++++++++++++++ Assets/Sprites/BLOODJOE/Vigilante_Punch_2.png | Bin 0 -> 363 bytes .../BLOODJOE/Vigilante_Punch_2.png.meta | 156 ++++++++++++++++++ 20 files changed, 629 insertions(+), 29 deletions(-) rename Assets/Scripts/State/{PlayerStateMachine.meta => PawnStateMachine.meta} (100%) create mode 100644 Assets/Scripts/State/PawnStateMachine/Attack.cs create mode 100644 Assets/Scripts/State/PawnStateMachine/Attack.cs.meta create mode 100644 Assets/Scripts/State/PawnStateMachine/Idle.cs rename Assets/Scripts/State/{PlayerStateMachine => PawnStateMachine}/Idle.cs.meta (100%) rename Assets/Scripts/State/{PlayerStateMachine/PlayerStateMachine.cs => PawnStateMachine/PawnStateMachine.cs} (89%) rename Assets/Scripts/State/{PlayerStateMachine/PlayerStateMachine.cs.meta => PawnStateMachine/PawnStateMachine.cs.meta} (100%) delete mode 100644 Assets/Scripts/State/PlayerStateMachine/Idle.cs create mode 100644 Assets/Sprites/BLOODJOE/Punch.anim create mode 100644 Assets/Sprites/BLOODJOE/Punch.anim.meta create mode 100644 Assets/Sprites/BLOODJOE/StrongPunch.anim create mode 100644 Assets/Sprites/BLOODJOE/StrongPunch.anim.meta create mode 100644 Assets/Sprites/BLOODJOE/Vigilante_Punch_1.png create mode 100644 Assets/Sprites/BLOODJOE/Vigilante_Punch_1.png.meta create mode 100644 Assets/Sprites/BLOODJOE/Vigilante_Punch_2.png create mode 100644 Assets/Sprites/BLOODJOE/Vigilante_Punch_2.png.meta diff --git a/Assets/Scripts/Managers/PlayerJoiner.cs b/Assets/Scripts/Managers/PlayerJoiner.cs index 720a926..320e87e 100644 --- a/Assets/Scripts/Managers/PlayerJoiner.cs +++ b/Assets/Scripts/Managers/PlayerJoiner.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using State; using State.GameStateMachine; -using State.PlayerStateMachine; +using State.PawnStateMachine; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.UI; @@ -38,7 +38,7 @@ namespace Managers // TODO: Move all of this to a player spawner GameStateMachine.Instance.ChangeState(new PlayLevel()); var character = Instantiate(characterPrefabs[_players.Count - 1]); - var playerStateMachine = playerInput.gameObject.GetComponent(); + var playerStateMachine = playerInput.gameObject.GetComponent(); playerStateMachine.controlledPawn = character.GetComponent(); playerInput.actions.Enable(); } diff --git a/Assets/Scripts/Pawn.cs b/Assets/Scripts/Pawn.cs index e7a754e..2cb6c20 100644 --- a/Assets/Scripts/Pawn.cs +++ b/Assets/Scripts/Pawn.cs @@ -4,6 +4,8 @@ using UnityEngine; public class Pawn : MonoBehaviour { + public Animator Animator => animator; + [SerializeField] private UnitData unitData; [SerializeField] private SpriteRenderer spriteRenderer; [SerializeField] private Animator animator; @@ -11,14 +13,27 @@ public class Pawn : MonoBehaviour private Vector2 _moveInput; + public virtual void HandleIdle() + { + animator.Play("Idle"); + } + public virtual void HandleMove(Vector2 input) { _moveInput = input; animator.Play(input.magnitude > 0 ? "Walk" : "Idle"); - if(_moveInput.magnitude > 0) - spriteRenderer.flipX = _moveInput.x < 0; + if (_moveInput.magnitude > 0) + transform.localScale = new Vector3(_moveInput.x > 0 ? 1 : -1, 1, 1); } + public virtual float HandleAttack(string attackName) + { + animator.Play(attackName); + animator.Update(0f); + var state = animator.GetCurrentAnimatorStateInfo(0); + return state.length * state.speed; + } + private void FixedUpdate() { transform.Translate(_moveInput * unitData.MoveSpeed); diff --git a/Assets/Scripts/Player/InputRouter.cs b/Assets/Scripts/Player/InputRouter.cs index 317e7aa..d1df23f 100644 --- a/Assets/Scripts/Player/InputRouter.cs +++ b/Assets/Scripts/Player/InputRouter.cs @@ -1,6 +1,6 @@ using System; using State; -using State.PlayerStateMachine; +using State.PawnStateMachine; using UnityEngine; using UnityEngine.InputSystem; @@ -10,13 +10,13 @@ namespace Player public class InputRouter : MonoBehaviour { private PlayerInput _playerInput; - private PlayerStateMachine _playerStateMachine; + private PawnStateMachine pawnStateMachine; private InputActionMap _map; private void Awake() { _playerInput = GetComponent(); - _playerStateMachine = GetComponent(); + pawnStateMachine = GetComponent(); _map = _playerInput.actions.FindActionMap("Player", throwIfNotFound: true); } @@ -40,7 +40,7 @@ namespace Player private void OnJumpPerformed(InputAction.CallbackContext obj) { - _playerStateMachine.Issue(GameState.Command.Jump); + pawnStateMachine.Issue(GameState.Command.Jump); } private void OnPausePerformed(InputAction.CallbackContext obj) @@ -50,17 +50,17 @@ namespace Player private void OnAttackPerformed(InputAction.CallbackContext obj) { - _playerStateMachine.Issue(GameState.Command.Attack); + pawnStateMachine.Issue(GameState.Command.Attack); } private void OnMoveCanceled(InputAction.CallbackContext obj) { - _playerStateMachine.SetMove(Vector2.zero); + pawnStateMachine.SetMove(Vector2.zero); } private void OnMovePerformed(InputAction.CallbackContext obj) { - _playerStateMachine.SetMove(obj.ReadValue()); + pawnStateMachine.SetMove(obj.ReadValue()); } } } \ No newline at end of file diff --git a/Assets/Scripts/State/PlayerStateMachine.meta b/Assets/Scripts/State/PawnStateMachine.meta similarity index 100% rename from Assets/Scripts/State/PlayerStateMachine.meta rename to Assets/Scripts/State/PawnStateMachine.meta diff --git a/Assets/Scripts/State/PawnStateMachine/Attack.cs b/Assets/Scripts/State/PawnStateMachine/Attack.cs new file mode 100644 index 0000000..bb6bf03 --- /dev/null +++ b/Assets/Scripts/State/PawnStateMachine/Attack.cs @@ -0,0 +1,21 @@ +using System.Collections; +using UnityEngine; + +namespace State.PawnStateMachine +{ + public class Attack : GameState + { + public override void OnEnter(StateMachine machine) + { + base.OnEnter(machine); + StateMachine.StartCoroutine(PlayAttackAnimation()); + } + + private IEnumerator PlayAttackAnimation() + { + var animationLength = ((PawnStateMachine)StateMachine).controlledPawn.HandleAttack("Attack1"); + yield return new WaitForSeconds(animationLength); + StateMachine.ChangeState(new Idle()); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/State/PawnStateMachine/Attack.cs.meta b/Assets/Scripts/State/PawnStateMachine/Attack.cs.meta new file mode 100644 index 0000000..3d10bb1 --- /dev/null +++ b/Assets/Scripts/State/PawnStateMachine/Attack.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 57e3422c716a4342a5d7f00ab4da59d0 +timeCreated: 1756077009 \ No newline at end of file diff --git a/Assets/Scripts/State/PawnStateMachine/Idle.cs b/Assets/Scripts/State/PawnStateMachine/Idle.cs new file mode 100644 index 0000000..2c771b3 --- /dev/null +++ b/Assets/Scripts/State/PawnStateMachine/Idle.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +namespace State.PawnStateMachine +{ + public class Idle : GameState + { + public override void OnEnter(StateMachine machine) + { + base.OnEnter(machine); + ((PawnStateMachine)StateMachine).controlledPawn.HandleIdle(); + } + + public override void Handle(Vector2 input) + { + base.Handle(input); + ((PawnStateMachine)StateMachine).controlledPawn.HandleMove(input); + } + + public override void Handle(Command command) + { + base.Handle(command); + var newState = command switch + { + Command.Attack => new Attack(), + }; + + StateMachine.ChangeState(newState); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/State/PlayerStateMachine/Idle.cs.meta b/Assets/Scripts/State/PawnStateMachine/Idle.cs.meta similarity index 100% rename from Assets/Scripts/State/PlayerStateMachine/Idle.cs.meta rename to Assets/Scripts/State/PawnStateMachine/Idle.cs.meta diff --git a/Assets/Scripts/State/PlayerStateMachine/PlayerStateMachine.cs b/Assets/Scripts/State/PawnStateMachine/PawnStateMachine.cs similarity index 89% rename from Assets/Scripts/State/PlayerStateMachine/PlayerStateMachine.cs rename to Assets/Scripts/State/PawnStateMachine/PawnStateMachine.cs index 82025ea..5f6a36d 100644 --- a/Assets/Scripts/State/PlayerStateMachine/PlayerStateMachine.cs +++ b/Assets/Scripts/State/PawnStateMachine/PawnStateMachine.cs @@ -1,9 +1,8 @@ -using System; using UnityEngine; -namespace State.PlayerStateMachine +namespace State.PawnStateMachine { - public class PlayerStateMachine : StateMachine + public class PawnStateMachine : StateMachine { public Pawn controlledPawn; private bool _forwardInput; diff --git a/Assets/Scripts/State/PlayerStateMachine/PlayerStateMachine.cs.meta b/Assets/Scripts/State/PawnStateMachine/PawnStateMachine.cs.meta similarity index 100% rename from Assets/Scripts/State/PlayerStateMachine/PlayerStateMachine.cs.meta rename to Assets/Scripts/State/PawnStateMachine/PawnStateMachine.cs.meta diff --git a/Assets/Scripts/State/PlayerStateMachine/Idle.cs b/Assets/Scripts/State/PlayerStateMachine/Idle.cs deleted file mode 100644 index 385dc08..0000000 --- a/Assets/Scripts/State/PlayerStateMachine/Idle.cs +++ /dev/null @@ -1,13 +0,0 @@ -using UnityEngine; - -namespace State.PlayerStateMachine -{ - public class Idle : GameState - { - public override void Handle(Vector2 input) - { - base.Handle(input); - ((PlayerStateMachine)StateMachine).controlledPawn.HandleMove(input); - } - } -} \ No newline at end of file diff --git a/Assets/Sprites/BLOODJOE/Human.controller b/Assets/Sprites/BLOODJOE/Human.controller index df3f14f..d25b2aa 100644 --- a/Assets/Sprites/BLOODJOE/Human.controller +++ b/Assets/Sprites/BLOODJOE/Human.controller @@ -52,6 +52,58 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1102 &-3276801887947903977 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Attack2 + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + 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: 6f04c5a8b205983418d17667d26f6e3d, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &-2307217987210530717 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Attack1 + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + 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: a2322100430e3f1468dd88217df6f236, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!91 &9100000 AnimatorController: m_ObjectHideFlags: 0 @@ -91,10 +143,16 @@ AnimatorStateMachine: m_ChildStates: - serializedVersion: 1 m_State: {fileID: -6585584643281648321} - m_Position: {x: 310, y: 120, z: 0} + m_Position: {x: 310, y: 210, z: 0} - serializedVersion: 1 m_State: {fileID: -7041491042131476571} - m_Position: {x: 320, y: 10, z: 0} + m_Position: {x: 310, y: 0, z: 0} + - serializedVersion: 1 + m_State: {fileID: -2307217987210530717} + m_Position: {x: 310, y: 70, z: 0} + - serializedVersion: 1 + m_State: {fileID: -3276801887947903977} + m_Position: {x: 310, y: 140, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] diff --git a/Assets/Sprites/BLOODJOE/Punch.anim b/Assets/Sprites/BLOODJOE/Punch.anim new file mode 100644 index 0000000..5774881 --- /dev/null +++ b/Assets/Sprites/BLOODJOE/Punch.anim @@ -0,0 +1,75 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Punch + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - serializedVersion: 2 + curve: + - time: 0 + value: {fileID: 7914097290067846508, guid: e662d235bbe71a94d9714a63229696ad, type: 3} + - time: 0.06666667 + value: {fileID: 302867376508223093, guid: 2e963a8df8218d247b9a96461b2cea08, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: 7914097290067846508, guid: e662d235bbe71a94d9714a63229696ad, type: 3} + - {fileID: 302867376508223093, guid: 2e963a8df8218d247b9a96461b2cea08, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.083333336 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Sprites/BLOODJOE/Punch.anim.meta b/Assets/Sprites/BLOODJOE/Punch.anim.meta new file mode 100644 index 0000000..ae3e256 --- /dev/null +++ b/Assets/Sprites/BLOODJOE/Punch.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a2322100430e3f1468dd88217df6f236 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/BLOODJOE/StrongPunch.anim b/Assets/Sprites/BLOODJOE/StrongPunch.anim new file mode 100644 index 0000000..0f256b6 --- /dev/null +++ b/Assets/Sprites/BLOODJOE/StrongPunch.anim @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StrongPunch + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - serializedVersion: 2 + curve: + - time: 0 + value: {fileID: 302867376508223093, guid: 2e963a8df8218d247b9a96461b2cea08, type: 3} + - time: 0.11666667 + value: {fileID: -8702860448738653697, guid: 2e963a8df8218d247b9a96461b2cea08, type: 3} + - time: 0.25 + value: {fileID: -2640458925702542060, guid: 8f6df09030bca8046b2495a192550881, type: 3} + - time: 0.41666666 + value: {fileID: -8702860448738653697, guid: 2e963a8df8218d247b9a96461b2cea08, type: 3} + - time: 0.55 + value: {fileID: 302867376508223093, guid: 2e963a8df8218d247b9a96461b2cea08, type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + flags: 2 + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: + - {fileID: 302867376508223093, guid: 2e963a8df8218d247b9a96461b2cea08, type: 3} + - {fileID: -8702860448738653697, guid: 2e963a8df8218d247b9a96461b2cea08, type: 3} + - {fileID: -2640458925702542060, guid: 8f6df09030bca8046b2495a192550881, type: 3} + - {fileID: -8702860448738653697, guid: 2e963a8df8218d247b9a96461b2cea08, type: 3} + - {fileID: 302867376508223093, guid: 2e963a8df8218d247b9a96461b2cea08, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.56666666 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Sprites/BLOODJOE/StrongPunch.anim.meta b/Assets/Sprites/BLOODJOE/StrongPunch.anim.meta new file mode 100644 index 0000000..fde86b5 --- /dev/null +++ b/Assets/Sprites/BLOODJOE/StrongPunch.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f04c5a8b205983418d17667d26f6e3d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/BLOODJOE/Vigilante_Punch_1.png b/Assets/Sprites/BLOODJOE/Vigilante_Punch_1.png new file mode 100644 index 0000000000000000000000000000000000000000..665bec13e9bd3701663d5c5da114fc9859cf0376 GIT binary patch literal 365 zcmV-z0h0cSP)TyvFlw(0U+mTz#Pd53B}(`X93jaa|4{> z!f~Fv%bUr%qqd6`)*Z6OQuKBWv3k!KfF72Ew$uuk3nH0x9%JiAbSoCd=DN&hm{IKRN7B`|4lC3_T!obfJ+up9_QUx0N|8#Zvj-rVdyfX~$%dn!t+t1Q>XDdFaQ^!z1+p{xWcfccj8200000 LNkvXXu0mjfE()N% literal 0 HcmV?d00001 diff --git a/Assets/Sprites/BLOODJOE/Vigilante_Punch_1.png.meta b/Assets/Sprites/BLOODJOE/Vigilante_Punch_1.png.meta new file mode 100644 index 0000000..9a20cc4 --- /dev/null +++ b/Assets/Sprites/BLOODJOE/Vigilante_Punch_1.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: e662d235bbe71a94d9714a63229696ad +TextureImporter: + internalIDToNameTable: + - first: + 213: 7914097290067846508 + second: Vigilante_Punch_1_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 16 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Vigilante_Punch_1_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 21 + height: 32 + alignment: 9 + pivot: {x: 0.41358867, y: 0.49556974} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: c65206cfd8584dd60800000000000000 + internalID: 7914097290067846508 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 2b61071434b92084abdac60207ff1aec + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + Vigilante_Punch_1_0: 7914097290067846508 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/BLOODJOE/Vigilante_Punch_2.png b/Assets/Sprites/BLOODJOE/Vigilante_Punch_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d39b7f35ed5c858088a70124990b2bae1e3ba2b4 GIT binary patch literal 363 zcmV-x0hIoUP)Xwl0FJ?3<{Q;_0Xi7lv}!UB`7^M&02J19QvulAhKh~J zD~{tmIY3uJ+7Sg4YddBfRRpEi4artf2>~AqS01nBfMCRF#fD0wmhn0utR6O3q3G#5 zBLIJ;G`a4|e`9G50XglSc^AO8ibK~n9|ZFZpearatr#)@kQti1iwy~PQ{XOW&6}sT z>-$~of5|rh?yNjj+J!KtzjTo3T#~+0G;U`ue%=A?L6#1h_W(f`p*@j;iEaXX7bhh9 z!HOHKrY&5lwQsEgm`Oftj(k4&BBp