Added punch animations

This commit is contained in:
Jeremy Smitherman 2025-08-24 22:16:25 -05:00
parent 01b141d78a
commit 73b9200f74
20 changed files with 629 additions and 29 deletions

View File

@ -1,7 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using State; using State;
using State.GameStateMachine; using State.GameStateMachine;
using State.PlayerStateMachine; using State.PawnStateMachine;
using UnityEngine; using UnityEngine;
using UnityEngine.InputSystem; using UnityEngine.InputSystem;
using UnityEngine.InputSystem.UI; using UnityEngine.InputSystem.UI;
@ -38,7 +38,7 @@ namespace Managers
// TODO: Move all of this to a player spawner // TODO: Move all of this to a player spawner
GameStateMachine.Instance.ChangeState(new PlayLevel()); GameStateMachine.Instance.ChangeState(new PlayLevel());
var character = Instantiate(characterPrefabs[_players.Count - 1]); var character = Instantiate(characterPrefabs[_players.Count - 1]);
var playerStateMachine = playerInput.gameObject.GetComponent<PlayerStateMachine>(); var playerStateMachine = playerInput.gameObject.GetComponent<PawnStateMachine>();
playerStateMachine.controlledPawn = character.GetComponent<Pawn>(); playerStateMachine.controlledPawn = character.GetComponent<Pawn>();
playerInput.actions.Enable(); playerInput.actions.Enable();
} }

View File

@ -4,6 +4,8 @@ using UnityEngine;
public class Pawn : MonoBehaviour public class Pawn : MonoBehaviour
{ {
public Animator Animator => animator;
[SerializeField] private UnitData unitData; [SerializeField] private UnitData unitData;
[SerializeField] private SpriteRenderer spriteRenderer; [SerializeField] private SpriteRenderer spriteRenderer;
[SerializeField] private Animator animator; [SerializeField] private Animator animator;
@ -11,14 +13,27 @@ public class Pawn : MonoBehaviour
private Vector2 _moveInput; private Vector2 _moveInput;
public virtual void HandleIdle()
{
animator.Play("Idle");
}
public virtual void HandleMove(Vector2 input) public virtual void HandleMove(Vector2 input)
{ {
_moveInput = input; _moveInput = input;
animator.Play(input.magnitude > 0 ? "Walk" : "Idle"); animator.Play(input.magnitude > 0 ? "Walk" : "Idle");
if(_moveInput.magnitude > 0) if (_moveInput.magnitude > 0)
spriteRenderer.flipX = _moveInput.x < 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() private void FixedUpdate()
{ {
transform.Translate(_moveInput * unitData.MoveSpeed); transform.Translate(_moveInput * unitData.MoveSpeed);

View File

@ -1,6 +1,6 @@
using System; using System;
using State; using State;
using State.PlayerStateMachine; using State.PawnStateMachine;
using UnityEngine; using UnityEngine;
using UnityEngine.InputSystem; using UnityEngine.InputSystem;
@ -10,13 +10,13 @@ namespace Player
public class InputRouter : MonoBehaviour public class InputRouter : MonoBehaviour
{ {
private PlayerInput _playerInput; private PlayerInput _playerInput;
private PlayerStateMachine _playerStateMachine; private PawnStateMachine pawnStateMachine;
private InputActionMap _map; private InputActionMap _map;
private void Awake() private void Awake()
{ {
_playerInput = GetComponent<PlayerInput>(); _playerInput = GetComponent<PlayerInput>();
_playerStateMachine = GetComponent<PlayerStateMachine>(); pawnStateMachine = GetComponent<PawnStateMachine>();
_map = _playerInput.actions.FindActionMap("Player", throwIfNotFound: true); _map = _playerInput.actions.FindActionMap("Player", throwIfNotFound: true);
} }
@ -40,7 +40,7 @@ namespace Player
private void OnJumpPerformed(InputAction.CallbackContext obj) private void OnJumpPerformed(InputAction.CallbackContext obj)
{ {
_playerStateMachine.Issue(GameState.Command.Jump); pawnStateMachine.Issue(GameState.Command.Jump);
} }
private void OnPausePerformed(InputAction.CallbackContext obj) private void OnPausePerformed(InputAction.CallbackContext obj)
@ -50,17 +50,17 @@ namespace Player
private void OnAttackPerformed(InputAction.CallbackContext obj) private void OnAttackPerformed(InputAction.CallbackContext obj)
{ {
_playerStateMachine.Issue(GameState.Command.Attack); pawnStateMachine.Issue(GameState.Command.Attack);
} }
private void OnMoveCanceled(InputAction.CallbackContext obj) private void OnMoveCanceled(InputAction.CallbackContext obj)
{ {
_playerStateMachine.SetMove(Vector2.zero); pawnStateMachine.SetMove(Vector2.zero);
} }
private void OnMovePerformed(InputAction.CallbackContext obj) private void OnMovePerformed(InputAction.CallbackContext obj)
{ {
_playerStateMachine.SetMove(obj.ReadValue<Vector2>()); pawnStateMachine.SetMove(obj.ReadValue<Vector2>());
} }
} }
} }

View File

@ -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());
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 57e3422c716a4342a5d7f00ab4da59d0
timeCreated: 1756077009

View File

@ -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);
}
}
}

View File

@ -1,9 +1,8 @@
using System;
using UnityEngine; using UnityEngine;
namespace State.PlayerStateMachine namespace State.PawnStateMachine
{ {
public class PlayerStateMachine : StateMachine public class PawnStateMachine : StateMachine
{ {
public Pawn controlledPawn; public Pawn controlledPawn;
private bool _forwardInput; private bool _forwardInput;

View File

@ -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);
}
}
}

View File

@ -52,6 +52,58 @@ AnimatorState:
m_MirrorParameter: m_MirrorParameter:
m_CycleOffsetParameter: m_CycleOffsetParameter:
m_TimeParameter: 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 --- !u!91 &9100000
AnimatorController: AnimatorController:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -91,10 +143,16 @@ AnimatorStateMachine:
m_ChildStates: m_ChildStates:
- serializedVersion: 1 - serializedVersion: 1
m_State: {fileID: -6585584643281648321} m_State: {fileID: -6585584643281648321}
m_Position: {x: 310, y: 120, z: 0} m_Position: {x: 310, y: 210, z: 0}
- serializedVersion: 1 - serializedVersion: 1
m_State: {fileID: -7041491042131476571} 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_ChildStateMachines: []
m_AnyStateTransitions: [] m_AnyStateTransitions: []
m_EntryTransitions: [] m_EntryTransitions: []

View File

@ -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: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a2322100430e3f1468dd88217df6f236
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6f04c5a8b205983418d17667d26f6e3d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

View File

@ -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:

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

View File

@ -0,0 +1,156 @@
fileFormatVersion: 2
guid: 8f6df09030bca8046b2495a192550881
TextureImporter:
internalIDToNameTable:
- first:
213: -2640458925702542060
second: Vigilante_Punch_2_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_2_0
rect:
serializedVersion: 2
x: 2
y: 0
width: 19
height: 32
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 41d8d79c8943b5bd0800000000000000
internalID: -2640458925702542060
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
Vigilante_Punch_2_0: -2640458925702542060
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant: