From b2cceb5b270d21a704955758eb530917ce28bb03 Mon Sep 17 00:00:00 2001 From: sharedacc520k Date: Mon, 13 Apr 2026 01:42:32 +0900 Subject: [PATCH] =?UTF-8?q?2026-04-13=20=EC=8A=A4=ED=82=AC=EC=8B=9C?= =?UTF-8?q?=EC=8A=A4=ED=85=9C=20=EC=A7=84=ED=96=89=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/01_Scenes/GameScene.unity | 4 +- Assets/02_Scripts/Item/Item.cs | 5 +- Assets/02_Scripts/Item/ItemInstance.cs | 7 +- .../Managers/Global/InputManager.cs | 52 +- .../02_Scripts/Managers/Local/LevelManager.cs | 42 + .../Controllers/PlayerCharacterController.cs | 35 + Assets/02_Scripts/Player/Weapon/Weapon.cs | 3 +- Assets/02_Scripts/Skill/Data/SkillData.cs | 9 +- Assets/02_Scripts/Skill/SkillInstance.cs | 10 +- Assets/02_Scripts/Skill/SkillModule.cs | 122 ++- Assets/02_Scripts/_Shared/UseableEntry.cs | 18 +- .../FeMale/Animations/Skills.meta | 8 + .../Animations/Skills/FeMale@Magic1.FBX | 3 + .../Animations/Skills/FeMale@Magic1.FBX.meta | 837 ++++++++++++++++++ .../FeMale/Animations/Skills/Magic1.anim | 3 + .../Animations/Skills/Magic1.anim.meta} | 4 +- .../Player_Gold_AnimController.controller | 90 +- Assets/06_Skills/Data/Active/EnergyBeam.asset | 4 +- .../Prefabs/Decals/AreaIndicator_Decal.prefab | 4 +- .../98_Input/InputSystem_Actions.inputactions | 20 + 20 files changed, 1243 insertions(+), 37 deletions(-) create mode 100644 Assets/05_Characters/FeMale/Animations/Skills.meta create mode 100644 Assets/05_Characters/FeMale/Animations/Skills/FeMale@Magic1.FBX create mode 100644 Assets/05_Characters/FeMale/Animations/Skills/FeMale@Magic1.FBX.meta create mode 100644 Assets/05_Characters/FeMale/Animations/Skills/Magic1.anim rename Assets/{06_Skills/Data/Meteor.asset.meta => 05_Characters/FeMale/Animations/Skills/Magic1.anim.meta} (64%) diff --git a/Assets/01_Scenes/GameScene.unity b/Assets/01_Scenes/GameScene.unity index 783f526..63cd54e 100644 --- a/Assets/01_Scenes/GameScene.unity +++ b/Assets/01_Scenes/GameScene.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe635f1ad77cde2f46f07dcb4d0d72de127ea03ab3ab8d3e723708ff981bbe06 -size 510251 +oid sha256:86dfb503c9aeb479cfd1f3e5f9e688efa09567325ff2d709a15470ca2b341d55 +size 508886 diff --git a/Assets/02_Scripts/Item/Item.cs b/Assets/02_Scripts/Item/Item.cs index 9a4b222..e0aa5d4 100644 --- a/Assets/02_Scripts/Item/Item.cs +++ b/Assets/02_Scripts/Item/Item.cs @@ -44,8 +44,5 @@ public class Item : UseableEntry public float IntervalDamage; public float IntervalDamageTime; - public override void Use() - { - throw new System.NotImplementedException(); - } + public override IUseableRuntime CreateRuntime() => new ItemInstance(this); } diff --git a/Assets/02_Scripts/Item/ItemInstance.cs b/Assets/02_Scripts/Item/ItemInstance.cs index 5e2f57f..21f363e 100644 --- a/Assets/02_Scripts/Item/ItemInstance.cs +++ b/Assets/02_Scripts/Item/ItemInstance.cs @@ -1,7 +1,7 @@ using UnityEngine; [System.Serializable] -public class ItemInstance +public class ItemInstance : IUseableRuntime { public Item Data; // 원본 ScriptableObject 참조 (이름, 아이콘 등 불변 데이터) @@ -18,4 +18,9 @@ public ItemInstance(Item sourceData, int stack = 1) this.EnhancementLevel = -1;// 기본 강화 수치 (-1은 강화수치가 없는 아이템) this.Durability = -1; // 기본 내구도 (-1은 내구도가 없는 아이템) } + + public void Execute(UseContext ctx) + { + throw new System.NotImplementedException(); + } } diff --git a/Assets/02_Scripts/Managers/Global/InputManager.cs b/Assets/02_Scripts/Managers/Global/InputManager.cs index ebd80f7..10e89b6 100644 --- a/Assets/02_Scripts/Managers/Global/InputManager.cs +++ b/Assets/02_Scripts/Managers/Global/InputManager.cs @@ -26,12 +26,16 @@ public class InputManager : MonoBehaviour public event Action OnNormalAttackEvent; public event Action OnHeavyAttackEvent; public event Action OnInteractionEvent; - public event Action OnKeyDown_SlotQEvent; - public event Action OnKeyDown_SlotEEvent; - public event Action OnKeyDown_SlotREvent; - public event Action OnKeyDown_SlotTEvent; - public event Action OnKeyDown_SlotFEvent; - public event Action OnKeyDown_SlotGEvent; + public event Action OnKeyDown_SlotQEvent; + public event Action OnKeyDown_SlotEEvent; + public event Action OnKeyDown_SlotREvent; + public event Action OnKeyDown_SlotTEvent; + public event Action OnKeyDown_SlotFEvent; + public event Action OnKeyDown_SlotGEvent; + public event Action OnAreaConfirmEvent; // Remote 스킬 범위 확정 + + // 범위 지정 중 기본 공격 차단용 플래그 (SkillModule이 제어) + public bool SuppressNormalAttack { get; set; } //키조작 @@ -119,6 +123,8 @@ public void SetCharacterInputMap(string mapName) BindActionCharacter("UseSlot_F",OnKeyDown_Slot); BindActionCharacter("UseSlot_G",OnKeyDown_Slot); + BindActionCharacter("AreaConfirm", OnAreaConfirm); + BindActionCharacter("Interaction", OnInteraction); BindActionCharacter("OnkeyDown_IKey", OnKeyDown_IKey); @@ -224,6 +230,7 @@ private void OnDodge(InputAction.CallbackContext ctx) private void OnNormalAttack(InputAction.CallbackContext ctx) { + if (SuppressNormalAttack) return; OnNormalAttackEvent?.Invoke(); } @@ -238,11 +245,40 @@ private void OnInteraction(InputAction.CallbackContext ctx) OnInteractionEvent?.Invoke(); } + private void OnAreaConfirm(InputAction.CallbackContext ctx) + { + if (ctx.started) + OnAreaConfirmEvent?.Invoke(InputState.Started); + } + private void OnKeyDown_Slot(InputAction.CallbackContext ctx) { - if(ctx.started) + if (ctx.started) { - + if (ctx.action.name == "UseSlot_Q") + { + OnKeyDown_SlotQEvent?.Invoke(InputState.Started); + } + else if (ctx.action.name == "UseSlot_E") + { + OnKeyDown_SlotEEvent?.Invoke(InputState.Started); + } + else if (ctx.action.name == "UseSlot_R") + { + OnKeyDown_SlotREvent?.Invoke(InputState.Started); + } + else if (ctx.action.name == "UseSlot_T") + { + OnKeyDown_SlotTEvent?.Invoke(InputState.Started); + } + else if (ctx.action.name == "UseSlot_F") + { + OnKeyDown_SlotFEvent?.Invoke(InputState.Started); + } + else if (ctx.action.name == "UseSlot_G") + { + OnKeyDown_SlotGEvent?.Invoke(InputState.Started); + } } } #endregion diff --git a/Assets/02_Scripts/Managers/Local/LevelManager.cs b/Assets/02_Scripts/Managers/Local/LevelManager.cs index 30b6924..b4292bd 100644 --- a/Assets/02_Scripts/Managers/Local/LevelManager.cs +++ b/Assets/02_Scripts/Managers/Local/LevelManager.cs @@ -109,6 +109,14 @@ public void OnSceneLoaded(Scene scene, LoadSceneMode mode) InputManager.Instance.OnLookEvent += CurrentCharacterController.LookInput; InputManager.Instance.OnDodgeEvent += CurrentCharacterController.DodgeInput; + //스킬 범위 확정 (Remote 스킬) + SkillModule sm = CurrentCharacter.GetComponent(); + if (sm != null) + { + InputManager.Instance.OnAreaConfirmEvent -= sm.AreaConfirmInput; + InputManager.Instance.OnAreaConfirmEvent += sm.AreaConfirmInput; + } + //공격매핑 //InputManager.Instance.OnNormalAttackEvent; //InputManager.Instance.OnHeavyAttackEvent; @@ -134,6 +142,40 @@ private void ApplyCharacterInfo(PlayerCharacterController pcc, UserCharacter uc) pcc.PlayerCharacterIdentity.IsDefaultControl = uc.DefaultControl; } + public void BindSlotAction(string slotName,Action slotUseAction) + { + if (slotName == "UseSlot_Q") + { + InputManager.Instance.OnKeyDown_SlotQEvent -= slotUseAction; + InputManager.Instance.OnKeyDown_SlotQEvent += slotUseAction; + } + else if (slotName == "UseSlot_E") + { + InputManager.Instance.OnKeyDown_SlotEEvent -= slotUseAction; + InputManager.Instance.OnKeyDown_SlotEEvent += slotUseAction; + } + else if (slotName == "UseSlot_R") + { + InputManager.Instance.OnKeyDown_SlotREvent -= slotUseAction; + InputManager.Instance.OnKeyDown_SlotREvent += slotUseAction; + } + else if (slotName == "UseSlot_T") + { + InputManager.Instance.OnKeyDown_SlotTEvent -= slotUseAction; + InputManager.Instance.OnKeyDown_SlotTEvent += slotUseAction; + } + else if (slotName == "UseSlot_F") + { + InputManager.Instance.OnKeyDown_SlotFEvent -= slotUseAction; + InputManager.Instance.OnKeyDown_SlotFEvent += slotUseAction; + } + else if (slotName == "UseSlot_G") + { + InputManager.Instance.OnKeyDown_SlotGEvent -= slotUseAction; + InputManager.Instance.OnKeyDown_SlotGEvent += slotUseAction; + } + } + private void OnDestroy() { if(InputManager.Instance != null) diff --git a/Assets/02_Scripts/Player/Controllers/PlayerCharacterController.cs b/Assets/02_Scripts/Player/Controllers/PlayerCharacterController.cs index 1cf08b9..025930c 100644 --- a/Assets/02_Scripts/Player/Controllers/PlayerCharacterController.cs +++ b/Assets/02_Scripts/Player/Controllers/PlayerCharacterController.cs @@ -116,10 +116,45 @@ private void Awake() _renderers = GetComponentsInChildren(); } + // 범위 지정 중 회전모드 복구용 + private PlayerRotationMode _rotationModeBeforeAreaSelect; + + private SkillModule _skillModule; + private void Start() { _stateMachine.SetMaxJumpCount(_maxJumpCount); SetCursorLockState(true); + + // 범위 지정 이벤트 구독 — 회전모드만 토글 (이동은 영향 없음) + _skillModule = GetComponent(); + if (_skillModule != null) + { + _skillModule.OnAreaSelectStarted += HandleAreaSelectStarted; + _skillModule.OnAreaSelectEnded += HandleAreaSelectEnded; + } + } + + private void OnDestroy() + { + if (_skillModule != null) + { + _skillModule.OnAreaSelectStarted -= HandleAreaSelectStarted; + _skillModule.OnAreaSelectEnded -= HandleAreaSelectEnded; + } + } + + private void HandleAreaSelectStarted() + { + _rotationModeBeforeAreaSelect = RotationMode; + RotationMode = PlayerRotationMode.CameraDecoupled; + SetCursorLockState(false); // 마우스 자유 이동 + } + + private void HandleAreaSelectEnded() + { + RotationMode = _rotationModeBeforeAreaSelect; + SetCursorLockState(true); } public void PlayerStart() diff --git a/Assets/02_Scripts/Player/Weapon/Weapon.cs b/Assets/02_Scripts/Player/Weapon/Weapon.cs index a25f31b..b0305f5 100644 --- a/Assets/02_Scripts/Player/Weapon/Weapon.cs +++ b/Assets/02_Scripts/Player/Weapon/Weapon.cs @@ -1,6 +1,7 @@ +using System.Collections.Generic; using UnityEngine; public class Weapon : MonoBehaviour { - private WeaponType weaponType; + public WeaponType WType; } diff --git a/Assets/02_Scripts/Skill/Data/SkillData.cs b/Assets/02_Scripts/Skill/Data/SkillData.cs index c6c282e..1232d16 100644 --- a/Assets/02_Scripts/Skill/Data/SkillData.cs +++ b/Assets/02_Scripts/Skill/Data/SkillData.cs @@ -65,16 +65,16 @@ public class SkillData : UseableEntry [Header("레벨별 수치")] public SkillLevelData[] Levels; + [Header("키 액션 설정")] + public string InputActionName; + public SkillLevelData GetLevelData(int level) { int idx = Mathf.Clamp(level - 1, 0, Levels.Length - 1); return Levels[idx]; } - public override void Use() - { - throw new System.NotImplementedException(); - } + public override IUseableRuntime CreateRuntime() => new SkillInstance(this); } [System.Serializable] @@ -90,6 +90,7 @@ public class SkillLevelData public float ChannelDuration; public float TickInterval; public float TickDamage; + public float ActionDuration; // Attack 상태 지속 시간 (스킬 발동 후 Idle 복귀까지) } public enum SkillType { Active, Passive } diff --git a/Assets/02_Scripts/Skill/SkillInstance.cs b/Assets/02_Scripts/Skill/SkillInstance.cs index 587f3f1..b9bc08a 100644 --- a/Assets/02_Scripts/Skill/SkillInstance.cs +++ b/Assets/02_Scripts/Skill/SkillInstance.cs @@ -1,4 +1,4 @@ -public class SkillInstance +public class SkillInstance : IUseableRuntime { public SkillData Data { get; private set; } public int Level { get; set; } = 1; @@ -23,4 +23,12 @@ public void TickCooldown(float deltaTime) if (CooldownTimer > 0f) CooldownTimer -= deltaTime; } + + public void Execute(UseContext ctx) + { + SkillModule skillModule = ctx.Caster.GetComponent(); //사용자(캐스터)의 스킬 모듈 + if (skillModule == null) return; + + skillModule.SkillInputByData(Data, ctx.UseInputState); + } } diff --git a/Assets/02_Scripts/Skill/SkillModule.cs b/Assets/02_Scripts/Skill/SkillModule.cs index 17a5f6b..5f1dcae 100644 --- a/Assets/02_Scripts/Skill/SkillModule.cs +++ b/Assets/02_Scripts/Skill/SkillModule.cs @@ -1,10 +1,17 @@ +using System; +using System.Collections.Generic; using UnityEngine; +using UnityEngine.InputSystem; public class SkillModule : MonoBehaviour { [SerializeField] private int _maxSlots = 4; [SerializeField] private LayerMask _groundLayer; // 바닥 레이캐스트용 + // 범위 지정 시작/종료 이벤트 (외부에서 RotationMode/UI 등 반응) + public event Action OnAreaSelectStarted; + public event Action OnAreaSelectEnded; + private PlayerStateMachine _stateMachine; private Animator _anim; private Transform _transform; @@ -37,6 +44,18 @@ public class SkillModule : MonoBehaviour public bool IsCasting => _castingSlot >= 0; public bool IsChanneling => _channelingSlot >= 0; + [SerializeField] private List _weaponSkills; + [SerializeField] private Weapon _equippedWeapon; + + private Dictionary _dicSkills = new Dictionary(); + + // 슬롯 이름 → 런타임 매핑 (Dispatcher 테이블) + private Dictionary _skillBindData = new Dictionary(); + + // 퀵슬롯에 바인딩할 슬롯 이름 목록 (스킬용) + private static readonly string[] SkillSlotNames = + { "UseSlot_Q", "UseSlot_E", "UseSlot_R", "UseSlot_T" }; + private void Awake() { _stateMachine = GetComponent(); @@ -47,6 +66,55 @@ private void Awake() _skillEffects = new ISkillEffect[_maxSlots]; } + private void Start() + { + // 무기별 스킬셋 테이블 구성 + foreach (WeaponSkillSet wss in _weaponSkills) + { + _dicSkills[wss.WeaponType] = wss; + } + + // 현재 장착 무기의 스킬셋 로드 (무기 미장착 시 스킬 없음) + if (_equippedWeapon != null + && _dicSkills.TryGetValue(_equippedWeapon.WType, out WeaponSkillSet out_wss) + && out_wss != null) + { + LoadWeaponSkills(out_wss); + RegisterSkillsToQuickslot(out_wss); + } + + // 각 슬롯에 dispatcher를 한 번만 바인딩 (이후 내용물만 _skillBindData로 교체) + foreach (string slotName in SkillSlotNames) + { + string captured = slotName; + GameManager.Instance.Level.BindSlotAction(captured, (state) => DispatchSlot(captured, state)); + } + } + + private void DispatchSlot(string slotName, InputState state) + { + if (!_skillBindData.TryGetValue(slotName, out IUseableRuntime runtime) || runtime == null) + return; + + runtime.Execute(new UseContext + { + Caster = gameObject, + Target = null, + UseInputState = state + }); + } + + private void RegisterSkillsToQuickslot(WeaponSkillSet wss) + { + for (int i = 0; i < SkillSlotNames.Length; i++) + { + if (i < wss.Skills.Count && wss.Skills[i] != null) + _skillBindData[SkillSlotNames[i]] = wss.Skills[i].CreateRuntime(); + else + _skillBindData.Remove(SkillSlotNames[i]); + } + } + private void Update() { TickCooldowns(); @@ -149,9 +217,6 @@ public void AreaConfirmInput(InputState inputState) #endregion #region 발동 분기 - /// - /// ActivationType에 따라 적절한 흐름을 시작 - /// private void BeginActivation(int slotIndex) { SkillInstance skill = _equippedSkills[slotIndex]; @@ -220,6 +285,22 @@ private void ExecuteSkill(int slotIndex) skill.StartCooldown(); _chargeTimer = 0f; _chargingSlot = -1; + + // ActionDuration 경과 후 Idle 복귀 + float duration = skill.CurrentLevelData.ActionDuration; + if (duration > 0f) + { + _ = Util.RunDelayed(duration, () => + { + if (this != null && _stateMachine != null + && _stateMachine.CurrentState == PlayerState.Attack) + _stateMachine.ChangeState(PlayerState.Idle); + }, default); + } + else + { + _stateMachine.ChangeState(PlayerState.Idle); + } } private void ClearRemoteTarget() @@ -416,13 +497,21 @@ private void StartAreaSelect(int slotIndex) float range = skill.CurrentLevelData.Range; _areaIndicator.transform.localScale = new Vector3(range * 2f, range * 2f, range * 2f); } + + // 범위 지정 중에는 좌클릭이 확정 용도로 쓰이므로 기본 공격 차단 + InputManager.Instance.SuppressNormalAttack = true; + + // 이벤트 발행 — 구독자(PlayerCharacterController 등)가 회전모드 등 처리 + OnAreaSelectStarted?.Invoke(); } private void TickAreaSelect() { if (_areaSelectSlot < 0 || _areaIndicator == null) return; - Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); + if (Mouse.current == null) return; + Vector2 mousePos = Mouse.current.position.ReadValue(); + Ray ray = Camera.main.ScreenPointToRay(mousePos); if (Physics.Raycast(ray, out RaycastHit hit, 200f, _groundLayer)) { _areaIndicator.transform.position = hit.point; @@ -444,6 +533,10 @@ private void ConfirmAreaSelect() _areaIndicator = null; _areaSelectSlot = -1; + // 범위 지정 종료 → 기본 공격 복구 + InputManager.Instance.SuppressNormalAttack = false; + OnAreaSelectEnded?.Invoke(); + // ActivationType에 따라 흐름 시작 BeginActivation(slotIndex); } @@ -455,6 +548,10 @@ public void CancelAreaSelect() _areaIndicator = null; _areaSelectSlot = -1; + + // 범위 지정 종료 → 기본 공격 복구 + InputManager.Instance.SuppressNormalAttack = false; + OnAreaSelectEnded?.Invoke(); } #endregion @@ -488,6 +585,23 @@ public SkillInstance GetSkill(int slotIndex) return _equippedSkills[slotIndex]; } + public void SkillInputByData(SkillData data, InputState inputState) + { + int slotIndex = FindSlotByData(data); + if (slotIndex < 0) return; + SkillInput(slotIndex, inputState); + } + + private int FindSlotByData(SkillData data) + { + for (int i = 0; i < _maxSlots; i++) + { + if (_equippedSkills[i] != null && _equippedSkills[i].Data == data) + return i; + } + return -1; + } + public int MaxSlots => _maxSlots; #endregion } diff --git a/Assets/02_Scripts/_Shared/UseableEntry.cs b/Assets/02_Scripts/_Shared/UseableEntry.cs index ee07406..d80b330 100644 --- a/Assets/02_Scripts/_Shared/UseableEntry.cs +++ b/Assets/02_Scripts/_Shared/UseableEntry.cs @@ -1,12 +1,24 @@ using UnityEngine; [System.Serializable] -public abstract class UseableEntry : ScriptableObject +public abstract class UseableEntry : ScriptableObject { [Header("기본 정보")] public string EntryName; [TextArea] public string EntryDesc; public Sprite Icon; - - public abstract void Use(); + + public abstract IUseableRuntime CreateRuntime(); } + +public interface IUseableRuntime +{ + public void Execute(UseContext ctx); +} + +public struct UseContext +{ + public GameObject Caster; + public GameObject Target; + public InputState UseInputState; +} \ No newline at end of file diff --git a/Assets/05_Characters/FeMale/Animations/Skills.meta b/Assets/05_Characters/FeMale/Animations/Skills.meta new file mode 100644 index 0000000..779b9e2 --- /dev/null +++ b/Assets/05_Characters/FeMale/Animations/Skills.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 582a61881874c624a96d1c5567c31fd2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/05_Characters/FeMale/Animations/Skills/FeMale@Magic1.FBX b/Assets/05_Characters/FeMale/Animations/Skills/FeMale@Magic1.FBX new file mode 100644 index 0000000..dc636d6 --- /dev/null +++ b/Assets/05_Characters/FeMale/Animations/Skills/FeMale@Magic1.FBX @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8127ed4ff522f8e1963d3c874e7f9043d38afcf844f56ecc2ff97759f603402c +size 1251248 diff --git a/Assets/05_Characters/FeMale/Animations/Skills/FeMale@Magic1.FBX.meta b/Assets/05_Characters/FeMale/Animations/Skills/FeMale@Magic1.FBX.meta new file mode 100644 index 0000000..bfc87d7 --- /dev/null +++ b/Assets/05_Characters/FeMale/Animations/Skills/FeMale@Magic1.FBX.meta @@ -0,0 +1,837 @@ +fileFormatVersion: 2 +guid: 10bb096a59482b04099bc99981857970 +AssetOrigin: + serializedVersion: 1 + productId: 323032 + packageName: KAWAII ANIMATIONS Cool Action + packageVersion: 1.4.1.2 + assetPath: Assets/KAWAII_ANIMATIOMS_CoolAction/Assets/Animations/Idle/@CA_Idle10_CoolPose2.FBX + uploadId: 862270 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 0 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: Magic1 + takeName: Unreal Take + internalID: 8993902097722301239 + firstFrame: 0 + lastFrame: 270 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 0 + loopBlend: 0 + loopBlendOrientation: 1 + loopBlendPositionY: 1 + loopBlendPositionXZ: 1 + keepOriginalOrientation: 1 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 3 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Upper Leg_L + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Upper Leg_R + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Lower Leg_L + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Lower Leg_R + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Foot_L + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Foot_R + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Chest + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Shoulder_L + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Shoulder_R + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Upper Arm_L + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Upper Arm_R + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Lower Arm_L + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Lower Arm_R + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Hand_L + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Hand_R + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Toes_L + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Toes_R + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Thumb Proximal_L + humanName: Left Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Thumb Intermediate_L + humanName: Left Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Thumb Distal_L + humanName: Left Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Index Proximal_L + humanName: Left Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Index Intermediate_L + humanName: Left Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Index Distal_L + humanName: Left Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Middle Proximal_L + humanName: Left Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Middle Intermediate_L + humanName: Left Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Middle Distal_L + humanName: Left Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Ring Proximal_L + humanName: Left Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Ring Intermediate_L + humanName: Left Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Ring Distal_L + humanName: Left Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Little Proximal_L + humanName: Left Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Little Intermediate_L + humanName: Left Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Little Distal_L + humanName: Left Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Thumb Proximal_R + humanName: Right Thumb Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Thumb Intermediate_R + humanName: Right Thumb Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Thumb Distal_R + humanName: Right Thumb Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Index Proximal_R + humanName: Right Index Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Index Intermediate_R + humanName: Right Index Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Index Distal_R + humanName: Right Index Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Middle Proximal_R + humanName: Right Middle Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Middle Intermediate_R + humanName: Right Middle Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Middle Distal_R + humanName: Right Middle Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Ring Proximal_R + humanName: Right Ring Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Ring Intermediate_R + humanName: Right Ring Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Ring Distal_R + humanName: Right Ring Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Little Proximal_R + humanName: Right Little Proximal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Little Intermediate_R + humanName: Right Little Intermediate + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Little Distal_R + humanName: Right Little Distal + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Upper Chest + humanName: UpperChest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: DummyDoll(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: DummyDoll + parentName: DummyDoll(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: root + parentName: DummyDoll(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: root + position: {x: -6.82121e-15, y: -0.02650445, z: 0.9547189} + rotation: {x: 0.70675755, y: -0.022218937, z: -0.70675725, w: 0.022235028} + scale: {x: 1.000001, y: 0.9999996, z: 0.99999964} + - name: Upper Leg_R + parentName: Hips + position: {x: -0.0000003814697, y: -0.000000104904174, z: -0.111545846} + rotation: {x: 0.040238734, y: 0.99623805, z: -0.07294469, w: -0.023870306} + scale: {x: 1.0000004, y: 1.0000001, z: 1.0000002} + - name: Lower Leg_R + parentName: Upper Leg_R + position: {x: -0.45751885, y: -0.0000002837181, z: 0.0000002002716} + rotation: {x: 0.000000029159045, y: 0.0000004938982, z: 0.009436982, w: 0.9999555} + scale: {x: 1, y: 1, z: 1} + - name: Foot_R + parentName: Lower Leg_R + position: {x: -0.4170541, y: -0.000000035762785, z: -0.00000021934508} + rotation: {x: 0.000024485393, y: -0.022163179, z: -0.00093511137, w: 0.99975395} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Toes_R + parentName: Foot_R + position: {x: -0.06536754, y: 0.13628979, z: -0.0005054855} + rotation: {x: 0.00000010185003, y: 0.0000004479822, z: -0.7071068, w: 0.70710677} + scale: {x: 0.9999996, y: 0.9999996, z: 1} + - name: Spine + parentName: Hips + position: {x: -0.057038344, y: -0.0005969906, z: -0.000000038895376} + rotation: {x: 0.0000022535664, y: -0.00000020723392, z: -0.11373023, w: 0.9935117} + scale: {x: 1.0000002, y: 1.0000004, z: 0.9999999} + - name: Chest + parentName: Spine + position: {x: -0.1259011, y: 0.000000057220458, z: -0.000000088019114} + rotation: {x: 0.000000326137, y: -0.00000021156718, z: 0.11285861, w: 0.9936111} + scale: {x: 1, y: 1, z: 1} + - name: Upper Chest + parentName: Chest + position: {x: -0.12618561, y: 0, z: -0.00000008265287} + rotation: {x: 0.00000017826137, y: 0.0000010016455, z: 0.085924834, w: 0.99630165} + scale: {x: 0.99999994, y: 0.99999994, z: 1} + - name: Shoulder_R + parentName: Upper Chest + position: {x: -0.19631058, y: -0.011195851, z: -0.009313629} + rotation: {x: 0.65799737, y: 0.012223459, z: 0.75235724, w: 0.029132664} + scale: {x: 1, y: 1.0000002, z: 1.0000001} + - name: Upper Arm_R + parentName: Shoulder_R + position: {x: -0.1529511, y: 0.000000019073486, z: -0.00000030517577} + rotation: {x: -0.07702228, y: -0.045692272, z: 0.008915636, w: 0.99594194} + scale: {x: 0.99999994, y: 0.99999994, z: 1} + - name: Lower Arm_R + parentName: Upper Arm_R + position: {x: -0.27082127, y: -0.0000000047683715, z: -0.00000030517577} + rotation: {x: 0.0003026275, y: -0.0051772376, z: 0.04864607, w: 0.99880266} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Hand_R + parentName: Lower Arm_R + position: {x: -0.26095122, y: -0.000000019073486, z: -0.00000015258789} + rotation: {x: 0.5919214, y: 0.05426045, z: -0.07947171, w: 0.8002307} + scale: {x: 1, y: 1, z: 1} + - name: Thumb Proximal_R + parentName: Hand_R + position: {x: -0.023121718, y: 0.014302216, z: 0.025489386} + rotation: {x: -0.5153376, y: 0.27507347, z: 0.24598812, w: 0.77346736} + scale: {x: 1, y: 1, z: 1} + - name: Thumb Intermediate_R + parentName: Thumb Proximal_R + position: {x: -0.046355132, y: 0, z: 0} + rotation: {x: -0.0002379117, y: -0.010322337, z: -0.032720476, w: 0.9994112} + scale: {x: 1, y: 1, z: 1} + - name: Thumb Distal_R + parentName: Thumb Intermediate_R + position: {x: -0.02708561, y: 0, z: 0} + rotation: {x: 0.00027550853, y: 0.00007376621, z: -0.07339386, w: 0.997303} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Index Proximal_R + parentName: Hand_R + position: {x: -0.08788635, y: -0.0027752684, z: 0.025675429} + rotation: {x: -0.07022335, y: -0.011976093, z: -0.03159469, w: 0.996959} + scale: {x: 1, y: 1, z: 1} + - name: Index Intermediate_R + parentName: Index Proximal_R + position: {x: -0.045769997, y: -0.00000015258789, z: -0.000000038146972} + rotation: {x: 0.000885106, y: 0.000052466952, z: -0.038343985, w: 0.99926424} + scale: {x: 1, y: 1, z: 1} + - name: Index Distal_R + parentName: Index Intermediate_R + position: {x: -0.024790192, y: 0.00000015258789, z: 0} + rotation: {x: -0.0003399891, y: 0.00047517155, z: 0.0027345195, w: 0.9999961} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Middle Proximal_R + parentName: Hand_R + position: {x: -0.086268306, y: -0.007767639, z: 0.0015431213} + rotation: {x: 0.03081698, y: -0.01612433, z: -0.02781587, w: 0.9990078} + scale: {x: 1, y: 1, z: 1} + - name: Middle Intermediate_R + parentName: Middle Proximal_R + position: {x: -0.049218368, y: 0, z: -0.000000019073486} + rotation: {x: -0.001065745, y: 0.0006256154, z: -0.035168123, w: 0.99938065} + scale: {x: 1, y: 1, z: 1} + - name: Middle Distal_R + parentName: Middle Intermediate_R + position: {x: -0.028990936, y: 0, z: 0} + rotation: {x: 0.00010087575, y: -0.00009773458, z: -0.023277627, w: 0.99972904} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Ring Proximal_R + parentName: Hand_R + position: {x: -0.079506226, y: -0.0018624878, z: -0.019933814} + rotation: {x: 0.114333056, y: -0.029358352, z: -0.02064766, w: 0.9927939} + scale: {x: 1, y: 1, z: 1} + - name: Ring Intermediate_R + parentName: Ring Proximal_R + position: {x: -0.042541236, y: -0.00000030517577, z: 0.000000019073486} + rotation: {x: 0.0011102251, y: 0.00060450047, z: -0.03187894, w: 0.9994909} + scale: {x: 1, y: 1, z: 1} + - name: Ring Distal_R + parentName: Ring Intermediate_R + position: {x: -0.03230427, y: 0, z: 0.000000019073486} + rotation: {x: 0.001957161, y: -0.0021207754, z: -0.040364835, w: 0.99918085} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Little Proximal_R + parentName: Hand_R + position: {x: -0.07310257, y: 0.009476013, z: -0.036707878} + rotation: {x: 0.22339673, y: -0.03582061, z: -0.008547372, w: 0.9740317} + scale: {x: 1, y: 1, z: 1} + - name: Little Intermediate_R + parentName: Little Proximal_R + position: {x: -0.028883476, y: 0.00000015258789, z: 0} + rotation: {x: 0.0005747375, y: -0.0003388187, z: -0.03467814, w: 0.99939835} + scale: {x: 1, y: 1, z: 1} + - name: Little Distal_R + parentName: Little Intermediate_R + position: {x: -0.017963257, y: 0.00000015258789, z: -0.000000076293944} + rotation: {x: -0.00042258337, y: -0.00027532896, z: -0.028401475, w: 0.9995965} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Shoulder_L + parentName: Upper Chest + position: {x: -0.19631058, y: -0.011195831, z: 0.009313463} + rotation: {x: -0.65799737, y: -0.012223926, z: 0.7523572, w: 0.029132215} + scale: {x: 1, y: 1.0000001, z: 1.0000001} + - name: Upper Arm_L + parentName: Shoulder_L + position: {x: -0.15295114, y: 0.000000076293944, z: 0} + rotation: {x: 0.077022836, y: 0.045693275, z: 0.008920248, w: 0.9959418} + scale: {x: 0.99999994, y: 0.99999994, z: 1} + - name: Lower Arm_L + parentName: Upper Arm_L + position: {x: -0.27082127, y: -0.000000019073486, z: -0.00000015258789} + rotation: {x: -0.0003028288, y: 0.0051775225, z: 0.048645057, w: 0.99880266} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Hand_L + parentName: Lower Arm_L + position: {x: -0.2609512, y: -0.000000009536743, z: 0} + rotation: {x: -0.5919214, y: -0.054261003, z: -0.07947178, w: 0.8002306} + scale: {x: 1, y: 1, z: 1} + - name: Thumb Proximal_L + parentName: Hand_L + position: {x: -0.023121757, y: 0.014302216, z: -0.025489425} + rotation: {x: 0.5153367, y: -0.27507105, z: 0.24598962, w: 0.7734683} + scale: {x: 0.9999998, y: 0.9999998, z: 1} + - name: Thumb Intermediate_L + parentName: Thumb Proximal_L + position: {x: -0.046355132, y: 0, z: -0.00000015258789} + rotation: {x: 0.00023803097, y: 0.010317333, z: -0.03271555, w: 0.99941146} + scale: {x: 1, y: 1, z: 1} + - name: Thumb Distal_L + parentName: Thumb Intermediate_L + position: {x: -0.027085647, y: 0.000000009536743, z: 0} + rotation: {x: -0.00027762592, y: -0.000074311625, z: -0.07339762, w: 0.9973028} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Index Proximal_L + parentName: Hand_L + position: {x: -0.08788647, y: -0.0027752684, z: -0.025675353} + rotation: {x: 0.07022479, y: 0.011974281, z: -0.031590175, w: 0.996959} + scale: {x: 0.9999998, y: 0.9999998, z: 1} + - name: Index Intermediate_L + parentName: Index Proximal_L + position: {x: -0.045769997, y: 0.00000015258789, z: 0} + rotation: {x: -0.0008913944, y: -0.00004922782, z: -0.03834936, w: 0.999264} + scale: {x: 1, y: 1, z: 1} + - name: Index Distal_L + parentName: Index Intermediate_L + position: {x: -0.024790496, y: 0, z: 0} + rotation: {x: 0.0003467974, y: -0.00048447173, z: 0.0027402185, w: 0.99999607} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Middle Proximal_L + parentName: Hand_L + position: {x: -0.086268425, y: -0.007767639, z: -0.0015430831} + rotation: {x: -0.030818447, y: 0.01612563, z: -0.027813198, w: 0.9990078} + scale: {x: 0.9999998, y: 0.9999998, z: 1} + - name: Middle Intermediate_L + parentName: Middle Proximal_L + position: {x: -0.049218215, y: 0, z: 0} + rotation: {x: 0.0010690034, y: -0.00062743924, z: -0.03517249, w: 0.9993805} + scale: {x: 1, y: 1, z: 1} + - name: Middle Distal_L + parentName: Middle Intermediate_L + position: {x: -0.028990822, y: 0.00000015258789, z: 0} + rotation: {x: -0.000100977646, y: 0.00009784128, z: -0.023277435, w: 0.99972904} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Ring Proximal_L + parentName: Hand_L + position: {x: -0.07950626, y: -0.0018623351, z: 0.01993389} + rotation: {x: -0.11433267, y: 0.029356854, z: -0.020644497, w: 0.99279404} + scale: {x: 0.9999998, y: 0.9999998, z: 1} + - name: Ring Intermediate_L + parentName: Ring Proximal_L + position: {x: -0.042541273, y: -0.00000015258789, z: -0.000000009536743} + rotation: {x: -0.0011089139, y: -0.00060523074, z: -0.03188464, w: 0.99949074} + scale: {x: 1, y: 1, z: 1} + - name: Ring Distal_L + parentName: Ring Intermediate_L + position: {x: -0.032304306, y: 0, z: -0.000000009536743} + rotation: {x: -0.00195807, y: 0.0021218343, z: -0.0403652, w: 0.99918085} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Little Proximal_L + parentName: Hand_L + position: {x: -0.07310261, y: 0.009476165, z: 0.036707878} + rotation: {x: -0.2233959, y: 0.03581828, z: -0.00854546, w: 0.974032} + scale: {x: 0.9999998, y: 0.9999998, z: 1} + - name: Little Intermediate_L + parentName: Little Proximal_L + position: {x: -0.0288834, y: 0.00000015258789, z: 0.000000038146972} + rotation: {x: -0.0005739925, y: 0.00033977616, z: -0.034675606, w: 0.99939847} + scale: {x: 1, y: 1, z: 1} + - name: Little Distal_L + parentName: Little Intermediate_L + position: {x: -0.017963294, y: -0.00000030517577, z: 0} + rotation: {x: 0.0004248866, y: 0.00027329757, z: -0.028401623, w: 0.9995965} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Neck + parentName: Upper Chest + position: {x: -0.25694412, y: 0.000041007996, z: -0.00000023291155} + rotation: {x: -0.0000015347275, y: -0.0000012973799, z: -0.22457749, w: 0.97445625} + scale: {x: 1.0000004, y: 1.0000004, z: 1} + - name: Head + parentName: Neck + position: {x: -0.116071925, y: 0.000000038146972, z: -0.000000077152286} + rotation: {x: -0.00000020574244, y: 0.0000006410187, z: 0.09472147, w: 0.99550384} + scale: {x: 0.99999976, y: 0.99999976, z: 1} + - name: Upper Leg_L + parentName: Hips + position: {x: 0.00000015258789, y: 0.0000002002716, z: 0.11154587} + rotation: {x: 0.04017875, y: 0.9962402, z: 0.07294631, w: 0.023874542} + scale: {x: 1.0000001, y: 1.0000004, z: 1.0000004} + - name: Lower Leg_L + parentName: Upper Leg_L + position: {x: -0.45752007, y: -0.00000024318695, z: 0.000000019073486} + rotation: {x: 0.00000004043173, y: 0.00000027607135, z: 0.009576469, w: 0.99995416} + scale: {x: 1, y: 1, z: 1} + - name: Foot_L + parentName: Lower Leg_L + position: {x: -0.41705385, y: 0.000000013113022, z: -0.00000022888183} + rotation: {x: -0.00002036337, y: 0.022161545, z: -0.001014476, w: 0.9997539} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: Toes_L + parentName: Foot_L + position: {x: -0.065367535, y: 0.13628978, z: 0.00050539017} + rotation: {x: 9.802837e-10, y: 0.00000028177502, z: -0.7071068, w: 0.70710677} + scale: {x: 0.9999996, y: 0.9999996, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 1 + hasExtraRoot: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {fileID: 9000000, guid: d5317c42c7d79dd41b326383ba7a0871, type: 3} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 2 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/05_Characters/FeMale/Animations/Skills/Magic1.anim b/Assets/05_Characters/FeMale/Animations/Skills/Magic1.anim new file mode 100644 index 0000000..2e5e8d0 --- /dev/null +++ b/Assets/05_Characters/FeMale/Animations/Skills/Magic1.anim @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f7d6655cb754635c42c7e6d9dbe25da27518ef8ed537685b629a60a83193e3d +size 9858660 diff --git a/Assets/06_Skills/Data/Meteor.asset.meta b/Assets/05_Characters/FeMale/Animations/Skills/Magic1.anim.meta similarity index 64% rename from Assets/06_Skills/Data/Meteor.asset.meta rename to Assets/05_Characters/FeMale/Animations/Skills/Magic1.anim.meta index eab8865..cc0440f 100644 --- a/Assets/06_Skills/Data/Meteor.asset.meta +++ b/Assets/05_Characters/FeMale/Animations/Skills/Magic1.anim.meta @@ -1,8 +1,8 @@ fileFormatVersion: 2 -guid: c948d7d35a597e246a7a75311dea922c +guid: 4d2a741af8ab54c419a2c025cb029db1 NativeFormatImporter: externalObjects: {} - mainObjectFileID: 0 + mainObjectFileID: 7400000 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/05_Characters/_Game/Players/Player_Gold/Player_Gold_AnimController.controller b/Assets/05_Characters/_Game/Players/Player_Gold/Player_Gold_AnimController.controller index 5fd3cce..97c67ea 100644 --- a/Assets/05_Characters/_Game/Players/Player_Gold/Player_Gold_AnimController.controller +++ b/Assets/05_Characters/_Game/Players/Player_Gold/Player_Gold_AnimController.controller @@ -248,6 +248,33 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1102 &-7279587472540723383 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: EnergyBeam + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 8897784120516016942} + 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: 4d2a741af8ab54c419a2c025cb029db1, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1101 &-7114703549444218963 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -1367,6 +1394,12 @@ AnimatorController: m_DefaultInt: 0 m_DefaultBool: 0 m_Controller: {fileID: 9100000} + - m_Name: Skill_EnergyBeam + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} m_AnimatorLayers: - serializedVersion: 5 m_Name: Base Layer @@ -1428,6 +1461,31 @@ AnimatorController: m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} +--- !u!1101 &88513172847091173 +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: Skill_EnergyBeam + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -7279587472540723383} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1102 &418414025643379083 AnimatorState: serializedVersion: 6 @@ -2968,10 +3026,10 @@ AnimatorStateMachine: m_Position: {x: 30, y: -270, z: 0} - serializedVersion: 1 m_State: {fileID: -8722098701096857895} - m_Position: {x: 530, y: 490, z: 0} + m_Position: {x: 300, y: 450, z: 0} - serializedVersion: 1 m_State: {fileID: 5274542655692502972} - m_Position: {x: 300, y: 480, z: 0} + m_Position: {x: 300, y: 510, z: 0} - serializedVersion: 1 m_State: {fileID: 5635060497623533376} m_Position: {x: -180, y: 150, z: 0} @@ -2990,6 +3048,9 @@ AnimatorStateMachine: - serializedVersion: 1 m_State: {fileID: -4916437341567511129} m_Position: {x: 280, y: -290, z: 0} + - serializedVersion: 1 + m_State: {fileID: -7279587472540723383} + m_Position: {x: -820, y: -60, z: 0} m_ChildStateMachines: - serializedVersion: 1 m_StateMachine: {fileID: 797225346751225704} @@ -3007,12 +3068,13 @@ AnimatorStateMachine: - {fileID: -4193203008948889401} - {fileID: 3333094965755347066} - {fileID: 3797849521031659854} + - {fileID: 88513172847091173} m_EntryTransitions: [] m_StateMachineTransitions: - first: {fileID: 797225346751225704} second: [] m_StateMachineBehaviours: [] - m_AnyStatePosition: {x: -400, y: -70, z: 0} + m_AnyStatePosition: {x: -580, y: 70, z: 0} m_EntryPosition: {x: -240, y: -380, z: 0} m_ExitPosition: {x: 680, y: -10, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} @@ -3061,6 +3123,28 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!1101 &8897784120516016942 +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: 8252589470091190605} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.9722222 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1101 &9132673773557259477 AnimatorStateTransition: m_ObjectHideFlags: 1 diff --git a/Assets/06_Skills/Data/Active/EnergyBeam.asset b/Assets/06_Skills/Data/Active/EnergyBeam.asset index b18b7e8..0578853 100644 --- a/Assets/06_Skills/Data/Active/EnergyBeam.asset +++ b/Assets/06_Skills/Data/Active/EnergyBeam.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3cebd23084f48618488562de9c5d847ce5c4a94633a959a6531f4e750d6554db -size 1337 +oid sha256:89e593dad535d01f775697555676608c74e9aa30d58f26966e7b8c14363a5834 +size 1394 diff --git a/Assets/06_Skills/VFX/_Game/Prefabs/Decals/AreaIndicator_Decal.prefab b/Assets/06_Skills/VFX/_Game/Prefabs/Decals/AreaIndicator_Decal.prefab index 20c9405..931f8ca 100644 --- a/Assets/06_Skills/VFX/_Game/Prefabs/Decals/AreaIndicator_Decal.prefab +++ b/Assets/06_Skills/VFX/_Game/Prefabs/Decals/AreaIndicator_Decal.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f233bd48ada35485b0389ffe75ca263465c923940b22b0d93eca440fc6bf5d2f -size 1700 +oid sha256:f93ba9ddfd31e6b00b32e6d8f3cb6eff96d90ef2b368c20897db3ef804fddc66 +size 4958 diff --git a/Assets/98_Input/InputSystem_Actions.inputactions b/Assets/98_Input/InputSystem_Actions.inputactions index 6f9ca07..969ce47 100644 --- a/Assets/98_Input/InputSystem_Actions.inputactions +++ b/Assets/98_Input/InputSystem_Actions.inputactions @@ -186,6 +186,15 @@ "processors": "", "interactions": "", "initialStateCheck": false + }, + { + "name": "AreaConfirm", + "type": "Button", + "id": "d137b119-95e4-4cac-b73e-e3c93d40b98a", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false } ], "bindings": [ @@ -463,6 +472,17 @@ "action": "UseSlot_G", "isComposite": false, "isPartOfComposite": false + }, + { + "name": "", + "id": "61f3bdac-1191-4830-92e1-88a5cbdffeea", + "path": "/leftButton", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "AreaConfirm", + "isComposite": false, + "isPartOfComposite": false } ] },