diff --git a/Assets/01_Scenes/Chapter1.unity b/Assets/01_Scenes/Chapter1.unity
index 748abea..b966e90 100644
--- a/Assets/01_Scenes/Chapter1.unity
+++ b/Assets/01_Scenes/Chapter1.unity
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3272a7869063facfad2a4015473a061a925ff6c2425c2a262b714620662f3c86
-size 38726
+oid sha256:e841afba0a1d5cc4a52e9861dc46f6a99dc49b058a56a091900211e8dd28e531
+size 52236
diff --git a/Assets/02_Scripts/Editor.meta b/Assets/02_Scripts/Editor.meta
new file mode 100644
index 0000000..ecaf4f9
--- /dev/null
+++ b/Assets/02_Scripts/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d49f66f47803c7e4caa8cd8f67da0ecc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/02_Scripts/Editor/RedCharacterSetup.cs b/Assets/02_Scripts/Editor/RedCharacterSetup.cs
new file mode 100644
index 0000000..0edda7a
--- /dev/null
+++ b/Assets/02_Scripts/Editor/RedCharacterSetup.cs
@@ -0,0 +1,424 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEditor;
+using UnityEditor.Animations;
+using UnityEditor.SceneManagement;
+using UnityEngine;
+using UnityEngine.Rendering;
+
+///
+/// Red 캐릭터의 애니메이션 클립 / 애니메이터 컨트롤러 / 플레이어 프리팹을 한 번에 생성한다.
+/// 몸(Body)과 무기(Weapon)는 각각 자식 SpriteRenderer이고, 클립 하나가 두 경로를 동시에 구동한다.
+///
+public static class RedCharacterSetup
+{
+ private const string Root = "Assets/03_Models/Characters/Red";
+ private const string CharDir = Root + "/Character";
+ private const string SwordDir = Root + "/Weapon";
+ private const string AnimDir = Root + "/Animations";
+ private const string ControllerPath = AnimDir + "/RedAnimController.controller";
+
+ //프레임레이트. 공격과 구르기는 조금 빠르게
+ private const int MoveFps = 8;
+ private const int RollFps = 12;
+ private const int SlashFps = 12;
+
+ //이동/구르기는 8방향, 공격은 대각 4방향 시트만 존재한다
+ private static readonly string[] Dirs8 =
+ {
+ "Down", "DownLeft", "DownRight", "Left", "Right", "Up", "UpLeft", "UpRight"
+ };
+
+ private static readonly string[] Dirs4 =
+ {
+ "DownLeft", "DownRight", "UpLeft", "UpRight"
+ };
+
+ //블렌드 트리에서 각 방향 클립이 놓일 좌표
+ private static readonly Dictionary DirVectors = new Dictionary
+ {
+ { "Down", new Vector2( 0f, -1f) },
+ { "Up", new Vector2( 0f, 1f) },
+ { "Left", new Vector2(-1f, 0f) },
+ { "Right", new Vector2( 1f, 0f) },
+ { "DownLeft", new Vector2(-0.7071f, -0.7071f) },
+ { "DownRight", new Vector2( 0.7071f, -0.7071f) },
+ { "UpLeft", new Vector2(-0.7071f, 0.7071f) },
+ { "UpRight", new Vector2( 0.7071f, 0.7071f) }
+ };
+
+ //애니메이션이 꽂히는 대상. path가 프리팹의 자식 이름과 정확히 일치해야 한다
+ private static EditorCurveBinding BodySprite =>
+ new EditorCurveBinding { path = "Body", type = typeof(SpriteRenderer), propertyName = "m_Sprite" };
+
+ private static EditorCurveBinding WeaponSprite =>
+ new EditorCurveBinding { path = "Weapon", type = typeof(SpriteRenderer), propertyName = "m_Sprite" };
+
+ private static EditorCurveBinding WeaponEnabled =>
+ EditorCurveBinding.FloatCurve("Weapon", typeof(SpriteRenderer), "m_Enabled");
+
+ [MenuItem("Tools/Red/애니메이션 셋업 다시 만들기")]
+ public static void Rebuild()
+ {
+ try
+ {
+ var clips = new Dictionary();
+
+ foreach (string dir in Dirs8)
+ {
+ Sprite[] walk = LoadSheet(CharDir + "/Character_" + dir + ".png");
+ Sprite[] roll = LoadSheet(CharDir + "/Character_Roll" + dir + ".png");
+
+ //대기: 걷기 시트의 첫 프레임만 사용
+ clips["Idle_" + dir] = BuildClip("Idle_" + dir, new[] { walk[0] }, null, MoveFps, true);
+ clips["Move_" + dir] = BuildClip("Move_" + dir, walk, null, MoveFps, true);
+ clips["Roll_" + dir] = BuildClip("Roll_" + dir, roll, null, RollFps, false);
+ }
+
+ foreach (string dir in Dirs4)
+ {
+ Sprite[] body = LoadSheet(CharDir + "/Character_Slash" + dir + ".png");
+ Sprite[] sword = LoadSheet(SwordDir + "/Sword_" + dir + ".png");
+
+ if (body.Length != sword.Length)
+ {
+ Debug.LogWarning("[RedSetup] Slash" + dir + ": 몸 " + body.Length + "프레임 / 검 "
+ + sword.Length + "프레임. 짧은 쪽은 마지막 스프라이트를 유지한다.");
+ }
+
+ //몸과 검을 같은 클립 안에서 같이 구동한다
+ clips["Slash_" + dir] = BuildClip("Slash_" + dir, body, sword, SlashFps, false);
+ }
+
+ AnimatorController controller = BuildController(clips);
+ FixUpSceneObject(controller, LoadSheet(CharDir + "/Character_Down.png")[0]);
+
+ Debug.Log("[RedSetup] 클립 " + clips.Count + "개 + 컨트롤러 생성 완료.");
+ }
+ finally
+ {
+ AssetDatabase.SaveAssets();
+ AssetDatabase.Refresh();
+ }
+ }
+
+ /// 스프라이트 시트를 잘린 순서대로 읽는다.
+ private static Sprite[] LoadSheet(string path)
+ {
+ Sprite[] sprites = AssetDatabase.LoadAllAssetsAtPath(path).OfType().ToArray();
+
+ if (sprites.Length == 0)
+ {
+ throw new InvalidOperationException(
+ "스프라이트가 없다: " + path + " (Sprite Mode가 Multiple인지, 슬라이스했는지 확인할 것)");
+ }
+
+ return sprites.OrderBy(TrailingIndex).ToArray();
+ }
+
+ //"Sword_DownLeft_3" -> 3
+ private static int TrailingIndex(Sprite sprite)
+ {
+ int underscore = sprite.name.LastIndexOf('_');
+
+ if (underscore >= 0 && int.TryParse(sprite.name.Substring(underscore + 1), out int index))
+ {
+ return index;
+ }
+
+ return 0;
+ }
+
+ ///
+ /// 클립 하나를 만든다. weapon이 null이면 해당 동작 내내 무기 렌더러를 꺼서
+ /// 직전 공격의 칼이 화면에 남아있지 않게 한다.
+ ///
+ private static AnimationClip BuildClip(string name, Sprite[] body, Sprite[] weapon, int fps, bool loop)
+ {
+ //CopySerialized가 이름까지 덮어쓰므로 여기서 반드시 지정한다
+ var clip = new AnimationClip { name = name, frameRate = fps };
+
+ SetSpriteCurve(clip, BodySprite, body, fps);
+
+ //길이는 몸과 검 중 긴 쪽을 따라간다
+ int frameCount = weapon == null ? body.Length : Mathf.Max(body.Length, weapon.Length);
+ float lastKeyTime = (frameCount - 1) / (float)fps;
+
+ if (weapon != null)
+ {
+ SetSpriteCurve(clip, WeaponSprite, weapon, fps);
+ AnimationUtility.SetEditorCurve(clip, WeaponEnabled, ConstantCurve(1f, lastKeyTime));
+ }
+ else
+ {
+ AnimationUtility.SetEditorCurve(clip, WeaponEnabled, ConstantCurve(0f, lastKeyTime));
+ }
+
+ AnimationClipSettings settings = AnimationUtility.GetAnimationClipSettings(clip);
+ settings.loopTime = loop;
+ AnimationUtility.SetAnimationClipSettings(clip, settings);
+
+ return SaveClip(clip, AnimDir + "/" + name + ".anim");
+ }
+
+ ///
+ /// 프레임을 fps 간격으로 찍는다. 마지막에 종료 키를 따로 넣지 않는다 —
+ /// Unity가 클립 길이를 "마지막 키 + 1프레임"으로 잡아주기 때문에,
+ /// 중복 키를 두면 마지막 프레임만 2배로 길어져서 루프가 끊긴다.
+ ///
+ private static void SetSpriteCurve(AnimationClip clip, EditorCurveBinding binding, Sprite[] frames, int fps)
+ {
+ var keys = new ObjectReferenceKeyframe[frames.Length];
+
+ for (int i = 0; i < frames.Length; i++)
+ {
+ keys[i] = new ObjectReferenceKeyframe { time = i / (float)fps, value = frames[i] };
+ }
+
+ AnimationUtility.SetObjectReferenceCurve(clip, binding, keys);
+ }
+
+ /// 값이 일정한 커브. 스프라이트 커브의 마지막 키 시각까지만 깔아 클립 길이를 늘리지 않는다.
+ private static AnimationCurve ConstantCurve(float value, float lastKeyTime)
+ {
+ if (lastKeyTime <= 0f)
+ {
+ return new AnimationCurve(new Keyframe(0f, value));
+ }
+
+ return AnimationCurve.Constant(0f, lastKeyTime, value);
+ }
+
+ //이미 있으면 내용만 덮어써서 GUID를 유지한다
+ private static AnimationClip SaveClip(AnimationClip clip, string path)
+ {
+ var existing = AssetDatabase.LoadAssetAtPath(path);
+
+ if (existing != null)
+ {
+ EditorUtility.CopySerialized(clip, existing);
+ EditorUtility.SetDirty(existing);
+ return existing;
+ }
+
+ AssetDatabase.CreateAsset(clip, path);
+ return clip;
+ }
+
+ private static AnimatorController BuildController(Dictionary clips)
+ {
+ //씬의 Animator가 이 컨트롤러를 참조하므로 에셋을 지우지 않고 내용만 비운다 (GUID 유지)
+ var controller = AssetDatabase.LoadAssetAtPath(ControllerPath);
+
+ if (controller == null)
+ {
+ controller = AnimatorController.CreateAnimatorControllerAtPath(ControllerPath);
+ }
+ else
+ {
+ ClearController(controller);
+ }
+
+ //MoveX/MoveY는 "마지막으로 바라본 방향"이다. 둘 다 0이면 블렌드 트리가 방향을 못 고르므로
+ //기본값을 아래쪽(0,-1)으로 둬서 시작하자마자 Idle_Down이 잡히게 한다
+ controller.AddParameter(new AnimatorControllerParameter
+ {
+ name = "MoveX", type = AnimatorControllerParameterType.Float, defaultFloat = 0f
+ });
+ controller.AddParameter(new AnimatorControllerParameter
+ {
+ name = "MoveY", type = AnimatorControllerParameterType.Float, defaultFloat = -1f
+ });
+ controller.AddParameter("Speed", AnimatorControllerParameterType.Float);
+ controller.AddParameter("Attack", AnimatorControllerParameterType.Trigger);
+ controller.AddParameter("Roll", AnimatorControllerParameterType.Trigger);
+
+ AnimatorState idle = AddDirectionalState(controller, "Idle", Dirs8, d => clips["Idle_" + d]);
+ AnimatorState move = AddDirectionalState(controller, "Move", Dirs8, d => clips["Move_" + d]);
+ AnimatorState roll = AddDirectionalState(controller, "Roll", Dirs8, d => clips["Roll_" + d]);
+ AnimatorState slash = AddDirectionalState(controller, "Slash", Dirs4, d => clips["Slash_" + d]);
+
+ AnimatorStateMachine stateMachine = controller.layers[0].stateMachine;
+ stateMachine.defaultState = idle;
+
+ //도트 애니메이션이라 전이 블렌딩은 전부 0
+ AnimatorStateTransition transition = idle.AddTransition(move);
+ transition.hasExitTime = false;
+ transition.duration = 0f;
+ transition.AddCondition(AnimatorConditionMode.Greater, 0.1f, "Speed");
+
+ transition = move.AddTransition(idle);
+ transition.hasExitTime = false;
+ transition.duration = 0f;
+ transition.AddCondition(AnimatorConditionMode.Less, 0.1f, "Speed");
+
+ AddAnyStateTrigger(stateMachine, slash, "Attack");
+ AddAnyStateTrigger(stateMachine, roll, "Roll");
+
+ AddExitToIdle(slash, idle);
+ AddExitToIdle(roll, idle);
+
+ EditorUtility.SetDirty(controller);
+ return controller;
+ }
+
+ /// 컨트롤러 에셋은 그대로 두고 파라미터/스테이트만 전부 비운다.
+ private static void ClearController(AnimatorController controller)
+ {
+ while (controller.parameters.Length > 0)
+ {
+ controller.RemoveParameter(0);
+ }
+
+ //Base Layer 하나만 남긴다
+ while (controller.layers.Length > 1)
+ {
+ controller.RemoveLayer(controller.layers.Length - 1);
+ }
+
+ if (controller.layers.Length == 0)
+ {
+ controller.AddLayer("Base Layer");
+ }
+
+ AnimatorStateMachine stateMachine = controller.layers[0].stateMachine;
+
+ foreach (AnimatorStateTransition transition in stateMachine.anyStateTransitions.ToArray())
+ {
+ stateMachine.RemoveAnyStateTransition(transition);
+ }
+
+ foreach (AnimatorTransition transition in stateMachine.entryTransitions.ToArray())
+ {
+ stateMachine.RemoveEntryTransition(transition);
+ }
+
+ foreach (ChildAnimatorState child in stateMachine.states.ToArray())
+ {
+ stateMachine.RemoveState(child.state);
+ }
+
+ foreach (ChildAnimatorStateMachine child in stateMachine.stateMachines.ToArray())
+ {
+ stateMachine.RemoveStateMachine(child.stateMachine);
+ }
+
+ //스테이트를 지워도 블렌드 트리 서브에셋은 남으므로 직접 정리한다
+ foreach (UnityEngine.Object sub in AssetDatabase.LoadAllAssetsAtPath(ControllerPath))
+ {
+ if (sub is BlendTree)
+ {
+ UnityEngine.Object.DestroyImmediate(sub, true);
+ }
+ }
+ }
+
+ /// 8방향(혹은 4방향) 클립을 2D 블렌드 트리 하나로 묶은 스테이트를 만든다.
+ private static AnimatorState AddDirectionalState(AnimatorController controller, string name,
+ string[] dirs, Func pick)
+ {
+ AnimatorState state = controller.CreateBlendTreeInController(name, out BlendTree tree, 0);
+
+ tree.name = name;
+ tree.blendType = BlendTreeType.SimpleDirectional2D;
+ tree.blendParameter = "MoveX";
+ tree.blendParameterY = "MoveY";
+
+ foreach (string dir in dirs)
+ {
+ tree.AddChild(pick(dir), DirVectors[dir]);
+ }
+
+ return state;
+ }
+
+ private static void AddAnyStateTrigger(AnimatorStateMachine stateMachine, AnimatorState target, string trigger)
+ {
+ AnimatorStateTransition transition = stateMachine.AddAnyStateTransition(target);
+ transition.hasExitTime = false;
+ transition.duration = 0f;
+ transition.canTransitionToSelf = false;
+ transition.AddCondition(AnimatorConditionMode.If, 0f, trigger);
+ }
+
+ private static void AddExitToIdle(AnimatorState from, AnimatorState idle)
+ {
+ AnimatorStateTransition transition = from.AddTransition(idle);
+ transition.hasExitTime = true;
+ transition.exitTime = 1f;
+ transition.duration = 0f;
+ }
+
+ ///
+ /// 열려있는 씬에서 Body/Weapon 자식을 가진 Animator를 찾아 정렬과 오프셋을 맞춘다.
+ /// 전부 Undo로 되돌릴 수 있다.
+ ///
+ private static void FixUpSceneObject(AnimatorController controller, Sprite defaultBody)
+ {
+ Animator[] animators = UnityEngine.Object.FindObjectsByType(
+ FindObjectsInactive.Include, FindObjectsSortMode.None);
+
+ foreach (Animator animator in animators)
+ {
+ Transform body = animator.transform.Find("Body");
+ Transform weapon = animator.transform.Find("Weapon");
+
+ if (body == null || weapon == null)
+ {
+ continue;
+ }
+
+ Undo.RecordObject(animator, "Red 셋업");
+ animator.runtimeAnimatorController = controller;
+ animator.applyRootMotion = false;
+
+ //루트에 SortingGroup이 있어야 몸+검이 한 덩어리로 타일맵과 정렬된다
+ if (animator.GetComponent() == null)
+ {
+ Undo.AddComponent(animator.gameObject);
+ }
+
+ //핵심: 두 시트의 캔버스 중심이 같으므로 로컬 좌표가 정확히 0이어야 픽셀이 맞물린다
+ ResetLocal(body);
+ ResetLocal(weapon);
+
+ //검이 몸 위에 그려지도록 order를 1 높인다
+ SetupRenderer(body, 0, true, defaultBody);
+ SetupRenderer(weapon, 1, false, null);
+
+ EditorSceneManager.MarkSceneDirty(animator.gameObject.scene);
+ Debug.Log("[RedSetup] 씬의 '" + animator.name + "' 계층을 정리했다.");
+ return;
+ }
+
+ Debug.LogWarning("[RedSetup] Body/Weapon 자식을 가진 Animator를 씬에서 못 찾았다. 계층 정리는 건너뛴다.");
+ }
+
+ private static void ResetLocal(Transform target)
+ {
+ Undo.RecordObject(target, "Red 셋업");
+ target.localPosition = Vector3.zero;
+ target.localRotation = Quaternion.identity;
+ target.localScale = Vector3.one;
+ }
+
+ private static void SetupRenderer(Transform target, int order, bool enabled, Sprite fallbackSprite)
+ {
+ var renderer = target.GetComponent();
+
+ if (renderer == null)
+ {
+ renderer = Undo.AddComponent(target.gameObject);
+ }
+
+ Undo.RecordObject(renderer, "Red 셋업");
+ renderer.sortingOrder = order;
+ renderer.enabled = enabled;
+
+ if (fallbackSprite != null && renderer.sprite == null)
+ {
+ renderer.sprite = fallbackSprite;
+ }
+ }
+}
diff --git a/Assets/02_Scripts/Editor/RedCharacterSetup.cs.meta b/Assets/02_Scripts/Editor/RedCharacterSetup.cs.meta
new file mode 100644
index 0000000..2ba9635
--- /dev/null
+++ b/Assets/02_Scripts/Editor/RedCharacterSetup.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 7307926ad7555084d9c3e3fe838b9fb1
\ No newline at end of file
diff --git a/Assets/02_Scripts/Managers/GameManager.cs b/Assets/02_Scripts/Managers/GameManager.cs
index b17ad54..f04d528 100644
--- a/Assets/02_Scripts/Managers/GameManager.cs
+++ b/Assets/02_Scripts/Managers/GameManager.cs
@@ -9,6 +9,7 @@ private void Awake()
if (Instance == null)
{
Instance = this; //만들어진 자신을 인스턴스로 설정
+ DontDestroyOnLoad(gameObject); //씬이 바뀌어도 파괴되지 않도록 설정
}
else
{
diff --git a/Assets/02_Scripts/Managers/InputManager.cs b/Assets/02_Scripts/Managers/InputManager.cs
index 3ed915e..2afcccc 100644
--- a/Assets/02_Scripts/Managers/InputManager.cs
+++ b/Assets/02_Scripts/Managers/InputManager.cs
@@ -9,13 +9,14 @@ public class InputManager : MonoBehaviour, GameInput.ICharacterActions
private GameInput _input;
- public event Action OnMoveNext_Event;
+ public event Action OnMove_Event;
private void Awake()
{
if (Instance == null)
{
Instance = this; //만들어진 자신을 인스턴스로 설정
+ DontDestroyOnLoad(gameObject); //씬이 바뀌어도 파괴되지 않도록 설정
}
else
{
@@ -33,7 +34,9 @@ private void Awake()
public void OnMove(InputAction.CallbackContext ctx)
{
- if (ctx.phase == InputActionPhase.Performed)
- OnMoveNext_Event?.Invoke();
+ // Performed만 받으면 키를 뗐을 때(Canceled) 0이 전달되지 않아 계속 움직인다.
+ // Canceled의 ReadValue는 Vector2.zero를 돌려준다.
+ if (ctx.phase == InputActionPhase.Performed || ctx.phase == InputActionPhase.Canceled)
+ OnMove_Event?.Invoke(ctx.ReadValue());
}
}
\ No newline at end of file
diff --git a/Assets/02_Scripts/Managers/SceneLoadManager.cs b/Assets/02_Scripts/Managers/SceneLoadManager.cs
index a6b5e18..5d1b98a 100644
--- a/Assets/02_Scripts/Managers/SceneLoadManager.cs
+++ b/Assets/02_Scripts/Managers/SceneLoadManager.cs
@@ -14,6 +14,7 @@ private void Awake()
if (Instance == null)
{
Instance = this; // 만들어진 자신을 인스턴스로 설정
+ DontDestroyOnLoad(gameObject); //씬이 바뀌어도 파괴되지 않도록 설정
}
else
{
diff --git a/Assets/02_Scripts/Managers/SoundManager.cs b/Assets/02_Scripts/Managers/SoundManager.cs
index e7c22ba..09260f2 100644
--- a/Assets/02_Scripts/Managers/SoundManager.cs
+++ b/Assets/02_Scripts/Managers/SoundManager.cs
@@ -32,6 +32,7 @@ private void Awake()
if (Instance == null)
{
Instance = this; //만들어진 자신을 인스턴스로 설정
+ DontDestroyOnLoad(gameObject); //씬이 바뀌어도 파괴되지 않도록 설정
Initialize();
}
else
diff --git a/Assets/02_Scripts/Player.meta b/Assets/02_Scripts/Player.meta
new file mode 100644
index 0000000..defdd5c
--- /dev/null
+++ b/Assets/02_Scripts/Player.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 274e7a11cef810644bd8898810203abe
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/02_Scripts/Player/PlayerController.cs b/Assets/02_Scripts/Player/PlayerController.cs
new file mode 100644
index 0000000..6f12225
--- /dev/null
+++ b/Assets/02_Scripts/Player/PlayerController.cs
@@ -0,0 +1,72 @@
+using UnityEngine;
+
+[RequireComponent(typeof(Rigidbody2D))]
+[RequireComponent(typeof(Animator))]
+public class PlayerController : MonoBehaviour,ISceneInitializable
+{
+ // RedAnimController의 파라미터 이름과 정확히 일치해야 한다
+ private const string MoveXParam = "MoveX";
+ private const string MoveYParam = "MoveY";
+ private const string SpeedParam = "Speed";
+
+ [SerializeField] private float _moveSpeed = 4f;
+
+ private Rigidbody2D _rigidbody;
+ private Animator _animator;
+ private Vector2 _moveInput;
+
+ private void Awake()
+ {
+ _rigidbody = GetComponent();
+ _animator = GetComponent();
+ }
+
+ public void OnSceneLoaded()
+ {
+ // 씬이 다시 로드돼도 중복 구독되지 않도록 먼저 떼고 붙인다
+ InputManager.Instance.OnMove_Event -= this.OnMove;
+ InputManager.Instance.OnMove_Event += this.OnMove;
+ }
+
+ private void OnDestroy()
+ {
+ if (InputManager.Instance != null)
+ {
+ InputManager.Instance.OnMove_Event -= this.OnMove;
+ }
+ }
+
+ // 입력 콜백은 값을 받아두기만 한다. 실제 이동은 물리 주기에 맞춰 FixedUpdate에서
+ private void OnMove(Vector2 moveInput)
+ {
+ // 대각선 입력이 (1,1)로 들어오면 더 빨라지므로 길이를 1로 제한
+ _moveInput = Vector2.ClampMagnitude(moveInput, 1f);
+
+ if (_moveInput.sqrMagnitude > 0.01f)
+ {
+ // 블렌드 트리는 스프라이트를 보간하지 못한다. 8방향 중 하나로 스냅해서 넣어야
+ // 한 클립에 가중치가 온전히 실려서 방향 경계에서 깜빡이지 않는다
+ Vector2 facing = SnapTo8(_moveInput);
+ _animator.SetFloat(MoveXParam, facing.x);
+ _animator.SetFloat(MoveYParam, facing.y);
+ }
+ // 입력이 0이면 MoveX/MoveY를 건드리지 않는다 -> 멈춰도 마지막으로 보던 방향을 유지
+
+ _animator.SetFloat(SpeedParam, _moveInput.magnitude);
+ }
+
+ private void FixedUpdate()
+ {
+ // Dynamic 바디지만 힘을 주지 않고 속도를 직접 대입하므로 관성 없이 딱딱 멈춘다
+ _rigidbody.linearVelocity = _moveInput * _moveSpeed;
+ }
+
+ // 입력 방향을 가장 가까운 45도 배수로 스냅한다 (대각선은 0.7071이 되어 블렌드 트리 좌표와 일치)
+ private static Vector2 SnapTo8(Vector2 direction)
+ {
+ float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
+ float snapped = Mathf.Round(angle / 45f) * 45f * Mathf.Deg2Rad;
+
+ return new Vector2(Mathf.Cos(snapped), Mathf.Sin(snapped));
+ }
+}
diff --git a/Assets/02_Scripts/Player/PlayerController.cs.meta b/Assets/02_Scripts/Player/PlayerController.cs.meta
new file mode 100644
index 0000000..c25a5f5
--- /dev/null
+++ b/Assets/02_Scripts/Player/PlayerController.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 47ae6db5cf5ecb742baa9ac35f217864
\ No newline at end of file
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_Down.anim b/Assets/03_Models/Characters/Red/Animations/Idle_Down.anim
new file mode 100644
index 0000000..7b7a5ee
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_Down.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1de0867d81d3e99e99c6a8d9ed544d6ef6590fa5846c105687efef021dcb6cdc
+size 3485
diff --git a/Assets/03_Models/Characters/Red/Animations/MoveDown.anim.meta b/Assets/03_Models/Characters/Red/Animations/Idle_Down.anim.meta
similarity index 79%
rename from Assets/03_Models/Characters/Red/Animations/MoveDown.anim.meta
rename to Assets/03_Models/Characters/Red/Animations/Idle_Down.anim.meta
index 84558e4..74fc6d6 100644
--- a/Assets/03_Models/Characters/Red/Animations/MoveDown.anim.meta
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_Down.anim.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: fed2f1f82407ce4439d8b6ed375e0667
+guid: bee9b9660e8e8544cae2d8aaf605697a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_DownLeft.anim b/Assets/03_Models/Characters/Red/Animations/Idle_DownLeft.anim
new file mode 100644
index 0000000..c4ee8f5
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_DownLeft.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:185fca4490b35cd3816fb766bd27977f76d037968b31bc9c5e1ba986ad1f7bd2
+size 3485
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_DownLeft.anim.meta b/Assets/03_Models/Characters/Red/Animations/Idle_DownLeft.anim.meta
new file mode 100644
index 0000000..210ab21
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_DownLeft.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: af3aea2623979a545b42d24b2626a970
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_DownRight.anim b/Assets/03_Models/Characters/Red/Animations/Idle_DownRight.anim
new file mode 100644
index 0000000..5d2e633
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_DownRight.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f19d50b2751ffb5492b01bbcfd777e4744b04409b1f4912a7353a6d6d45f6c18
+size 3490
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_DownRight.anim.meta b/Assets/03_Models/Characters/Red/Animations/Idle_DownRight.anim.meta
new file mode 100644
index 0000000..51640a5
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_DownRight.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 831d300c370dae044908ea7c4b24913c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_Left.anim b/Assets/03_Models/Characters/Red/Animations/Idle_Left.anim
new file mode 100644
index 0000000..13f5f30
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_Left.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:74d218ea642044fdc6d68d42942e275b6be50a4929f3c2d8a59cbc5dabd22e47
+size 3485
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_Left.anim.meta b/Assets/03_Models/Characters/Red/Animations/Idle_Left.anim.meta
new file mode 100644
index 0000000..83f0a4b
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_Left.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 859ed0bd2e2bf344eac644c55ce1b10c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_Right.anim b/Assets/03_Models/Characters/Red/Animations/Idle_Right.anim
new file mode 100644
index 0000000..5d309ae
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_Right.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b06368aa222c4fb9062c96290b4dd240f30b8a81e8cc27b1406e87e913cac0b4
+size 3486
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_Right.anim.meta b/Assets/03_Models/Characters/Red/Animations/Idle_Right.anim.meta
new file mode 100644
index 0000000..d20d03a
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_Right.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 37b55debd4507464d97bea1d17f1f342
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_Up.anim b/Assets/03_Models/Characters/Red/Animations/Idle_Up.anim
new file mode 100644
index 0000000..5a0d3e5
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_Up.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d7349bd22da751c68e8f92498c8100645578d60f9ea6bef0c979565df7d348b0
+size 3483
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_Up.anim.meta b/Assets/03_Models/Characters/Red/Animations/Idle_Up.anim.meta
new file mode 100644
index 0000000..ef43f99
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_Up.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d4f3911e5f17c7a45ad2b9843b387435
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_UpLeft.anim b/Assets/03_Models/Characters/Red/Animations/Idle_UpLeft.anim
new file mode 100644
index 0000000..37faa41
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_UpLeft.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dd3e4d022775907b32529cebdcd38237027138828bb9bc0404177631fc56e83d
+size 3487
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_UpLeft.anim.meta b/Assets/03_Models/Characters/Red/Animations/Idle_UpLeft.anim.meta
new file mode 100644
index 0000000..4b23cc8
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_UpLeft.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5e06d3b793c3a3b4e8082dc7e34d6863
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_UpRight.anim b/Assets/03_Models/Characters/Red/Animations/Idle_UpRight.anim
new file mode 100644
index 0000000..f2b250f
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_UpRight.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af352008916d4e3f7050865efd1b02457ad2528a3024741b5ed2c03541f854a3
+size 3492
diff --git a/Assets/03_Models/Characters/Red/Animations/Idle_UpRight.anim.meta b/Assets/03_Models/Characters/Red/Animations/Idle_UpRight.anim.meta
new file mode 100644
index 0000000..950202c
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Idle_UpRight.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 18fd1c74088225841921dc07f0910091
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_Down.anim b/Assets/03_Models/Characters/Red/Animations/Move_Down.anim
new file mode 100644
index 0000000..b036b74
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_Down.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c9db9a0ae605b069334038d58950b8b764b9fd9d75ae5545479dd6bfe0600af2
+size 3986
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_Down.anim.meta b/Assets/03_Models/Characters/Red/Animations/Move_Down.anim.meta
new file mode 100644
index 0000000..86aafe3
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_Down.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1274542e83c3596469df00069ea94a9b
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_DownLeft.anim b/Assets/03_Models/Characters/Red/Animations/Move_DownLeft.anim
new file mode 100644
index 0000000..ba095d2
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_DownLeft.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d2ecb392d26fe9dccc68b190fd273a0b54a2cdc0c1fefa94d7217b2911513432
+size 3988
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_DownLeft.anim.meta b/Assets/03_Models/Characters/Red/Animations/Move_DownLeft.anim.meta
new file mode 100644
index 0000000..e15df59
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_DownLeft.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e51c68809a7894a448c5f8ca2436352f
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_DownRight.anim b/Assets/03_Models/Characters/Red/Animations/Move_DownRight.anim
new file mode 100644
index 0000000..e804af6
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_DownRight.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf3b3b2e2752e22c7916bab04aa71d13cbb608a584623ea3f700de953b6fdc2f
+size 3997
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_DownRight.anim.meta b/Assets/03_Models/Characters/Red/Animations/Move_DownRight.anim.meta
new file mode 100644
index 0000000..658efef
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_DownRight.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a4defc5ab46fd1e4dbfcac32a552c4ae
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_Left.anim b/Assets/03_Models/Characters/Red/Animations/Move_Left.anim
new file mode 100644
index 0000000..b559b0e
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_Left.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:97261529e8da274f53e0fd0e5848dc7c6f28d8f1d751086806c3ca55b708d0f6
+size 3988
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_Left.anim.meta b/Assets/03_Models/Characters/Red/Animations/Move_Left.anim.meta
new file mode 100644
index 0000000..2f4b8d8
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_Left.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a72d8604683330d4483142b57cfcc3e0
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_Right.anim b/Assets/03_Models/Characters/Red/Animations/Move_Right.anim
new file mode 100644
index 0000000..4971fc9
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_Right.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:17752be6d21c2ac98a22f9c06eca1d376ec6d2c052c59aaa85bd94e2bf969018
+size 3991
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_Right.anim.meta b/Assets/03_Models/Characters/Red/Animations/Move_Right.anim.meta
new file mode 100644
index 0000000..d355ea0
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_Right.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: edf6fb371bb5e9840a5b7c85fe8a4a52
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_Up.anim b/Assets/03_Models/Characters/Red/Animations/Move_Up.anim
new file mode 100644
index 0000000..7fcf215
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_Up.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a877cf5d1b863f3b664cc96044865197b16a4995c96c274540940cb71a52e9c
+size 3988
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_Up.anim.meta b/Assets/03_Models/Characters/Red/Animations/Move_Up.anim.meta
new file mode 100644
index 0000000..5ae3e12
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_Up.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 39370c662dcdb9d4ab84e2ff5bda6efa
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_UpLeft.anim b/Assets/03_Models/Characters/Red/Animations/Move_UpLeft.anim
new file mode 100644
index 0000000..5f5707f
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_UpLeft.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:729ae1840e8e5589319bcf701361f635d947c2431631d0dc1edabdc8a97178d8
+size 3996
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_UpLeft.anim.meta b/Assets/03_Models/Characters/Red/Animations/Move_UpLeft.anim.meta
new file mode 100644
index 0000000..ec02d9e
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_UpLeft.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c06b8932f96846841a2ac8ee2fd752aa
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_UpRight.anim b/Assets/03_Models/Characters/Red/Animations/Move_UpRight.anim
new file mode 100644
index 0000000..c816cc0
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_UpRight.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:085be144b8d0a9c9ba4cad2fd7e05c29ea2720ba97557acde388f9a1bc582ae8
+size 3995
diff --git a/Assets/03_Models/Characters/Red/Animations/Move_UpRight.anim.meta b/Assets/03_Models/Characters/Red/Animations/Move_UpRight.anim.meta
new file mode 100644
index 0000000..2bbdfea
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Move_UpRight.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3b6d420c29a2fb74896a5a7a034fa438
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/RedAnimController.controller b/Assets/03_Models/Characters/Red/Animations/RedAnimController.controller
index 4d5c8b9..a34ed36 100644
--- a/Assets/03_Models/Characters/Red/Animations/RedAnimController.controller
+++ b/Assets/03_Models/Characters/Red/Animations/RedAnimController.controller
@@ -1,5 +1,136 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
+--- !u!1101 &-6874254611879240787
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions:
+ - m_ConditionMode: 3
+ m_ConditionEvent: Speed
+ m_EventTreshold: 0.1
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: 3622458180250047327}
+ m_Solo: 0
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0
+ m_TransitionOffset: 0
+ m_ExitTime: 0.9
+ m_HasExitTime: 0
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!206 &-3624203845668539833
+BlendTree:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Idle
+ m_Childs:
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: bee9b9660e8e8544cae2d8aaf605697a, type: 2}
+ m_Threshold: 0
+ m_Position: {x: 0, y: -1}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: af3aea2623979a545b42d24b2626a970, type: 2}
+ m_Threshold: 0.14285715
+ m_Position: {x: -0.7071, y: -0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 831d300c370dae044908ea7c4b24913c, type: 2}
+ m_Threshold: 0.2857143
+ m_Position: {x: 0.7071, y: -0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 859ed0bd2e2bf344eac644c55ce1b10c, type: 2}
+ m_Threshold: 0.42857143
+ m_Position: {x: -1, y: 0}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 37b55debd4507464d97bea1d17f1f342, type: 2}
+ m_Threshold: 0.5714286
+ m_Position: {x: 1, y: 0}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: d4f3911e5f17c7a45ad2b9843b387435, type: 2}
+ m_Threshold: 0.71428573
+ m_Position: {x: 0, y: 1}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 5e06d3b793c3a3b4e8082dc7e34d6863, type: 2}
+ m_Threshold: 0.85714287
+ m_Position: {x: -0.7071, y: 0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 18fd1c74088225841921dc07f0910091, type: 2}
+ m_Threshold: 1
+ m_Position: {x: 0.7071, y: 0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ m_BlendParameter: MoveX
+ m_BlendParameterY: MoveY
+ m_MinThreshold: 0
+ m_MaxThreshold: 1
+ m_UseAutomaticThresholds: 1
+ m_NormalizedBlendValues: 0
+ m_BlendType: 1
+--- !u!1102 &-2486997814425191357
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Roll
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions:
+ - {fileID: 9182379453996200090}
+ 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: 365230908994131198}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
@@ -8,7 +139,37 @@ AnimatorController:
m_PrefabAsset: {fileID: 0}
m_Name: RedAnimController
serializedVersion: 5
- m_AnimatorParameters: []
+ m_AnimatorParameters:
+ - m_Name: MoveX
+ m_Type: 1
+ m_DefaultFloat: 0
+ m_DefaultInt: 0
+ m_DefaultBool: 0
+ m_Controller: {fileID: 9100000}
+ - m_Name: MoveY
+ m_Type: 1
+ m_DefaultFloat: -1
+ m_DefaultInt: 0
+ m_DefaultBool: 0
+ m_Controller: {fileID: 9100000}
+ - m_Name: Speed
+ m_Type: 1
+ m_DefaultFloat: 0
+ m_DefaultInt: 0
+ m_DefaultBool: 0
+ m_Controller: {fileID: 9100000}
+ - m_Name: Attack
+ m_Type: 9
+ m_DefaultFloat: 0
+ m_DefaultInt: 0
+ m_DefaultBool: 0
+ m_Controller: {fileID: 9100000}
+ - m_Name: Roll
+ m_Type: 9
+ m_DefaultFloat: 0
+ m_DefaultInt: 0
+ m_DefaultBool: 0
+ m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
@@ -22,66 +183,174 @@ AnimatorController:
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
---- !u!1101 &2519894553696719540
+--- !u!206 &365230908994131198
+BlendTree:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Roll
+ m_Childs:
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: dafe222790aa933469126d76ba290a42, type: 2}
+ m_Threshold: 0
+ m_Position: {x: 0, y: -1}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 5a98bd1920ffad24085c9a1be08ccd68, type: 2}
+ m_Threshold: 0.14285715
+ m_Position: {x: -0.7071, y: -0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 1d24e6c793f96294597287be9763bb83, type: 2}
+ m_Threshold: 0.2857143
+ m_Position: {x: 0.7071, y: -0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: ab6daac0679290f488d9d675d6fc7fa1, type: 2}
+ m_Threshold: 0.42857143
+ m_Position: {x: -1, y: 0}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 97c47ff53f667db4db0ba29e5668ee42, type: 2}
+ m_Threshold: 0.5714286
+ m_Position: {x: 1, y: 0}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: fdf0209c7f61349458770e0d5fc15723, type: 2}
+ m_Threshold: 0.71428573
+ m_Position: {x: 0, y: 1}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: a27badecb6b0db04d8bfeb961905a84d, type: 2}
+ m_Threshold: 0.85714287
+ m_Position: {x: -0.7071, y: 0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 257b5420c66878e4aa1fb5cdd6ca2b14, type: 2}
+ m_Threshold: 1
+ m_Position: {x: 0.7071, y: 0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ m_BlendParameter: MoveX
+ m_BlendParameterY: MoveY
+ m_MinThreshold: 0
+ m_MaxThreshold: 1
+ m_UseAutomaticThresholds: 1
+ m_NormalizedBlendValues: 0
+ m_BlendType: 1
+--- !u!1102 &448698662924600173
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Slash
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions:
+ - {fileID: 9082020438067527466}
+ 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: 7456827777912271963}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1101 &1489130277080668679
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
- m_Conditions: []
+ m_Conditions:
+ - m_ConditionMode: 1
+ m_ConditionEvent: Roll
+ m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 3987754447849857068}
+ m_DstState: {fileID: -2486997814425191357}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
- m_TransitionDuration: 0.25
+ m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.75
- m_HasExitTime: 1
+ m_HasExitTime: 0
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 0
+--- !u!1101 &1563611855647061710
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions:
+ - m_ConditionMode: 4
+ m_ConditionEvent: Speed
+ m_EventTreshold: 0.1
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: 8330308266414253568}
+ m_Solo: 0
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0
+ m_TransitionOffset: 0
+ m_ExitTime: 0.9
+ m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
---- !u!1102 &3987754447849857068
+--- !u!1102 &3622458180250047327
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_Name: MoveDown
- 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: fed2f1f82407ce4439d8b6ed375e0667, type: 2}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter:
---- !u!1102 &6291064502994660405
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Idle
+ m_Name: Move
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- - {fileID: 2519894553696719540}
+ - {fileID: 1563611855647061710}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@@ -91,12 +360,37 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
- m_Motion: {fileID: 0}
+ m_Motion: {fileID: 8069003335268577343}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
+--- !u!1101 &4851453923614252778
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions:
+ - m_ConditionMode: 1
+ m_ConditionEvent: Attack
+ m_EventTreshold: 0
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: 448698662924600173}
+ m_Solo: 0
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0
+ m_TransitionOffset: 0
+ m_ExitTime: 0.75
+ m_HasExitTime: 0
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 0
--- !u!1107 &6815402290229989870
AnimatorStateMachine:
serializedVersion: 6
@@ -107,13 +401,21 @@ AnimatorStateMachine:
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
- m_State: {fileID: 3987754447849857068}
- m_Position: {x: 280, y: 250, z: 0}
+ m_State: {fileID: 8330308266414253568}
+ m_Position: {x: 200, y: 0, z: 0}
- serializedVersion: 1
- m_State: {fileID: 6291064502994660405}
- m_Position: {x: 280, y: 90, z: 0}
+ m_State: {fileID: 3622458180250047327}
+ m_Position: {x: 230, y: 60, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: -2486997814425191357}
+ m_Position: {x: 270, y: 130, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: 448698662924600173}
+ m_Position: {x: 305, y: 195, z: 0}
m_ChildStateMachines: []
- m_AnyStateTransitions: []
+ m_AnyStateTransitions:
+ - {fileID: 4851453923614252778}
+ - {fileID: 1489130277080668679}
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
@@ -121,4 +423,201 @@ AnimatorStateMachine:
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
- m_DefaultState: {fileID: 6291064502994660405}
+ m_DefaultState: {fileID: 8330308266414253568}
+--- !u!206 &7456827777912271963
+BlendTree:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Slash
+ m_Childs:
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 152b0967f969b07488a3de28d1922062, type: 2}
+ m_Threshold: 0
+ m_Position: {x: -0.7071, y: -0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: f20be9e9358bead4b841d51d228eda47, type: 2}
+ m_Threshold: 0.33333334
+ m_Position: {x: 0.7071, y: -0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 6ed3d8ee60b1792428e40711049b1c58, type: 2}
+ m_Threshold: 0.6666667
+ m_Position: {x: -0.7071, y: 0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: c5e189d0be90850438371df9e728596c, type: 2}
+ m_Threshold: 1
+ m_Position: {x: 0.7071, y: 0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ m_BlendParameter: MoveX
+ m_BlendParameterY: MoveY
+ m_MinThreshold: 0
+ m_MaxThreshold: 1
+ m_UseAutomaticThresholds: 1
+ m_NormalizedBlendValues: 0
+ m_BlendType: 1
+--- !u!206 &8069003335268577343
+BlendTree:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Move
+ m_Childs:
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 1274542e83c3596469df00069ea94a9b, type: 2}
+ m_Threshold: 0
+ m_Position: {x: 0, y: -1}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: e51c68809a7894a448c5f8ca2436352f, type: 2}
+ m_Threshold: 0.14285715
+ m_Position: {x: -0.7071, y: -0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: a4defc5ab46fd1e4dbfcac32a552c4ae, type: 2}
+ m_Threshold: 0.2857143
+ m_Position: {x: 0.7071, y: -0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: a72d8604683330d4483142b57cfcc3e0, type: 2}
+ m_Threshold: 0.42857143
+ m_Position: {x: -1, y: 0}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: edf6fb371bb5e9840a5b7c85fe8a4a52, type: 2}
+ m_Threshold: 0.5714286
+ m_Position: {x: 1, y: 0}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 39370c662dcdb9d4ab84e2ff5bda6efa, type: 2}
+ m_Threshold: 0.71428573
+ m_Position: {x: 0, y: 1}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: c06b8932f96846841a2ac8ee2fd752aa, type: 2}
+ m_Threshold: 0.85714287
+ m_Position: {x: -0.7071, y: 0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ - serializedVersion: 2
+ m_Motion: {fileID: 7400000, guid: 3b6d420c29a2fb74896a5a7a034fa438, type: 2}
+ m_Threshold: 1
+ m_Position: {x: 0.7071, y: 0.7071}
+ m_TimeScale: 1
+ m_CycleOffset: 0
+ m_DirectBlendParameter: Blend
+ m_Mirror: 0
+ m_BlendParameter: MoveX
+ m_BlendParameterY: MoveY
+ m_MinThreshold: 0
+ m_MaxThreshold: 1
+ m_UseAutomaticThresholds: 1
+ m_NormalizedBlendValues: 0
+ m_BlendType: 1
+--- !u!1102 &8330308266414253568
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Idle
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions:
+ - {fileID: -6874254611879240787}
+ 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: -3624203845668539833}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1101 &9082020438067527466
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions: []
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: 8330308266414253568}
+ m_Solo: 0
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0
+ m_TransitionOffset: 0
+ m_ExitTime: 1
+ m_HasExitTime: 1
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1101 &9182379453996200090
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions: []
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: 8330308266414253568}
+ m_Solo: 0
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0
+ m_TransitionOffset: 0
+ m_ExitTime: 1
+ m_HasExitTime: 1
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_Down.anim b/Assets/03_Models/Characters/Red/Animations/Roll_Down.anim
new file mode 100644
index 0000000..2cfc7bc
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_Down.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a1c61e5b5e138cbc48f5a8f00ad3d3f610883779c340475c4d8c5ee5fef30410
+size 4025
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_Down.anim.meta b/Assets/03_Models/Characters/Red/Animations/Roll_Down.anim.meta
new file mode 100644
index 0000000..8305bc8
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_Down.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dafe222790aa933469126d76ba290a42
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_DownLeft.anim b/Assets/03_Models/Characters/Red/Animations/Roll_DownLeft.anim
new file mode 100644
index 0000000..1594dd7
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_DownLeft.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a6055a5ce383a3231b9f4334f3938232954a3547871df1a46ce5181f817eeea
+size 4031
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_DownLeft.anim.meta b/Assets/03_Models/Characters/Red/Animations/Roll_DownLeft.anim.meta
new file mode 100644
index 0000000..8fc9611
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_DownLeft.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5a98bd1920ffad24085c9a1be08ccd68
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_DownRight.anim b/Assets/03_Models/Characters/Red/Animations/Roll_DownRight.anim
new file mode 100644
index 0000000..6e2bdfc
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_DownRight.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ffc0ce760465faab987d7eeecaecdfb8d69a3dbf81952314dc2ad0e079830dc
+size 4036
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_DownRight.anim.meta b/Assets/03_Models/Characters/Red/Animations/Roll_DownRight.anim.meta
new file mode 100644
index 0000000..f293ad6
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_DownRight.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1d24e6c793f96294597287be9763bb83
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_Left.anim b/Assets/03_Models/Characters/Red/Animations/Roll_Left.anim
new file mode 100644
index 0000000..761afb2
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_Left.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db59c83369a1ba5f78847bbe2e2768889388901fb13cd2697baeab749d369402
+size 4031
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_Left.anim.meta b/Assets/03_Models/Characters/Red/Animations/Roll_Left.anim.meta
new file mode 100644
index 0000000..64c81f1
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_Left.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ab6daac0679290f488d9d675d6fc7fa1
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_Right.anim b/Assets/03_Models/Characters/Red/Animations/Roll_Right.anim
new file mode 100644
index 0000000..a2f3c6d
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_Right.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7eb82eecb6a274938470247b3e3c7aac83f3bd647273f79656c625d8cf11e49d
+size 4026
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_Right.anim.meta b/Assets/03_Models/Characters/Red/Animations/Roll_Right.anim.meta
new file mode 100644
index 0000000..320a467
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_Right.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 97c47ff53f667db4db0ba29e5668ee42
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_Up.anim b/Assets/03_Models/Characters/Red/Animations/Roll_Up.anim
new file mode 100644
index 0000000..5ccc4e1
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_Up.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d360337ae40b73531901c614cd282a027bd68c01be7122edcf9fb9cfffcf7658
+size 4031
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_Up.anim.meta b/Assets/03_Models/Characters/Red/Animations/Roll_Up.anim.meta
new file mode 100644
index 0000000..74f2177
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_Up.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fdf0209c7f61349458770e0d5fc15723
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_UpLeft.anim b/Assets/03_Models/Characters/Red/Animations/Roll_UpLeft.anim
new file mode 100644
index 0000000..e03781a
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_UpLeft.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:04a2fcdec2c014656cc5bfef4acb788ad41137f8528b5edc11a497f12f5fd11e
+size 4031
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_UpLeft.anim.meta b/Assets/03_Models/Characters/Red/Animations/Roll_UpLeft.anim.meta
new file mode 100644
index 0000000..a21c204
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_UpLeft.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a27badecb6b0db04d8bfeb961905a84d
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_UpRight.anim b/Assets/03_Models/Characters/Red/Animations/Roll_UpRight.anim
new file mode 100644
index 0000000..75e2bbd
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_UpRight.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1f28d8fdc7ddb66a75f09856781f6b01729467bf0fca98dac3213b399134ea33
+size 4032
diff --git a/Assets/03_Models/Characters/Red/Animations/Roll_UpRight.anim.meta b/Assets/03_Models/Characters/Red/Animations/Roll_UpRight.anim.meta
new file mode 100644
index 0000000..782802f
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Roll_UpRight.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 257b5420c66878e4aa1fb5cdd6ca2b14
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Slash_DownLeft.anim b/Assets/03_Models/Characters/Red/Animations/Slash_DownLeft.anim
new file mode 100644
index 0000000..4691e80
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Slash_DownLeft.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b538c243a5c9095083c5fae3ae85151be8cc251e53e3eeac0bccab1642b6cfd8
+size 5651
diff --git a/Assets/03_Models/Characters/Red/Animations/Slash_DownLeft.anim.meta b/Assets/03_Models/Characters/Red/Animations/Slash_DownLeft.anim.meta
new file mode 100644
index 0000000..46df8f7
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Slash_DownLeft.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 152b0967f969b07488a3de28d1922062
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Slash_DownRight.anim b/Assets/03_Models/Characters/Red/Animations/Slash_DownRight.anim
new file mode 100644
index 0000000..5c31287
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Slash_DownRight.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6d726befda33398312083ef17a46f2c5e8dce034dc00233efcb8f4aa374d6bf3
+size 5644
diff --git a/Assets/03_Models/Characters/Red/Animations/Slash_DownRight.anim.meta b/Assets/03_Models/Characters/Red/Animations/Slash_DownRight.anim.meta
new file mode 100644
index 0000000..b8983b3
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Slash_DownRight.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f20be9e9358bead4b841d51d228eda47
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Slash_UpLeft.anim b/Assets/03_Models/Characters/Red/Animations/Slash_UpLeft.anim
new file mode 100644
index 0000000..d1a34b6
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Slash_UpLeft.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d42326cc448b9b51bcdabcccf2b84c9c7fa11579fe8f19af5a59e05dee2ac139
+size 5649
diff --git a/Assets/03_Models/Characters/Red/Animations/Slash_UpLeft.anim.meta b/Assets/03_Models/Characters/Red/Animations/Slash_UpLeft.anim.meta
new file mode 100644
index 0000000..a65c551
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Slash_UpLeft.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6ed3d8ee60b1792428e40711049b1c58
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Animations/Slash_UpRight.anim b/Assets/03_Models/Characters/Red/Animations/Slash_UpRight.anim
new file mode 100644
index 0000000..a345ac5
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Slash_UpRight.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f994ab123f591a6b0034b1beb8b932ecce878e5aabc1f4e7f33b5d5cc8607c83
+size 5652
diff --git a/Assets/03_Models/Characters/Red/Animations/Slash_UpRight.anim.meta b/Assets/03_Models/Characters/Red/Animations/Slash_UpRight.anim.meta
new file mode 100644
index 0000000..6bfe4b0
--- /dev/null
+++ b/Assets/03_Models/Characters/Red/Animations/Slash_UpRight.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c5e189d0be90850438371df9e728596c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/03_Models/Characters/Red/Weapon/Sword_DownLeft.png.meta b/Assets/03_Models/Characters/Red/Weapon/Sword_DownLeft.png.meta
index 4064634..1dc584c 100644
--- a/Assets/03_Models/Characters/Red/Weapon/Sword_DownLeft.png.meta
+++ b/Assets/03_Models/Characters/Red/Weapon/Sword_DownLeft.png.meta
@@ -51,7 +51,7 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 64
+ spritePixelsToUnits: 32
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
@@ -155,7 +155,7 @@ TextureImporter:
name: Sword_DownLeft_0
rect:
serializedVersion: 2
- x: 64
+ x: 0
y: 0
width: 64
height: 64
@@ -177,7 +177,7 @@ TextureImporter:
name: Sword_DownLeft_1
rect:
serializedVersion: 2
- x: 128
+ x: 64
y: 0
width: 64
height: 64
@@ -199,7 +199,7 @@ TextureImporter:
name: Sword_DownLeft_2
rect:
serializedVersion: 2
- x: 192
+ x: 128
y: 0
width: 64
height: 64
@@ -221,7 +221,7 @@ TextureImporter:
name: Sword_DownLeft_3
rect:
serializedVersion: 2
- x: 256
+ x: 192
y: 0
width: 64
height: 64
@@ -239,6 +239,28 @@ TextureImporter:
indices:
edges: []
weights: []
+ - serializedVersion: 2
+ name: Sword_DownLeft_4
+ rect:
+ serializedVersion: 2
+ x: 256
+ y: 0
+ width: 64
+ height: 64
+ alignment: 0
+ pivot: {x: 0.5, y: 0.5}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: 0
+ bones: []
+ spriteID: a7bc5f13e1bc11a468219288115c053c
+ internalID: -1583461277
+ vertices: []
+ indices:
+ edges: []
+ weights: []
outline: []
customData:
physicsShape: []
@@ -253,12 +275,13 @@ TextureImporter:
spriteCustomMetadata:
entries:
- key: SpriteEditor.SliceSettings
- value: '{"sliceOnImport":false,"gridCellCount":{"x":5.0,"y":1.0},"gridSpriteSize":{"x":64.0,"y":64.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":2,"keepEmptyRects":false,"isAlternate":false}'
+ value: '{"sliceOnImport":false,"gridCellCount":{"x":5.0,"y":1.0},"gridSpriteSize":{"x":64.0,"y":64.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":2,"keepEmptyRects":true,"isAlternate":false}'
nameFileIdTable:
Sword_DownLeft_0: -2142824480320328751
Sword_DownLeft_1: 317373939
Sword_DownLeft_2: -1931335359
Sword_DownLeft_3: -1828721921
+ Sword_DownLeft_4: -1583461277
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
diff --git a/Assets/03_Models/Characters/Red/Weapon/Sword_DownRight.png.meta b/Assets/03_Models/Characters/Red/Weapon/Sword_DownRight.png.meta
index 7ee7a4e..4e41e7c 100644
--- a/Assets/03_Models/Characters/Red/Weapon/Sword_DownRight.png.meta
+++ b/Assets/03_Models/Characters/Red/Weapon/Sword_DownRight.png.meta
@@ -51,7 +51,7 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 64
+ spritePixelsToUnits: 32
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
@@ -155,7 +155,7 @@ TextureImporter:
name: Sword_DownRight_0
rect:
serializedVersion: 2
- x: 64
+ x: 0
y: 0
width: 64
height: 64
@@ -177,7 +177,7 @@ TextureImporter:
name: Sword_DownRight_1
rect:
serializedVersion: 2
- x: 128
+ x: 64
y: 0
width: 64
height: 64
@@ -199,7 +199,7 @@ TextureImporter:
name: Sword_DownRight_2
rect:
serializedVersion: 2
- x: 192
+ x: 128
y: 0
width: 64
height: 64
@@ -221,7 +221,7 @@ TextureImporter:
name: Sword_DownRight_3
rect:
serializedVersion: 2
- x: 256
+ x: 192
y: 0
width: 64
height: 64
@@ -239,6 +239,28 @@ TextureImporter:
indices:
edges: []
weights: []
+ - serializedVersion: 2
+ name: Sword_DownRight_4
+ rect:
+ serializedVersion: 2
+ x: 256
+ y: 0
+ width: 64
+ height: 64
+ alignment: 0
+ pivot: {x: 0.5, y: 0.5}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: 0
+ bones: []
+ spriteID: 3a4dcd1f8258f5c47aaefb32bac4f108
+ internalID: -1745549409
+ vertices: []
+ indices:
+ edges: []
+ weights: []
outline: []
customData:
physicsShape: []
@@ -253,12 +275,13 @@ TextureImporter:
spriteCustomMetadata:
entries:
- key: SpriteEditor.SliceSettings
- value: '{"sliceOnImport":false,"gridCellCount":{"x":5.0,"y":1.0},"gridSpriteSize":{"x":64.0,"y":64.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":2,"keepEmptyRects":false,"isAlternate":false}'
+ value: '{"sliceOnImport":false,"gridCellCount":{"x":5.0,"y":1.0},"gridSpriteSize":{"x":64.0,"y":64.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":2,"keepEmptyRects":true,"isAlternate":false}'
nameFileIdTable:
Sword_DownRight_0: 2856535245279941732
Sword_DownRight_1: 719989901
Sword_DownRight_2: -2017814075
Sword_DownRight_3: 2133557999
+ Sword_DownRight_4: -1745549409
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
diff --git a/Assets/03_Models/Characters/Red/Weapon/Sword_UpLeft.png.meta b/Assets/03_Models/Characters/Red/Weapon/Sword_UpLeft.png.meta
index 776c6d2..fbe652f 100644
--- a/Assets/03_Models/Characters/Red/Weapon/Sword_UpLeft.png.meta
+++ b/Assets/03_Models/Characters/Red/Weapon/Sword_UpLeft.png.meta
@@ -51,7 +51,7 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 64
+ spritePixelsToUnits: 32
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
@@ -155,7 +155,7 @@ TextureImporter:
name: Sword_UpLeft_0
rect:
serializedVersion: 2
- x: 64
+ x: 0
y: 0
width: 64
height: 64
@@ -177,7 +177,7 @@ TextureImporter:
name: Sword_UpLeft_1
rect:
serializedVersion: 2
- x: 128
+ x: 64
y: 0
width: 64
height: 64
@@ -199,7 +199,7 @@ TextureImporter:
name: Sword_UpLeft_2
rect:
serializedVersion: 2
- x: 192
+ x: 128
y: 0
width: 64
height: 64
@@ -221,7 +221,7 @@ TextureImporter:
name: Sword_UpLeft_3
rect:
serializedVersion: 2
- x: 256
+ x: 192
y: 0
width: 64
height: 64
@@ -239,6 +239,28 @@ TextureImporter:
indices:
edges: []
weights: []
+ - serializedVersion: 2
+ name: Sword_UpLeft_4
+ rect:
+ serializedVersion: 2
+ x: 256
+ y: 0
+ width: 64
+ height: 64
+ alignment: 0
+ pivot: {x: 0.5, y: 0.5}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: 0
+ bones: []
+ spriteID: 01ad3643a1c0b824786eba0192f81773
+ internalID: -379260504
+ vertices: []
+ indices:
+ edges: []
+ weights: []
outline: []
customData:
physicsShape: []
@@ -253,12 +275,13 @@ TextureImporter:
spriteCustomMetadata:
entries:
- key: SpriteEditor.SliceSettings
- value: '{"sliceOnImport":false,"gridCellCount":{"x":5.0,"y":1.0},"gridSpriteSize":{"x":64.0,"y":64.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":2,"keepEmptyRects":false,"isAlternate":false}'
+ value: '{"sliceOnImport":false,"gridCellCount":{"x":5.0,"y":1.0},"gridSpriteSize":{"x":64.0,"y":64.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":2,"keepEmptyRects":true,"isAlternate":false}'
nameFileIdTable:
Sword_UpLeft_0: 1474592964514004401
Sword_UpLeft_1: 644872843
Sword_UpLeft_2: -1934979349
Sword_UpLeft_3: -1038432139
+ Sword_UpLeft_4: -379260504
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
diff --git a/Assets/03_Models/Characters/Red/Weapon/Sword_UpRight.png.meta b/Assets/03_Models/Characters/Red/Weapon/Sword_UpRight.png.meta
index ac03528..3ea752c 100644
--- a/Assets/03_Models/Characters/Red/Weapon/Sword_UpRight.png.meta
+++ b/Assets/03_Models/Characters/Red/Weapon/Sword_UpRight.png.meta
@@ -51,7 +51,7 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 64
+ spritePixelsToUnits: 32
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
@@ -155,7 +155,7 @@ TextureImporter:
name: Sword_UpRight_0
rect:
serializedVersion: 2
- x: 64
+ x: 0
y: 0
width: 64
height: 64
@@ -177,7 +177,7 @@ TextureImporter:
name: Sword_UpRight_1
rect:
serializedVersion: 2
- x: 128
+ x: 64
y: 0
width: 64
height: 64
@@ -199,7 +199,7 @@ TextureImporter:
name: Sword_UpRight_2
rect:
serializedVersion: 2
- x: 192
+ x: 128
y: 0
width: 64
height: 64
@@ -221,7 +221,7 @@ TextureImporter:
name: Sword_UpRight_3
rect:
serializedVersion: 2
- x: 256
+ x: 192
y: 0
width: 64
height: 64
@@ -239,6 +239,28 @@ TextureImporter:
indices:
edges: []
weights: []
+ - serializedVersion: 2
+ name: Sword_UpRight_4
+ rect:
+ serializedVersion: 2
+ x: 256
+ y: 0
+ width: 64
+ height: 64
+ alignment: 0
+ pivot: {x: 0.5, y: 0.5}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: 0
+ bones: []
+ spriteID: d7bcaceb770862643b062cf7d656a505
+ internalID: 1754124492
+ vertices: []
+ indices:
+ edges: []
+ weights: []
outline: []
customData:
physicsShape: []
@@ -253,12 +275,13 @@ TextureImporter:
spriteCustomMetadata:
entries:
- key: SpriteEditor.SliceSettings
- value: '{"sliceOnImport":false,"gridCellCount":{"x":5.0,"y":1.0},"gridSpriteSize":{"x":64.0,"y":64.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":2,"keepEmptyRects":false,"isAlternate":false}'
+ value: '{"sliceOnImport":false,"gridCellCount":{"x":5.0,"y":1.0},"gridSpriteSize":{"x":64.0,"y":64.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":2,"keepEmptyRects":true,"isAlternate":false}'
nameFileIdTable:
Sword_UpRight_0: 5894810292097335965
Sword_UpRight_1: 1272279361
Sword_UpRight_2: -1561795567
Sword_UpRight_3: 201452026
+ Sword_UpRight_4: 1754124492
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
diff --git a/Assets/09_Audio.meta b/Assets/09_Audio.meta
new file mode 100644
index 0000000..a23990f
--- /dev/null
+++ b/Assets/09_Audio.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e572b246d3f2f1043918501268641500
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/09_Audio/MainMixer.mixer b/Assets/09_Audio/MainMixer.mixer
new file mode 100644
index 0000000..98dc411
--- /dev/null
+++ b/Assets/09_Audio/MainMixer.mixer
@@ -0,0 +1,179 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!244 &-5324969920446821613
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 9574d297d13868d4a993c12a8461a157
+ m_EffectName: Attenuation
+ m_MixLevel: d0dc888f3ffdd51419b21cf8116c9783
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!244 &-2244843061670963658
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 7aa65ca0d8734b84da33bb87f2db6e31
+ m_EffectName: Attenuation
+ m_MixLevel: dc896b3ce0669f6488cf7aedba27a148
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!243 &-732110702885293871
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Voice
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: 44920747a3ab3fb4e8294cc897b96073
+ m_Children: []
+ m_Volume: 2921b75c2c25e804dad1bd0ab65ad650
+ m_Pitch: f3bafea5ffc5a614aabe7c17fc2cc933
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: 6077900021449352154}
+ m_UserColorIndex: 0
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!241 &24100000
+AudioMixerController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: MainMixer
+ m_OutputGroup: {fileID: 0}
+ m_MasterGroup: {fileID: 24300002}
+ m_Snapshots:
+ - {fileID: 24500006}
+ m_StartSnapshot: {fileID: 24500006}
+ m_SuspendThreshold: -80
+ m_EnableSuspend: 1
+ m_UpdateMode: 0
+ m_ExposedParameters:
+ - guid: 259374c027a846e419980ff5c7f6eb81
+ name: BGMVolume
+ - guid: 6a450b06adfd9284382a3a61e23c6089
+ name: SFXVolume
+ - guid: 2921b75c2c25e804dad1bd0ab65ad650
+ name: VoiceVolume
+ m_AudioMixerGroupViews:
+ - guids:
+ - 3507131a4c840994db1f00672bd38bb0
+ - 9935e666be825534b836309939f9ece5
+ - 2895b9400835eee428ed5662db5efdeb
+ - 44920747a3ab3fb4e8294cc897b96073
+ name: View
+ m_CurrentViewIndex: 0
+ m_TargetSnapshot: {fileID: 24500006}
+--- !u!243 &24300002
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Master
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: 3507131a4c840994db1f00672bd38bb0
+ m_Children:
+ - {fileID: 3598538316407597431}
+ - {fileID: 3948324488117445298}
+ - {fileID: -732110702885293871}
+ m_Volume: 31b10d7c75816784ebf9c93be7e952f8
+ m_Pitch: b5e50300426506b42acf6a11ec8a29b2
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: 24400004}
+ m_UserColorIndex: 0
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!244 &24400004
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 9a952eb33861fa0419edf8be57102413
+ m_EffectName: Attenuation
+ m_MixLevel: 2d6983b9cd7ba7741943906d93581642
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!245 &24500006
+AudioMixerSnapshotController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Snapshot
+ m_AudioMixer: {fileID: 24100000}
+ m_SnapshotID: 40184ba2472f2014487e567ca80e1b31
+ m_FloatValues: {}
+ m_TransitionOverrides: {}
+--- !u!243 &3598538316407597431
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: BGM
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: 9935e666be825534b836309939f9ece5
+ m_Children: []
+ m_Volume: 259374c027a846e419980ff5c7f6eb81
+ m_Pitch: 79ca8e4cb3a30a144b7ca5a96ab0ba9c
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: -2244843061670963658}
+ m_UserColorIndex: 0
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!243 &3948324488117445298
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: SFX
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: 2895b9400835eee428ed5662db5efdeb
+ m_Children: []
+ m_Volume: 6a450b06adfd9284382a3a61e23c6089
+ m_Pitch: 7b71e76385eef9e4887f872dc178306a
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: -5324969920446821613}
+ m_UserColorIndex: 0
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!244 &6077900021449352154
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: b6905761785874b4d8de3d028b7d1f60
+ m_EffectName: Attenuation
+ m_MixLevel: 621171f7bf0ef5646a0a14d5af3ba367
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
diff --git a/Assets/09_Audio/MainMixer.mixer.meta b/Assets/09_Audio/MainMixer.mixer.meta
new file mode 100644
index 0000000..b06261d
--- /dev/null
+++ b/Assets/09_Audio/MainMixer.mixer.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 89bd4c4e531e0e74ca5ddc9017655ac4
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 24100000
+ userData:
+ assetBundleName:
+ assetBundleVariant: