Closes #244, #254 CombatPlayer 개선, 하트 시스템 추가

+ CombatPlayer 기능별 분리
+ Combat, CombatUi 전용 input action map 추가
+ 스킬 시스템 로직 수정
+ 전투플레이어 스킬(검의 왈츠) 로직 변경
This commit is contained in:
NTG 2024-05-08 00:37:33 +09:00
parent 3a5675b2db
commit f1d0c6d371
86 changed files with 14636 additions and 29511 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -555,6 +555,24 @@ public partial class @BlueWater: IInputActionCollection2, IDisposable
""processors"": """",
""interactions"": """",
""initialStateCheck"": false
},
{
""name"": ""ActivateMainSkill"",
""type"": ""Button"",
""id"": ""baf777af-1b73-43bf-af41-5b0b4b4e17a5"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """",
""initialStateCheck"": false
},
{
""name"": ""OpenItemInventory"",
""type"": ""Button"",
""id"": ""2248f901-1467-4f42-993e-187a6e0f8673"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """",
""initialStateCheck"": false
}
],
""bindings"": [
@ -645,6 +663,76 @@ public partial class @BlueWater: IInputActionCollection2, IDisposable
""action"": ""Dash"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""c6e279c5-9d30-43fa-b4ab-baacff979160"",
""path"": ""<Mouse>/rightButton"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard&Mouse"",
""action"": ""ActivateMainSkill"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""a6310b05-6f93-471c-9ceb-53d5cde297b2"",
""path"": ""<Keyboard>/i"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard&Mouse"",
""action"": ""OpenItemInventory"",
""isComposite"": false,
""isPartOfComposite"": false
}
]
},
{
""name"": ""CombatUi"",
""id"": ""8cf7d346-163b-432f-ab7a-d2eeeb534f3a"",
""actions"": [
{
""name"": ""Cancel"",
""type"": ""Button"",
""id"": ""e7d49d7a-f0a9-48a3-ace4-22f003f58f96"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """",
""initialStateCheck"": false
},
{
""name"": ""CloseItemInventory"",
""type"": ""Button"",
""id"": ""92659d92-5f25-4712-8a45-d7b527ac56a9"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """",
""initialStateCheck"": false
}
],
""bindings"": [
{
""name"": """",
""id"": ""4318851f-7934-4e8f-95a9-64f292a09906"",
""path"": ""<Keyboard>/escape"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard&Mouse"",
""action"": ""Cancel"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""ae1f40de-6d3f-4863-b0e3-163be3e2c095"",
""path"": ""<Keyboard>/i"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard&Mouse"",
""action"": ""CloseItemInventory"",
""isComposite"": false,
""isPartOfComposite"": false
}
]
}
@ -709,6 +797,12 @@ public partial class @BlueWater: IInputActionCollection2, IDisposable
m_Combat_Move = m_Combat.FindAction("Move", throwIfNotFound: true);
m_Combat_Attack = m_Combat.FindAction("Attack", throwIfNotFound: true);
m_Combat_Dash = m_Combat.FindAction("Dash", throwIfNotFound: true);
m_Combat_ActivateMainSkill = m_Combat.FindAction("ActivateMainSkill", throwIfNotFound: true);
m_Combat_OpenItemInventory = m_Combat.FindAction("OpenItemInventory", throwIfNotFound: true);
// CombatUi
m_CombatUi = asset.FindActionMap("CombatUi", throwIfNotFound: true);
m_CombatUi_Cancel = m_CombatUi.FindAction("Cancel", throwIfNotFound: true);
m_CombatUi_CloseItemInventory = m_CombatUi.FindAction("CloseItemInventory", throwIfNotFound: true);
}
public void Dispose()
@ -1017,6 +1111,8 @@ public partial class @BlueWater: IInputActionCollection2, IDisposable
private readonly InputAction m_Combat_Move;
private readonly InputAction m_Combat_Attack;
private readonly InputAction m_Combat_Dash;
private readonly InputAction m_Combat_ActivateMainSkill;
private readonly InputAction m_Combat_OpenItemInventory;
public struct CombatActions
{
private @BlueWater m_Wrapper;
@ -1024,6 +1120,8 @@ public partial class @BlueWater: IInputActionCollection2, IDisposable
public InputAction @Move => m_Wrapper.m_Combat_Move;
public InputAction @Attack => m_Wrapper.m_Combat_Attack;
public InputAction @Dash => m_Wrapper.m_Combat_Dash;
public InputAction @ActivateMainSkill => m_Wrapper.m_Combat_ActivateMainSkill;
public InputAction @OpenItemInventory => m_Wrapper.m_Combat_OpenItemInventory;
public InputActionMap Get() { return m_Wrapper.m_Combat; }
public void Enable() { Get().Enable(); }
public void Disable() { Get().Disable(); }
@ -1042,6 +1140,12 @@ public partial class @BlueWater: IInputActionCollection2, IDisposable
@Dash.started += instance.OnDash;
@Dash.performed += instance.OnDash;
@Dash.canceled += instance.OnDash;
@ActivateMainSkill.started += instance.OnActivateMainSkill;
@ActivateMainSkill.performed += instance.OnActivateMainSkill;
@ActivateMainSkill.canceled += instance.OnActivateMainSkill;
@OpenItemInventory.started += instance.OnOpenItemInventory;
@OpenItemInventory.performed += instance.OnOpenItemInventory;
@OpenItemInventory.canceled += instance.OnOpenItemInventory;
}
private void UnregisterCallbacks(ICombatActions instance)
@ -1055,6 +1159,12 @@ public partial class @BlueWater: IInputActionCollection2, IDisposable
@Dash.started -= instance.OnDash;
@Dash.performed -= instance.OnDash;
@Dash.canceled -= instance.OnDash;
@ActivateMainSkill.started -= instance.OnActivateMainSkill;
@ActivateMainSkill.performed -= instance.OnActivateMainSkill;
@ActivateMainSkill.canceled -= instance.OnActivateMainSkill;
@OpenItemInventory.started -= instance.OnOpenItemInventory;
@OpenItemInventory.performed -= instance.OnOpenItemInventory;
@OpenItemInventory.canceled -= instance.OnOpenItemInventory;
}
public void RemoveCallbacks(ICombatActions instance)
@ -1072,6 +1182,60 @@ public partial class @BlueWater: IInputActionCollection2, IDisposable
}
}
public CombatActions @Combat => new CombatActions(this);
// CombatUi
private readonly InputActionMap m_CombatUi;
private List<ICombatUiActions> m_CombatUiActionsCallbackInterfaces = new List<ICombatUiActions>();
private readonly InputAction m_CombatUi_Cancel;
private readonly InputAction m_CombatUi_CloseItemInventory;
public struct CombatUiActions
{
private @BlueWater m_Wrapper;
public CombatUiActions(@BlueWater wrapper) { m_Wrapper = wrapper; }
public InputAction @Cancel => m_Wrapper.m_CombatUi_Cancel;
public InputAction @CloseItemInventory => m_Wrapper.m_CombatUi_CloseItemInventory;
public InputActionMap Get() { return m_Wrapper.m_CombatUi; }
public void Enable() { Get().Enable(); }
public void Disable() { Get().Disable(); }
public bool enabled => Get().enabled;
public static implicit operator InputActionMap(CombatUiActions set) { return set.Get(); }
public void AddCallbacks(ICombatUiActions instance)
{
if (instance == null || m_Wrapper.m_CombatUiActionsCallbackInterfaces.Contains(instance)) return;
m_Wrapper.m_CombatUiActionsCallbackInterfaces.Add(instance);
@Cancel.started += instance.OnCancel;
@Cancel.performed += instance.OnCancel;
@Cancel.canceled += instance.OnCancel;
@CloseItemInventory.started += instance.OnCloseItemInventory;
@CloseItemInventory.performed += instance.OnCloseItemInventory;
@CloseItemInventory.canceled += instance.OnCloseItemInventory;
}
private void UnregisterCallbacks(ICombatUiActions instance)
{
@Cancel.started -= instance.OnCancel;
@Cancel.performed -= instance.OnCancel;
@Cancel.canceled -= instance.OnCancel;
@CloseItemInventory.started -= instance.OnCloseItemInventory;
@CloseItemInventory.performed -= instance.OnCloseItemInventory;
@CloseItemInventory.canceled -= instance.OnCloseItemInventory;
}
public void RemoveCallbacks(ICombatUiActions instance)
{
if (m_Wrapper.m_CombatUiActionsCallbackInterfaces.Remove(instance))
UnregisterCallbacks(instance);
}
public void SetCallbacks(ICombatUiActions instance)
{
foreach (var item in m_Wrapper.m_CombatUiActionsCallbackInterfaces)
UnregisterCallbacks(item);
m_Wrapper.m_CombatUiActionsCallbackInterfaces.Clear();
AddCallbacks(instance);
}
}
public CombatUiActions @CombatUi => new CombatUiActions(this);
private int m_KeyboardMouseSchemeIndex = -1;
public InputControlScheme KeyboardMouseScheme
{
@ -1122,5 +1286,12 @@ public partial class @BlueWater: IInputActionCollection2, IDisposable
void OnMove(InputAction.CallbackContext context);
void OnAttack(InputAction.CallbackContext context);
void OnDash(InputAction.CallbackContext context);
void OnActivateMainSkill(InputAction.CallbackContext context);
void OnOpenItemInventory(InputAction.CallbackContext context);
}
public interface ICombatUiActions
{
void OnCancel(InputAction.CallbackContext context);
void OnCloseItemInventory(InputAction.CallbackContext context);
}
}

View File

@ -533,6 +533,24 @@
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "ActivateMainSkill",
"type": "Button",
"id": "baf777af-1b73-43bf-af41-5b0b4b4e17a5",
"expectedControlType": "Button",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "OpenItemInventory",
"type": "Button",
"id": "2248f901-1467-4f42-993e-187a6e0f8673",
"expectedControlType": "Button",
"processors": "",
"interactions": "",
"initialStateCheck": false
}
],
"bindings": [
@ -623,6 +641,76 @@
"action": "Dash",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "c6e279c5-9d30-43fa-b4ab-baacff979160",
"path": "<Mouse>/rightButton",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "ActivateMainSkill",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "a6310b05-6f93-471c-9ceb-53d5cde297b2",
"path": "<Keyboard>/i",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "OpenItemInventory",
"isComposite": false,
"isPartOfComposite": false
}
]
},
{
"name": "CombatUi",
"id": "8cf7d346-163b-432f-ab7a-d2eeeb534f3a",
"actions": [
{
"name": "Cancel",
"type": "Button",
"id": "e7d49d7a-f0a9-48a3-ace4-22f003f58f96",
"expectedControlType": "Button",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "CloseItemInventory",
"type": "Button",
"id": "92659d92-5f25-4712-8a45-d7b527ac56a9",
"expectedControlType": "Button",
"processors": "",
"interactions": "",
"initialStateCheck": false
}
],
"bindings": [
{
"name": "",
"id": "4318851f-7934-4e8f-95a9-64f292a09906",
"path": "<Keyboard>/escape",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "Cancel",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "ae1f40de-6d3f-4863-b0e3-163be3e2c095",
"path": "<Keyboard>/i",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "CloseItemInventory",
"isComposite": false,
"isPartOfComposite": false
}
]
}

View File

@ -181,7 +181,7 @@ namespace BlueWaterProject
var ui = UiManager.Inst.CombatUi.MainSkillUi;
ui.gameObject.SetActive(true);
mainSkill.SkillInputData.InitInputData(myCollider, myRb, null, myVisualLook, myAnimator, null, targetLayer, ui);
mainSkill.SkillInputData.InitInputData(transform, myCollider, myRb, null, myVisualLook, myAnimator, null, targetLayer, ui);
mainSkill.InitData();
}
}

View File

@ -1,38 +1,38 @@
using System;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class ReadyToTheWaltzOfTheSwordBehavior : StateMachineBehaviour
{
private CombatPlayerController combatPlayerController;
private TheWaltzOfTheSword theWaltzOfTheSword;
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
if (combatPlayerController == null)
{
combatPlayerController = animator.GetComponentInParent<CombatPlayerController>();
}
if (theWaltzOfTheSword == null)
{
theWaltzOfTheSword = combatPlayerController.MainSkillObject.GetComponent<TheWaltzOfTheSword>();
}
var animationLength = stateInfo.length;
animator.speed = animationLength / theWaltzOfTheSword.CastingTime;
}
public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
}
public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
animator.speed = 1f;
}
}
}
// using System;
// using UnityEngine;
//
// // ReSharper disable once CheckNamespace
// namespace BlueWaterProject
// {
// public class ReadyToTheWaltzOfTheSwordBehavior : StateMachineBehaviour
// {
// private CombatPlayerController combatPlayerController;
// private TheWaltzOfTheSword theWaltzOfTheSword;
//
// public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
// {
// if (combatPlayerController == null)
// {
// combatPlayerController = animator.GetComponentInParent<CombatPlayerController>();
// }
//
// if (theWaltzOfTheSword == null)
// {
// theWaltzOfTheSword = combatPlayerController.MainSkillObject.GetComponent<TheWaltzOfTheSword>();
// }
//
// var animationLength = stateInfo.length;
// animator.speed = animationLength / theWaltzOfTheSword.CastingTime;
// }
//
// public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
// {
//
// }
//
// public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
// {
// animator.speed = 1f;
// }
// }
// }

View File

@ -1,173 +1,173 @@
using System;
using System.Linq;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class TheWaltzOfTheSwordBehavior : StateMachineBehaviour
{
private enum Direction
{
NONE = -1,
LEFT,
BACK,
RIGHT
}
private CombatPlayerController combatPlayerController;
private TheWaltzOfTheSword theWaltzOfTheSword;
private int currentHitNum;
private int hitCount;
private float time;
private float intervalTime;
private Direction currentDirection;
private bool previousLeft;
private bool isMoved;
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
if (combatPlayerController == null)
{
combatPlayerController = animator.GetComponentInParent<CombatPlayerController>();
}
if (theWaltzOfTheSword == null)
{
theWaltzOfTheSword = combatPlayerController.MainSkillObject.GetComponent<TheWaltzOfTheSword>();
}
var animationLength = stateInfo.length;
animator.speed = animationLength / theWaltzOfTheSword.SkillDuration;
intervalTime = animationLength / animator.speed / 6f;
if (!theWaltzOfTheSword.isMovingCamera)
{
CameraManager.Inst.CombatCamera.SetFollowAndLookAt(null);
}
combatPlayerController.SetUseGravity(false);
combatPlayerController.SetIsTrigger(true);
combatPlayerController.SetIsInvincibility(true);
currentDirection = Direction.BACK;
previousLeft = false;
isMoved = false;
currentHitNum = 0;
hitCount = 0;
time = 0f;
}
public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
time += Time.deltaTime;
if (hitCount < 6)
{
if (!isMoved)
{
MovePoint(theWaltzOfTheSword.HitColliders[currentHitNum], currentDirection);
}
else if (time >= intervalTime)
{
ExecuteAttackRoutine(animator);
}
}
// 모든 공격 시퀀스가 완료된 경우
if (hitCount >= 6)
{
animator.SetBool(CombatPlayerController.IsActivateMainSkillHash, false);
}
}
public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
animator.speed = 1f;
if (theWaltzOfTheSword.returnToStartPosition)
{
combatPlayerController.Move(theWaltzOfTheSword.SkillInputData.StartPosition);
}
if (!theWaltzOfTheSword.isMovingCamera)
{
var userTransform = theWaltzOfTheSword.SkillInputData.PlayerCollider.transform;
CameraManager.Inst.CombatCamera.SetFollowAndLookAt(userTransform);
}
combatPlayerController.SetIsTrigger(false);
combatPlayerController.SetUseGravity(true);
combatPlayerController.SetIsInvincibility(false);
combatPlayerController.SetEnableMoving(true);
}
private void ExecuteAttackRoutine(Animator animator)
{
theWaltzOfTheSword.SkillAttackTiming(theWaltzOfTheSword.HitColliders[currentHitNum]);
hitCount++;
AddCurrentNum();
for (var i = 0; i < theWaltzOfTheSword.HitSize; i++)
{
if (!theWaltzOfTheSword.IsTargetAlive(theWaltzOfTheSword.HitColliders[currentHitNum]))
{
AddCurrentNum();
continue;
}
isMoved = false;
time = 0f;
return;
}
animator.SetBool(CombatPlayerController.IsActivateMainSkillHash, false);
}
private void AddCurrentNum()
{
currentHitNum = (currentHitNum + 1) % theWaltzOfTheSword.HitSize;
}
private void MovePoint(Collider hitCollider, Direction direction)
{
var center = hitCollider.bounds.center;
var addX = 0f;
var addZ = 0f;
switch(direction)
{
case Direction.NONE:
break;
case Direction.LEFT:
combatPlayerController.SetPreviousMoveDirection(Vector3.right);
addX = -hitCollider.bounds.extents.x;
currentDirection = Direction.BACK;
break;
case Direction.BACK:
addZ = hitCollider.bounds.extents.z;
if (previousLeft)
{
currentDirection = Direction.RIGHT;
}
else
{
currentDirection = Direction.LEFT;
}
previousLeft = !previousLeft;
break;
case Direction.RIGHT:
combatPlayerController.SetPreviousMoveDirection(Vector3.left);
addX = hitCollider.bounds.extents.x;
currentDirection = Direction.BACK;
break;
default:
throw new ArgumentOutOfRangeException(nameof(direction), direction, null);
}
var newPosition = new Vector3(center.x + addX, combatPlayerController.transform.position.y, center.z + addZ);
combatPlayerController.Move(newPosition);
isMoved = true;
}
}
}
// using System;
// using System.Linq;
// using UnityEngine;
//
// // ReSharper disable once CheckNamespace
// namespace BlueWaterProject
// {
// public class TheWaltzOfTheSwordBehavior : StateMachineBehaviour
// {
// private enum Direction
// {
// NONE = -1,
// LEFT,
// BACK,
// RIGHT
// }
//
// private CombatPlayerController combatPlayerController;
// private TheWaltzOfTheSword theWaltzOfTheSword;
//
// private int currentHitNum;
// private int hitCount;
// private float time;
// private float intervalTime;
// private Direction currentDirection;
// private bool previousLeft;
// private bool isMoved;
//
// public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
// {
// if (combatPlayerController == null)
// {
// combatPlayerController = animator.GetComponentInParent<CombatPlayerController>();
// }
//
// if (theWaltzOfTheSword == null)
// {
// theWaltzOfTheSword = combatPlayerController.MainSkillObject.GetComponent<TheWaltzOfTheSword>();
// }
//
// var animationLength = stateInfo.length;
// animator.speed = animationLength / theWaltzOfTheSword.SkillDuration;
// intervalTime = animationLength / animator.speed / 6f;
//
// if (!theWaltzOfTheSword.isMovingCamera)
// {
// CameraManager.Inst.CombatCamera.SetFollowAndLookAt(null);
// }
// combatPlayerController.SetUseGravity(false);
// combatPlayerController.SetIsTrigger(true);
// combatPlayerController.SetIsInvincibility(true);
// currentDirection = Direction.BACK;
// previousLeft = false;
// isMoved = false;
// currentHitNum = 0;
// hitCount = 0;
// time = 0f;
// }
//
// public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
// {
// time += Time.deltaTime;
//
// if (hitCount < 6)
// {
// if (!isMoved)
// {
// MovePoint(theWaltzOfTheSword.HitColliders[currentHitNum], currentDirection);
// }
//
// else if (time >= intervalTime)
// {
// ExecuteAttackRoutine(animator);
// }
// }
//
// // 모든 공격 시퀀스가 완료된 경우
// if (hitCount >= 6)
// {
// animator.SetBool(CombatPlayerController.IsActivateMainSkillHash, false);
// }
// }
//
// public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
// {
// animator.speed = 1f;
//
// if (theWaltzOfTheSword.returnToStartPosition)
// {
// combatPlayerController.Move(theWaltzOfTheSword.SkillInputData.StartPosition);
// }
// if (!theWaltzOfTheSword.isMovingCamera)
// {
// var userTransform = theWaltzOfTheSword.SkillInputData.PlayerCollider.transform;
// CameraManager.Inst.CombatCamera.SetFollowAndLookAt(userTransform);
// }
//
// combatPlayerController.SetIsTrigger(false);
// combatPlayerController.SetUseGravity(true);
// combatPlayerController.SetIsInvincibility(false);
// combatPlayerController.SetEnableMoving(true);
// }
//
// private void ExecuteAttackRoutine(Animator animator)
// {
// theWaltzOfTheSword.SkillAttackTiming(theWaltzOfTheSword.HitColliders[currentHitNum]);
// hitCount++;
// AddCurrentNum();
//
// for (var i = 0; i < theWaltzOfTheSword.HitSize; i++)
// {
// if (!theWaltzOfTheSword.IsTargetAlive(theWaltzOfTheSword.HitColliders[currentHitNum]))
// {
// AddCurrentNum();
// continue;
// }
//
// isMoved = false;
// time = 0f;
// return;
// }
//
// animator.SetBool(CombatPlayerController.IsActivateMainSkillHash, false);
// }
//
// private void AddCurrentNum()
// {
// currentHitNum = (currentHitNum + 1) % theWaltzOfTheSword.HitSize;
// }
//
// private void MovePoint(Collider hitCollider, Direction direction)
// {
// var center = hitCollider.bounds.center;
// var addX = 0f;
// var addZ = 0f;
// switch(direction)
// {
// case Direction.NONE:
// break;
// case Direction.LEFT:
// combatPlayerController.SetPreviousMoveDirection(Vector3.right);
// addX = -hitCollider.bounds.extents.x;
// currentDirection = Direction.BACK;
// break;
// case Direction.BACK:
// addZ = hitCollider.bounds.extents.z;
// if (previousLeft)
// {
// currentDirection = Direction.RIGHT;
// }
// else
// {
// currentDirection = Direction.LEFT;
// }
//
// previousLeft = !previousLeft;
// break;
// case Direction.RIGHT:
// combatPlayerController.SetPreviousMoveDirection(Vector3.left);
// addX = hitCollider.bounds.extents.x;
// currentDirection = Direction.BACK;
// break;
// default:
// throw new ArgumentOutOfRangeException(nameof(direction), direction, null);
// }
//
// var newPosition = new Vector3(center.x + addX, combatPlayerController.transform.position.y, center.z + addZ);
// combatPlayerController.Move(newPosition);
//
// isMoved = true;
// }
// }
// }

View File

@ -1,42 +1,199 @@
using Sirenix.OdinInspector;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class CombatAnimator : MonoBehaviour
public enum CombatPlayerAnimatorParameter
{
[Required] public Animator animator;
X_DIRECTION,
Z_DIRECTION,
IS_MOVING,
IS_DASHING,
IS_READY_MAIN_SKILL,
IS_ACTIVATE_MAIN_SKILL,
COMBO_ATTACK_COUNT
}
public enum CombatPlayerAnimationName
{
DASH_STATE,
COMBO_ATTACK1,
COMBO_ATTACK2,
READY_TO_MAIN_SKILL,
MAIN_SKILL
}
public class CombatAnimator : MonoBehaviour, IAnimationStateController
{
// Components
private Animator anim;
private static readonly int IsMovingHash = Animator.StringToHash("isMoving");
// Dictionaries
private Dictionary<CombatPlayerAnimatorParameter, int> animationParameterHashDictionary = new();
private Dictionary<CombatPlayerAnimationName, int> animationNameHashDictionary = new();
// Parameter hashes
private static readonly int XDirectionHash = Animator.StringToHash("xDirection");
private static readonly int ZDirectionHash = Animator.StringToHash("zDirection");
private static readonly int IsMovingHash = Animator.StringToHash("isMoving");
private static readonly int IsDashingHash = Animator.StringToHash("isDashing");
private static readonly int IsReadyMainSkillHash = Animator.StringToHash("isReadyMainSkill");
private static readonly int IsActivateMainSkillHash = Animator.StringToHash("isActivateMainSkill");
private static readonly int ComboAttackCount = Animator.StringToHash("ComboAttackCount");
// Animation name hashes
private static readonly int DashStateHash = Animator.StringToHash("DashState");
private static readonly int ComboAttack1Hash = Animator.StringToHash("ComboAttack1");
private static readonly int ComboAttack2Hash = Animator.StringToHash("ComboAttack2");
private static readonly int ReadyToMainSkillHash = Animator.StringToHash("ReadyToMainSkill");
private static readonly int MainSkillHash = Animator.StringToHash("MainSkill");
[Button("셋팅 초기화")]
private void InitSetting()
// Unity events
private void Awake()
{
animator = GetComponentInChildren<Animator>();
InitDictionary();
}
public void SetIsMoving(bool value)
// Init
public void InitComponent(Animator animator)
{
animator.SetBool(IsMovingHash, value);
anim = animator;
}
private void InitDictionary()
{
animationParameterHashDictionary = new Dictionary<CombatPlayerAnimatorParameter, int>(Enum.GetValues(typeof(CombatPlayerAnimatorParameter)).Length)
{
{ CombatPlayerAnimatorParameter.X_DIRECTION, XDirectionHash },
{ CombatPlayerAnimatorParameter.Z_DIRECTION, ZDirectionHash },
{ CombatPlayerAnimatorParameter.IS_MOVING, IsMovingHash },
{ CombatPlayerAnimatorParameter.IS_DASHING, IsDashingHash },
{ CombatPlayerAnimatorParameter.IS_READY_MAIN_SKILL, IsReadyMainSkillHash },
{ CombatPlayerAnimatorParameter.IS_ACTIVATE_MAIN_SKILL, IsActivateMainSkillHash },
{ CombatPlayerAnimatorParameter.COMBO_ATTACK_COUNT, ComboAttackCount }
};
animationNameHashDictionary = new Dictionary<CombatPlayerAnimationName, int>(Enum.GetValues(typeof(CombatPlayerAnimationName)).Length)
{
{ CombatPlayerAnimationName.DASH_STATE, DashStateHash },
{ CombatPlayerAnimationName.COMBO_ATTACK1, ComboAttack1Hash },
{ CombatPlayerAnimationName.COMBO_ATTACK2, ComboAttack2Hash },
{ CombatPlayerAnimationName.READY_TO_MAIN_SKILL, ReadyToMainSkillHash },
{ CombatPlayerAnimationName.MAIN_SKILL, MainSkillHash }
};
}
// Methods
public void SetAnimationParameter<T>(T parameter, bool value)
{
if (parameter is CombatPlayerAnimatorParameter enumParameter)
{
anim.SetBool(animationParameterHashDictionary[enumParameter], value);
}
else
{
throw new ArgumentException("Invalid parameter type for SetAnimationParameter");
}
}
public void SetAnimationParameter<T>(T parameter, int value)
{
if (parameter is CombatPlayerAnimatorParameter enumParameter)
{
anim.SetInteger(animationParameterHashDictionary[enumParameter], value);
}
else
{
throw new ArgumentException("Invalid parameter type for SetAnimationParameter");
}
}
public void SetXDirection(float value)
public void SetAnimationParameter<T>(T parameter, float value)
{
animator.SetFloat(XDirectionHash, value);
if (parameter is CombatPlayerAnimatorParameter enumParameter)
{
anim.SetFloat(animationParameterHashDictionary[enumParameter], value);
}
else
{
throw new ArgumentException("Invalid parameter type for SetAnimationParameter");
}
}
public void SetAnimationTrigger<T>(T parameter)
{
if (parameter is CombatPlayerAnimatorParameter enumParameter)
{
anim.SetTrigger(animationParameterHashDictionary[enumParameter]);
}
else
{
throw new ArgumentException("Invalid parameter type for SetAnimationParameter");
}
}
public void SetZDirection(float value)
public void ResetAnimationSpeed()
{
animator.SetFloat(ZDirectionHash, value);
anim.speed = 1f;
}
public void SetIsDash(bool value)
public bool IsComparingCurrentAnimation(string animationName, int animatorLayer = 0)
{
animator.SetBool(IsDashingHash, value);
return anim.GetCurrentAnimatorStateInfo(animatorLayer).IsName(animationName);
}
public bool IsComparingCurrentAnimation<T>(T animationName, int animatorLayer = 0)
{
if (animationName is CombatPlayerAnimationName enumAnimationName)
{
return anim.GetCurrentAnimatorStateInfo(animatorLayer).shortNameHash == animationNameHashDictionary[enumAnimationName];
}
throw new ArgumentException("Invalid parameter type for SetAnimationParameter");
}
public IEnumerator WaitForAnimationToRun(string animationName, Action<bool> onSuccess, float timeout = 0.2f)
{
var elapsedTime = 0f;
while (!IsComparingCurrentAnimation(animationName))
{
elapsedTime += Time.deltaTime;
yield return null;
if (elapsedTime <= timeout) continue;
print("Timeout waiting for animation state: " + animationName);
onSuccess?.Invoke(false);
}
onSuccess?.Invoke(true);
}
public IEnumerator WaitForAnimationToRun<T>(T animationName, Action<bool> onSuccess, float timeout = 0.2f)
{
var elapsedTime = 0f;
while (!IsComparingCurrentAnimation(animationName))
{
elapsedTime += Time.deltaTime;
yield return null;
if (elapsedTime <= timeout) continue;
print("Timeout waiting for animation state: " + animationName);
onSuccess?.Invoke(false);
}
onSuccess?.Invoke(true);
}
public void SetCurrentAnimationSpeed(float targetDuration, int animatorLayer = 0)
{
var animationLength = anim.GetCurrentAnimatorStateInfo(animatorLayer).length;
anim.speed = animationLength / targetDuration;
}
public float GetCurrentAnimationNormalizedTime(int animatorLayer = 0)
{
return anim.GetCurrentAnimatorStateInfo(animatorLayer).normalizedTime;
}
}
}

View File

@ -1,21 +1,267 @@
using Sirenix.OdinInspector;
using System.Collections;
using UnityEngine;
using UnityEngine.InputSystem;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class CombatAttacker : MonoBehaviour
public class CombatAttacker : MonoBehaviour, IMeleeComboAttackable
{
[HideInInspector] public CombatAnimator combatAnimator;
// Components
private Rigidbody rb;
// Interfaces
private IAnimationStateController iAnimationStateController;
private IRigidMovable iRigidMovable;
// ComboAttack
[field: Range(1, 21), Tooltip("한 번에 공격 가능한 개체 수")]
[field: SerializeField] public int MaxHitCount { get; set; } = 10;
[field: SerializeField] public ComboAttack[] ComboAttacks { get; set; } = new ComboAttack[2];
public bool UsedMouseAttack { get; set; }
private int currentComboAttackCount;
private bool useMouseAttack;
public void HandleAttack()
public int CurrentComboAttackCount
{
// if (!enableDash || isDashing) return;
//
// StartCoroutine(nameof(DashCoroutine));
get => currentComboAttackCount;
set
{
currentComboAttackCount = value;
iAnimationStateController.SetAnimationParameter(CombatPlayerAnimatorParameter.COMBO_ATTACK_COUNT, CurrentComboAttackCount);
}
}
public bool IsComboAttackPossible { get; set; }
public bool IsComboAttacking { get; set; }
public Collider[] HitColliders { get; set; }
private bool enableAttack = true;
[field: SerializeField] public LayerMask TargetLayer { get; set; }
[SerializeField] private LayerMask groundLayer;
// Particles
[SerializeField] private ParticleSystem swordHit;
// Camera effects
[SerializeField] private float comboAttackHitStopDuration = 0.15f;
// Variables
private Coroutine firstComboAttackCoroutine;
private Coroutine secondComboAttackCoroutine;
// Events
public delegate void AttackInDashEvent();
public event AttackInDashEvent OnAttackInDashing;
public delegate void StartAttackEvent();
public event StartAttackEvent OnStartAttack;
public delegate void EndAttackEvent();
public event EndAttackEvent OnEndAttack;
// Unity events
private void Start()
{
iAnimationStateController = GetComponent<IAnimationStateController>();
iRigidMovable = GetComponent<IRigidMovable>();
HitColliders = new Collider[MaxHitCount];
}
// Init
public void InitComponent(Rigidbody rigidbody)
{
rb = rigidbody;
}
// Event methods
public void HandleEnableAttack() => enableAttack = true;
public void HandleDisableAttack() => enableAttack = false;
public void HandleAttack(bool usedMouseAttack)
{
if (!enableAttack) return;
if (CurrentComboAttackCount == 1 && IsComboAttackPossible)
{
IsComboAttacking = true;
if (usedMouseAttack)
{
UseMouseAttack();
}
return;
}
if (CurrentComboAttackCount >= 1) return;
OnAttackInDashing?.Invoke();
if (usedMouseAttack)
{
UseMouseAttack();
}
firstComboAttackCoroutine = StartCoroutine(nameof(FirstComboAttackCoroutine));
}
// Methods
private void UseMouseAttack()
{
var mousePos = Mouse.current.position.ReadValue();
var ray = CameraManager.Inst.MainCam.ScreenPointToRay(mousePos);
if (!Physics.Raycast(ray, out var hit, float.MaxValue, groundLayer))
{
EndComboAttack();
return;
}
var attackDirection = (hit.point - rb.position).normalized;
attackDirection.y = 0f;
iRigidMovable.PreviousMoveDirection = attackDirection;
}
private IEnumerator FirstComboAttackCoroutine()
{
OnStartAttack?.Invoke();
CurrentComboAttackCount = 1;
var animationStarted = false;
yield return StartCoroutine(iAnimationStateController.WaitForAnimationToRun(CombatPlayerAnimationName.COMBO_ATTACK1,
success => animationStarted = success));
if (!animationStarted)
{
EndComboAttack();
yield break;
}
iAnimationStateController.SetCurrentAnimationSpeed(ComboAttacks[CurrentComboAttackCount - 1].Speed);
IsComboAttackPossible = true;
var doDamage = false;
while (iAnimationStateController.IsComparingCurrentAnimation(CombatPlayerAnimationName.COMBO_ATTACK1) &&
iAnimationStateController.GetCurrentAnimationNormalizedTime() < 1f)
{
if (!doDamage && iAnimationStateController.GetCurrentAnimationNormalizedTime() >= 0.28f)
{
var moveSpeed = ComboAttacks[CurrentComboAttackCount - 1].MovePower;
var finalVelocity = iRigidMovable.PreviousMoveDirection * moveSpeed;
//rb.velocity = finalVelocity;
rb.AddForce(finalVelocity, ForceMode.Impulse);
rb.velocity = Vector3.zero;
doDamage = true;
DoDamage(CurrentComboAttackCount, iRigidMovable.PreviousMoveDirection);
}
yield return new WaitForFixedUpdate();
}
if (IsComboAttacking)
{
secondComboAttackCoroutine = StartCoroutine(nameof(SecondComboAttackCoroutine));
}
else
{
EndComboAttack();
}
}
private IEnumerator SecondComboAttackCoroutine()
{
IsComboAttackPossible = false;
CurrentComboAttackCount = 2;
var animationStarted = false;
yield return StartCoroutine(iAnimationStateController.WaitForAnimationToRun(CombatPlayerAnimationName.COMBO_ATTACK2,
success => animationStarted = success));
if (!animationStarted)
{
EndComboAttack();
yield break;
}
iAnimationStateController.SetCurrentAnimationSpeed(ComboAttacks[CurrentComboAttackCount - 1].Speed);
var doDamage = false;
while (iAnimationStateController.IsComparingCurrentAnimation(CombatPlayerAnimationName.COMBO_ATTACK2) &&
iAnimationStateController.GetCurrentAnimationNormalizedTime() < 1f)
{
if (!doDamage && iAnimationStateController.GetCurrentAnimationNormalizedTime() >= 0.3f)
{
var moveSpeed = ComboAttacks[CurrentComboAttackCount - 1].MovePower;
var finalVelocity = iRigidMovable.PreviousMoveDirection * moveSpeed;
//rb.velocity = finalVelocity;
rb.AddForce(finalVelocity, ForceMode.Impulse);
rb.velocity = Vector3.zero;
doDamage = true;
DoDamage(CurrentComboAttackCount, iRigidMovable.PreviousMoveDirection);
}
yield return new WaitForFixedUpdate();
}
EndComboAttack();
}
private void DoDamage(int comboAttackCount, Vector3 attackDirection)
{
var size = Physics.OverlapSphereNonAlloc(transform.position, ComboAttacks[comboAttackCount - 1].Range, HitColliders,
TargetLayer, QueryTriggerInteraction.Collide);
for (var i = 0; i < size; i++)
{
var targetDirection = (HitColliders[i].transform.position - transform.position).normalized;
var angleBetween = Vector3.Angle(attackDirection, targetDirection);
if (angleBetween >= ComboAttacks[comboAttackCount - 1].Angle * 0.5f) continue;
if (HitColliders[i].gameObject.layer == LayerMask.NameToLayer("Enemy"))
{
var iDamageable = HitColliders[i].transform.GetComponent<IDamageable>();
if (iDamageable != null)
{
iDamageable.TakeDamage(ComboAttacks[comboAttackCount - 1].Damage);
var closestPoint = HitColliders[i].ClosestPoint(transform.position);
//var spawnPosition = closestPoint + Random.insideUnitSphere * 0.2f;
Instantiate(swordHit, closestPoint, Quaternion.identity);
}
if (comboAttackCount == 2)
{
VisualFeedbackManager.Inst.TriggerHitStop(comboAttackHitStopDuration);
}
}
else if (HitColliders[i].gameObject.layer == LayerMask.NameToLayer("Skill") &&
HitColliders[i].CompareTag("DestructiveSkill"))
{
var iDamageable = HitColliders[i].transform.GetComponent<IDamageable>();
iDamageable?.TakeDamage(0);
}
}
}
public void EndComboAttack()
{
if (firstComboAttackCoroutine != null)
{
StopCoroutine(firstComboAttackCoroutine);
firstComboAttackCoroutine = null;
}
if (secondComboAttackCoroutine != null)
{
StopCoroutine(secondComboAttackCoroutine);
secondComboAttackCoroutine = null;
}
rb.velocity = Vector3.zero;
IsComboAttacking = false;
IsComboAttackPossible = false;
iAnimationStateController.ResetAnimationSpeed();
CurrentComboAttackCount = 0;
OnEndAttack?.Invoke();
}
}
}
}

View File

@ -0,0 +1,108 @@
using System.Collections;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class CombatHealth : MonoBehaviour, IDamageable
{
// Components
private SpriteRenderer spriteRenderer;
private HeartHpUi heartHpUi;
private MaterialPropertyBlock propBlock;
// Health
[SerializeField] private int maxHp;
[SerializeField] private int currentHp;
// Interfaces
private IDashable iDashable;
// Hashes
private static readonly int IsHitHash = Shader.PropertyToID("_IsHit");
// events
public delegate void ChangedCurrentHp(int currentHp);
public event ChangedCurrentHp OnChangedCurrentHp;
// Unity events
private void Start()
{
heartHpUi = UiManager.Inst.CombatUi.HeartHpUi;
iDashable = GetComponent<IDashable>();
OnChangedCurrentHp += heartHpUi.SetCurrentHp;
propBlock = new MaterialPropertyBlock();
SetCurrentHp(maxHp);
}
private void OnDestroy()
{
OnChangedCurrentHp -= heartHpUi.SetCurrentHp;
}
// Init
public void InitComponent(SpriteRenderer spriteRenderer)
{
this.spriteRenderer = spriteRenderer;
}
// Methods
public void TakeDamage(float attackerPower, Vector3? attackPos = null)
{
if (iDashable?.IsDashing == true) return;
var changeHp = Mathf.Max(currentHp - (int)attackerPower, 0);
SetCurrentHp(changeHp);
// 죽었는지 체크
if (changeHp == 0f)
{
Die();
return;
}
if (changeHp <= 30f)
{
CameraManager.Inst.CombatCamera.LowHpVignette();
}
else
{
CameraManager.Inst.CombatCamera.StopLowHpVignette();
}
StartCoroutine(nameof(FlashWhiteCoroutine));
}
public void Die()
{
throw new System.NotImplementedException();
}
public float GetCurrentHp()
{
return currentHp;
}
private void SetCurrentHp(int value)
{
currentHp = value;
OnChangedCurrentHp?.Invoke(value);
}
private IEnumerator FlashWhiteCoroutine()
{
for (var i = 0; i < 5; i++)
{
spriteRenderer.GetPropertyBlock(propBlock);
propBlock.SetInt(IsHitHash, 1);
spriteRenderer.SetPropertyBlock(propBlock);
yield return new WaitForSeconds(0.05f);
propBlock.SetInt(IsHitHash, 0);
spriteRenderer.SetPropertyBlock(propBlock);
yield return new WaitForSeconds(0.05f);
}
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e9b7e599e011e1e418c34e3fe3cf6abd

View File

@ -1,4 +1,3 @@
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.InputSystem;
@ -7,8 +6,14 @@ namespace BlueWaterProject
{
public class CombatInput : MonoBehaviour
{
[Required] public PlayerInput playerInput;
// Components
private PlayerInput playerInput;
// Const
private const string COMBAT = "Combat";
private const string COMBAT_UI = "CombatUi";
// Events
public delegate void MoveInput(Vector2 movementInput);
public event MoveInput OnMoveInputReceived;
@ -18,12 +23,16 @@ namespace BlueWaterProject
public delegate void AttackInput(bool usedMouse);
public event AttackInput OnAttackInputReceived;
[Button("셋팅 초기화")]
private void InitSetting()
public delegate void ActivateMainSkillInput();
public event ActivateMainSkillInput OnActivateMainSkillInputReceived;
// Init
public void InitComponent(PlayerInput playerInput)
{
playerInput = GetComponent<PlayerInput>();
this.playerInput = playerInput;
}
// Player input methods
public void OnMove(InputAction.CallbackContext context)
{
var movementInput = context.ReadValue<Vector2>();
@ -61,18 +70,50 @@ namespace BlueWaterProject
}
}
private void OnItemInventory()
public void OnActivateMainSkill(InputAction.CallbackContext context)
{
var activeSelf = UiManager.Inst.CombatUi.CombatItemInventoryUi.gameObject.activeSelf;
UiManager.Inst.CombatUi.CombatItemInventoryUi.SetActiveInventoryUi(!activeSelf);
if (context.started)
{
OnActivateMainSkillInputReceived?.Invoke();
}
}
public void OnOpenItemInventory(InputAction.CallbackContext context)
{
if (context.started)
{
SwitchCurrentActionMap(COMBAT_UI);
UiManager.Inst.CombatUi.CombatItemInventoryUi.SetActiveInventoryUi(true);
}
}
private void OnEsc()
public void OnCloseItemInventory(InputAction.CallbackContext context)
{
if (UiManager.Inst.CombatUi.CombatItemInventoryUi.gameObject.activeSelf)
if (context.started)
{
UiManager.Inst.CombatUi.CombatItemInventoryUi.SetActiveInventoryUi(false);
// Todo : 또 다른 UI 체크?
SwitchCurrentActionMap(COMBAT);
}
}
public void OnCancel(InputAction.CallbackContext context)
{
if (context.started)
{
if (UiManager.Inst.CombatUi.CombatItemInventoryUi.gameObject.activeSelf)
{
UiManager.Inst.CombatUi.CombatItemInventoryUi.SetActiveInventoryUi(false);
SwitchCurrentActionMap(COMBAT);
}
}
}
// Methods
private void SwitchCurrentActionMap(string actionMapName)
{
playerInput.SwitchCurrentActionMap(actionMapName);
}
}
}

View File

@ -1,81 +1,157 @@
using System.Collections;
using Sirenix.OdinInspector;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class CombatMovement : MonoBehaviour
public class CombatMovement : MonoBehaviour, IRigidMovable, IDashable
{
[SerializeField] private Rigidbody rb;
[SerializeField] private Transform visualLook;
[HideInInspector] public CombatAnimator combatAnimator;
// Components
public Rigidbody Rb { get; set; }
private Transform visualLook;
// Move
[Range(1f, 10f), Tooltip("이동 속도")]
[SerializeField] private float moveSpeed = 7f;
// Dash
[Range(1f, 50f), Tooltip("대쉬 속도")]
[SerializeField] private float dashSpeed = 20f;
[field: Range(1f, 50f), Tooltip("대쉬 속도")]
[field: SerializeField] public float DashSpeed { get; set; } = 20f;
[Range(0.1f, 1f), Tooltip("대쉬 시간")]
[SerializeField] private float dashTime = 0.2f;
[field: Range(0.1f, 1f), Tooltip("대쉬 시간")]
[field: SerializeField] public float DashTime { get; set; } = 0.2f;
[Range(0f, 5f), Tooltip("대쉬 쿨타임")]
[SerializeField] private float dashCooldown = 0.5f;
[field: Range(0f, 5f), Tooltip("대쉬 쿨타임")]
[field: SerializeField] public float DashCooldown { get; set; } = 0.5f;
private Vector3 currentMoveDirection;
private Vector3 previousMoveDirection = Vector3.back;
private float finalSpeed;
public bool EnableDash { get; set; } = true;
private bool isMoving;
private bool enableDash = true;
private bool isDashing;
public bool IsDashing
{
get => isDashing;
set
{
isDashing = value;
iAnimationStateController.SetAnimationParameter(CombatPlayerAnimatorParameter.IS_DASHING, IsDashing);
}
}
// Interfaces
private IAnimationStateController iAnimationStateController;
private IMeleeComboAttackable iMeleeComboAttackable;
// Variables
private Vector3 currentMoveDirection;
private Vector3 previousMoveDirection = Vector3.back;
public Vector3 PreviousMoveDirection
{
get => previousMoveDirection;
set
{
previousMoveDirection = value;
iAnimationStateController.SetAnimationParameter(CombatPlayerAnimatorParameter.X_DIRECTION, PreviousMoveDirection.x);
iAnimationStateController.SetAnimationParameter(CombatPlayerAnimatorParameter.Z_DIRECTION, PreviousMoveDirection.z);
}
}
private Coroutine dashCoroutine;
private float finalSpeed;
private bool isMoving;
public bool IsMoving
{
get => isMoving;
set
{
isMoving = value;
iAnimationStateController.SetAnimationParameter(CombatPlayerAnimatorParameter.IS_MOVING, isMoving);
}
}
public bool EnableMove { get; set; } = true;
// Events
public delegate void StartDashEvent();
public event StartDashEvent OnStartDash;
public delegate void EndDashEvent();
public event EndDashEvent OnEndDash;
// Unity events
private void Start()
{
iAnimationStateController = GetComponent<IAnimationStateController>();
iMeleeComboAttackable = GetComponent<IMeleeComboAttackable>();
}
private void Update()
{
MoveAnimation();
FlipVisualLook();
}
private void FixedUpdate()
{
if (isDashing) return;
HandleMove();
if (!EnableMove || IsDashing) return;
ApplyMovement();
}
[Button("셋팅 초기화")]
private void InitSetting()
// Init
public void InitComponent(Rigidbody rb, Transform visualLook)
{
rb = GetComponent<Rigidbody>();
visualLook = GetComponentInChildren<Transform>();
Rb = rb;
this.visualLook = visualLook;
}
public void InputMovementValue(Vector2 movementInput)
// Event methods
public void HandleInputMovement(Vector2 movementInput)
{
currentMoveDirection = new Vector3(movementInput.x, 0, movementInput.y).normalized;
if (currentMoveDirection != Vector3.zero)
{
previousMoveDirection = currentMoveDirection;
}
isMoving = currentMoveDirection != Vector3.zero;
}
private void MoveAnimation()
public void HandleDash()
{
combatAnimator.SetIsMoving(isMoving);
if (isMoving)
if (!CanMove()) return;
if (iMeleeComboAttackable.CurrentComboAttackCount > 0)
{
combatAnimator.SetXDirection(previousMoveDirection.x);
combatAnimator.SetZDirection(previousMoveDirection.z);
iMeleeComboAttackable.EndComboAttack();
}
dashCoroutine = StartCoroutine(nameof(DashCoroutine));
}
public void HandleAttackInDash()
{
if (IsDashing)
{
EndDash(DashCooldown);
}
}
public void HandleEnableMove() => EnableMove = true;
public void HandleDisableMove() => EnableMove = false;
public void HandleEnableMoveAndDash()
{
EnableMove = true;
EnableDash = true;
}
public void HandleDisableMoveAndDash()
{
EnableMove = false;
EnableDash = false;
}
// Methods
private void FlipVisualLook()
{
var localScale = visualLook.localScale;
localScale.x = previousMoveDirection.x switch
localScale.x = PreviousMoveDirection.x switch
{
> 0.01f => Mathf.Abs(localScale.x),
< -0.01f => -Mathf.Abs(localScale.x),
@ -84,60 +160,75 @@ namespace BlueWaterProject
visualLook.localScale = localScale;
}
private void HandleMove()
private void ApplyMovement()
{
if (currentMoveDirection != Vector3.zero)
{
PreviousMoveDirection = currentMoveDirection;
}
IsMoving = currentMoveDirection != Vector3.zero;
var finalVelocity = currentMoveDirection * moveSpeed;
rb.velocity = finalVelocity;
Rb.velocity = finalVelocity;
}
// Dash
public void HandleDash()
private bool CanMove()
{
if (!enableDash || isDashing) return;
StartCoroutine(nameof(DashCoroutine));
return EnableDash && !IsDashing;
}
private IEnumerator DashCoroutine()
{
var dashDirection = previousMoveDirection;
isDashing = true;
enableDash = false;
combatAnimator.SetIsDash(true);
StartDash();
var elapsedTime = 0f;
while (!combatAnimator.animator.GetCurrentAnimatorStateInfo(0).IsName("DashState"))
{
elapsedTime += Time.deltaTime;
var dashDirection = PreviousMoveDirection;
var animationStarted = false;
yield return StartCoroutine(iAnimationStateController.WaitForAnimationToRun(CombatPlayerAnimationName.DASH_STATE,
success => animationStarted = success));
if (elapsedTime >= 1f)
{
yield break;
}
yield return null;
if (!animationStarted)
{
EndDash(0);
yield break;
}
var animationLength = combatAnimator.animator.GetCurrentAnimatorStateInfo(0).length;
combatAnimator.animator.speed = animationLength / dashTime;
iAnimationStateController.SetCurrentAnimationSpeed(DashTime);
while (combatAnimator.animator.GetCurrentAnimatorStateInfo(0).IsName("DashState") &&
combatAnimator.animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1f)
while (iAnimationStateController.IsComparingCurrentAnimation(CombatPlayerAnimationName.DASH_STATE) &&
iAnimationStateController.GetCurrentAnimationNormalizedTime() < 1f)
{
//var finalVelocity = rb.position + dashDirection * (dashSpeed * Time.fixedDeltaTime);
//rb.MovePosition(finalVelocity);
var finalVelocity = dashDirection * dashSpeed;
rb.velocity = finalVelocity;
var finalVelocity = dashDirection * DashSpeed;
Rb.velocity = finalVelocity;
yield return new WaitForFixedUpdate();
}
combatAnimator.animator.speed = 1f;
isDashing = false;
combatAnimator.SetIsDash(false);
StartCoroutine(Utils.CoolDown(dashCooldown, () => enableDash = true));
EndDash(DashCooldown);
}
private void StartDash()
{
OnStartDash?.Invoke();
EnableDash = false;
IsDashing = true;
}
public void EndDash(float dashCooldown)
{
if (dashCoroutine != null)
{
StopCoroutine(dashCoroutine);
dashCoroutine = null;
}
Rb.velocity = Vector3.zero;
iAnimationStateController.ResetAnimationSpeed();
OnEndDash?.Invoke();
IsDashing = false;
StartCoroutine(Utils.CoolDown(dashCooldown, () => EnableDash = true));
}
}
}
}

View File

@ -1,33 +1,115 @@
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.InputSystem;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class CombatPlayer : MonoBehaviour
{
[Required, SerializeField] private CombatInput input;
[Required, SerializeField] private CombatMovement movement;
[Required, SerializeField] private CombatAnimator animator;
// Components
[SerializeField] private Collider col;
[SerializeField] private Rigidbody rb;
[SerializeField] private PlayerInput playerInput;
[SerializeField] private Transform visualLook;
[SerializeField] private Animator anim;
[SerializeField] private SpriteRenderer spriteRenderer;
[SerializeField] private CombatInput input;
[SerializeField] private CombatMovement movement;
[SerializeField] private CombatAnimator animator;
[SerializeField] private CombatAttacker attacker;
[SerializeField] private CombatHealth health;
[SerializeField] private CombatSkillController skillController;
// Unity events
private void Awake()
{
movement.combatAnimator = animator;
InitComponent();
}
private void Start()
{
input.OnMoveInputReceived += movement.InputMovementValue;
// Input
input.OnMoveInputReceived += movement.HandleInputMovement;
input.OnDashInputReceived += movement.HandleDash;
input.OnAttackInputReceived += attacker.HandleAttack;
input.OnActivateMainSkillInputReceived += skillController.HandleMainSkill;
// Movement
movement.OnStartDash += skillController.HandleDisableSkill;
movement.OnEndDash += skillController.HandleEnableSkill;
// Attacker
attacker.OnAttackInDashing += movement.HandleAttackInDash;
attacker.OnStartAttack += movement.HandleDisableMove;
attacker.OnStartAttack += skillController.HandleDisableSkill;
attacker.OnEndAttack += movement.HandleEnableMove;
attacker.OnEndAttack += skillController.HandleEnableSkill;
// SkillController
skillController.OnStartSkill += movement.HandleDisableMoveAndDash;
skillController.OnStartSkill += attacker.HandleDisableAttack;
skillController.OnEndSkill += movement.HandleEnableMoveAndDash;
skillController.OnEndSkill += attacker.HandleEnableAttack;
}
[Button("셋팅 초기화")]
private void InitSetting()
private void OnDestroy()
{
// Input
input.OnMoveInputReceived -= movement.HandleInputMovement;
input.OnDashInputReceived -= movement.HandleDash;
input.OnAttackInputReceived -= attacker.HandleAttack;
input.OnActivateMainSkillInputReceived -= skillController.HandleMainSkill;
// Movement
movement.OnStartDash -= skillController.HandleDisableSkill;
movement.OnEndDash -= skillController.HandleEnableSkill;
// Attacker
attacker.OnAttackInDashing -= movement.HandleAttackInDash;
attacker.OnStartAttack -= movement.HandleDisableMove;
attacker.OnStartAttack -= skillController.HandleDisableSkill;
attacker.OnEndAttack -= movement.HandleEnableMove;
attacker.OnEndAttack -= skillController.HandleEnableSkill;
// SkillController
skillController.OnStartSkill -= movement.HandleDisableMoveAndDash;
skillController.OnStartSkill -= attacker.HandleEnableAttack;
skillController.OnEndSkill -= movement.HandleEnableMoveAndDash;
skillController.OnEndSkill -= attacker.HandleDisableAttack;
}
// Init
[Button("셋팅 초기화")]
private void InitComponent()
{
col = GetComponent<Collider>();
rb = GetComponent<Rigidbody>();
playerInput = GetComponent<PlayerInput>();
visualLook = transform.Find("VisualLook");
anim = visualLook.GetComponent<Animator>();
spriteRenderer = visualLook.GetComponent<SpriteRenderer>();
input = GetComponent<CombatInput>();
movement = GetComponent<CombatMovement>();
animator = GetComponent<CombatAnimator>();
attacker = GetComponent<CombatAttacker>();
health = GetComponent<CombatHealth>();
skillController = GetComponent<CombatSkillController>();
input.InitComponent(playerInput);
movement.InitComponent(rb, visualLook);
animator.InitComponent(anim);
attacker.InitComponent(rb);
health.InitComponent(spriteRenderer);
skillController.InitComponent(col, rb, visualLook, anim);
}
}
}
}

View File

@ -0,0 +1,99 @@
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class CombatSkillController : MonoBehaviour
{
// Components
[SerializeField] private BaseSkill mainSkill;
private BaseSkill instantiateMainSkill;
private Collider col;
private Rigidbody rb;
private Transform visualLook;
private Animator anim;
// Interfaces
private IMeleeComboAttackable iMeleeComboAttackable;
// Variables
private bool enableSkill = true;
private bool isActivatingSkill;
// Events
public delegate void StartSkillEvent();
public event StartSkillEvent OnStartSkill;
public delegate void EndSkillEvent();
public event EndSkillEvent OnEndSkill;
// Unity events
private void Start()
{
iMeleeComboAttackable = GetComponent<IMeleeComboAttackable>();
InitSkill();
}
// Init methods
public void InitComponent(Collider collider, Rigidbody rigidbody, Transform visualLook, Animator animator)
{
col = collider;
rb = rigidbody;
this.visualLook = visualLook;
anim = animator;
}
private void InitSkill()
{
instantiateMainSkill = Instantiate(mainSkill);
if (instantiateMainSkill == null) return;
var targetLayer = iMeleeComboAttackable.TargetLayer;
var ui = UiManager.Inst.CombatUi.MainSkillUi;
ui.gameObject.SetActive(true);
instantiateMainSkill.SkillInputData.InitInputData(transform, col, rb, null, visualLook, anim, null, targetLayer, ui);
}
// Events methods
public void HandleEnableSkill() => enableSkill = true;
public void HandleDisableSkill() => enableSkill = false;
public void HandleMainSkill()
{
if (!CanSkill()) return;
StartSkill();
instantiateMainSkill.ActivateSkill(EndSkill);
}
// Methods
private bool CanSkill()
{
if (!enableSkill || isActivatingSkill) return false;
instantiateMainSkill.SkillInputData.StartPosition = rb.position;
var enableMainSkill = instantiateMainSkill.EnableSkill();
return enableMainSkill;
}
private void StartSkill()
{
// 이동, 공격, 대쉬 X 이벤트
OnStartSkill?.Invoke();
enableSkill = false;
isActivatingSkill = true;
rb.velocity = Vector3.zero;
}
private void EndSkill()
{
// 이동, 공격, 대쉬 O 이벤트
OnEndSkill?.Invoke();
enableSkill = true;
isActivatingSkill = false;
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: d8ce76942ad0280489b33193acecfb5f

View File

@ -0,0 +1,30 @@
using System;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
[Serializable]
public class ComboAttack
{
[field: Tooltip("콤보별 공격 데미지")]
[field: SerializeField]
public float Damage { get; set; } = 10f;
[field: Range(0.1f, 5f), Tooltip("공격 범위 사거리(반지름)")]
[field: SerializeField]
public float Range { get; set; } = 1.5f;
[field: Range(0f, 360f), Tooltip("공격 범위 각도")]
[field: SerializeField]
public float Angle { get; set; } = 180f;
[field: Range(0.1f, 2f), Tooltip("콤보 공격 포함 총 걸리는 시간")]
[field: SerializeField]
public float Speed { get; set; } = 0.3f;
[field: Tooltip("콤보별 공격시 이동거리")]
[field: SerializeField]
public float MovePower { get; set; }
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 4df83d31a74aad34a9b47f8da4bc613e

View File

@ -130,7 +130,7 @@ namespace BlueWaterProject
var skill = Instantiate(element, Vector3.zero, Quaternion.identity);
skillDictionary.Add(skill.SkillName, skill);
skill.SkillInputData.InitInputData(capsuleCollider, rb, agent, visualLook, animator, Target, targetLayer, null);
skill.SkillInputData.InitInputData(transform, capsuleCollider, rb, agent, visualLook, animator, Target, targetLayer, null);
skill.InitData();
instanceSkillList.Add(skill);
}

View File

@ -14,6 +14,7 @@ namespace BlueWaterProject
[field: SerializeField] public Canvas WorldSpaceCanvas { get; private set; }
[field: SerializeField] public SkillUi MainSkillUi { get; private set; }
[field: SerializeField] public FieldBossHpSlider FieldBossHpSlider { get; private set; }
[field: SerializeField] public HeartHpUi HeartHpUi { get; set; }
[field: SerializeField] public DropItemGroupController DropItemGroupController { get; set; }
[field: SerializeField] public ItemInventoryUi OceanItemInventoryUi { get; set; }
[field: SerializeField] public ItemInventoryUi CombatItemInventoryUi { get; set; }
@ -33,6 +34,7 @@ namespace BlueWaterProject
WorldSpaceCanvas = GameObject.Find("WorldSpaceCanvas").GetComponent<Canvas>();
MainSkillUi = MainCanvas.transform.Find("MainSkillUi").GetComponent<SkillUi>();
FieldBossHpSlider = MainCanvas.transform.Find("FieldBossHpSlider").GetComponent<FieldBossHpSlider>();
HeartHpUi = MainCanvas.transform.Find("HeartHpUi").GetComponent<HeartHpUi>();
DropItemGroupController = MainCanvas.transform.Find("DropItemGroup").GetComponent<DropItemGroupController>();
OceanItemInventoryUi = MainCanvas.transform.Find("OceanItemInventoryUi").GetComponent<ItemInventoryUi>();
CombatItemInventoryUi = MainCanvas.transform.Find("CombatItemInventoryUi").GetComponent<ItemInventoryUi>();

View File

@ -0,0 +1,21 @@
using System;
using System.Collections;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public interface IAnimationStateController
{
void SetAnimationParameter<T>(T parameter, bool value);
void SetAnimationParameter<T>(T parameter, int value);
void SetAnimationParameter<T>(T parameter, float value);
void SetAnimationTrigger<T>(T parameter);
bool IsComparingCurrentAnimation(string animationName, int animatorLayer = 0);
bool IsComparingCurrentAnimation<T>(T animationName, int animatorLayer = 0);
IEnumerator WaitForAnimationToRun(string animationName, Action<bool> onSuccess, float timeout = 0.2f);
IEnumerator WaitForAnimationToRun<T>(T animationName, Action<bool> onSuccess, float timeout = 0.2f);
void SetCurrentAnimationSpeed(float targetDuration, int animatorLayer = 0);
float GetCurrentAnimationNormalizedTime(int animatorLayer = 0);
void ResetAnimationSpeed();
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 7274fd4e8e40b21448be0c0e0205da6a

View File

@ -0,0 +1,14 @@
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public interface IDashable
{
bool EnableDash { get; set; }
bool IsDashing { get; set; }
float DashSpeed { get; set; }
float DashTime { get; set; }
float DashCooldown { get; set; }
void HandleDash();
void EndDash(float dashCooldown);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f0f726bda53a407489641469d9143bdd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,19 @@
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public interface IMeleeComboAttackable
{
int MaxHitCount { get; set; }
ComboAttack[] ComboAttacks { get; set; }
bool UsedMouseAttack { get; set; }
int CurrentComboAttackCount { get; set; }
bool IsComboAttackPossible { get; set; }
bool IsComboAttacking { get; set; }
Collider[] HitColliders { get; set; }
LayerMask TargetLayer { get; set; }
void HandleAttack(bool usedMouseAttack);
void EndComboAttack();
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1b4c3fbd22d0ce84c8197297dc808518
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,12 @@
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public interface IRigidMovable
{
Rigidbody Rb { get; set; }
bool EnableMove { get; set; }
Vector3 PreviousMoveDirection { get; set; }
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 333346889738f664a9f716a94e210d19
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,132 @@
using System;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.Rendering.Universal;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
[Serializable]
public class SkillInputData
{
[field: Title("초기화 데이터")]
[field: SerializeField] public Transform Transform { get; set; }
[field: SerializeField] public Collider PlayerCollider { get; set; }
[field: SerializeField] public Rigidbody PlayerRb { get; set; }
[field: SerializeField] public NavMeshAgent PlayerAgent { get; set; }
[field: SerializeField] public Transform PlayerVisualLook { get; set; }
[field: SerializeField] public Animator PlayerAnimator { get; set; }
[field: SerializeField] public Collider TargetCollider { get; set; }
[field: SerializeField] public LayerMask TargetLayer { get; set; }
[field: SerializeField] public SkillUi SkillUi { get; set; }
public Vector3 StartPosition { get; set; }
public Vector3 PreviousDirection { get; set; }
public void InitInputData(Transform transform, Collider collider, Rigidbody rb, NavMeshAgent playerAgent, Transform visualLook, Animator animator, Collider target, LayerMask layer, SkillUi ui)
{
Transform = transform;
PlayerCollider = collider;
PlayerRb = rb;
PlayerAgent = playerAgent;
PlayerVisualLook = visualLook;
PlayerAnimator = animator;
TargetCollider = target;
TargetLayer = layer;
SkillUi = ui;
}
}
public abstract class BaseSkill : MonoBehaviour
{
/***********************************************************************
* Variables
***********************************************************************/
#region Variables
// Skill Data
[field: Title("스킬 데이터")]
[field: SerializeField] public SkillData SkillData { get; private set; }
[DisableIf("@true")]
[SerializeField] protected bool enableSkill = true;
// Indicator
[Title("스킬 표시기 옵션")]
[SerializeField] protected bool isUsingIndicator = true;
[SerializeField] protected DecalProjector indicator;
[field: DisableIf("@true")]
[field: SerializeField] public SkillInputData SkillInputData { get; set; }
// Hashes
protected static readonly int FillHash = Shader.PropertyToID("_Fill");
#endregion
/***********************************************************************
* Unity Events
***********************************************************************/
#region Unity Events
private void Start()
{
InitData();
}
#endregion
/***********************************************************************
* Interfaces
***********************************************************************/
#region Interfaces
public abstract void ActivateSkill(params Action[] actions);
public virtual bool EnableSkill() => enableSkill;
protected virtual void InitData()
{
BasicSetting();
HideIndicator();
}
#endregion
/***********************************************************************
* Methods
***********************************************************************/
#region Methods
protected virtual void BasicSetting()
{
if (isUsingIndicator && indicator)
{
indicator.scaleMode = DecalScaleMode.InheritFromHierarchy;
indicator.material = new Material(indicator.material);
indicator.material.SetFloat(FillHash, 0f);
}
}
protected virtual void HideIndicator()
{
if (isUsingIndicator && indicator)
{
indicator.enabled = false;
indicator.material.SetFloat(FillHash, 0);
}
}
protected virtual void ShowIndicator()
{
if (isUsingIndicator && indicator)
{
indicator.material.SetFloat(FillHash, 0);
indicator.enabled = true;
}
}
#endregion
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: b5bf25014c6ac1a479d986ba3eb2c847

View File

@ -8,34 +8,34 @@ using UnityEngine.Rendering.Universal;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
[Serializable]
public class SkillInputData
{
[field: Title("초기화 데이터")]
[field: SerializeField] public Collider PlayerCollider { get; set; }
[field: SerializeField] public Rigidbody PlayerRb { get; set; }
[field: SerializeField] public NavMeshAgent PlayerAgent { get; set; }
[field: SerializeField] public Transform PlayerVisualLook { get; set; }
[field: SerializeField] public Animator PlayerAnimator { get; set; }
[field: SerializeField] public Collider TargetCollider { get; set; }
[field: SerializeField] public LayerMask TargetLayer { get; set; }
[field: SerializeField] public SkillUi SkillUi { get; set; }
public Vector3 StartPosition { get; set; }
public Vector3 PreviousDirection { get; set; }
public void InitInputData(Collider collider, Rigidbody rb, NavMeshAgent playerAgent, Transform visualLook, Animator animator, Collider target, LayerMask layer, SkillUi ui)
{
PlayerCollider = collider;
PlayerRb = rb;
PlayerAgent = playerAgent;
PlayerVisualLook = visualLook;
PlayerAnimator = animator;
TargetCollider = target;
TargetLayer = layer;
SkillUi = ui;
}
}
// [Serializable]
// public class SkillInputData
// {
// [field: Title("초기화 데이터")]
// [field: SerializeField] public Collider PlayerCollider { get; set; }
// [field: SerializeField] public Rigidbody PlayerRb { get; set; }
// [field: SerializeField] public NavMeshAgent PlayerAgent { get; set; }
// [field: SerializeField] public Transform PlayerVisualLook { get; set; }
// [field: SerializeField] public Animator PlayerAnimator { get; set; }
// [field: SerializeField] public Collider TargetCollider { get; set; }
// [field: SerializeField] public LayerMask TargetLayer { get; set; }
// [field: SerializeField] public SkillUi SkillUi { get; set; }
//
// public Vector3 StartPosition { get; set; }
// public Vector3 PreviousDirection { get; set; }
//
// public void InitInputData(Collider collider, Rigidbody rb, NavMeshAgent playerAgent, Transform visualLook, Animator animator, Collider target, LayerMask layer, SkillUi ui)
// {
// PlayerCollider = collider;
// PlayerRb = rb;
// PlayerAgent = playerAgent;
// PlayerVisualLook = visualLook;
// PlayerAnimator = animator;
// TargetCollider = target;
// TargetLayer = layer;
// SkillUi = ui;
// }
// }
public abstract class SkillBase : MonoBehaviour, ISkill
{

View File

@ -0,0 +1,24 @@
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
[CreateAssetMenu(fileName = "NewSkillData", menuName = "ScriptableObjects/Skills/SkillData")]
public class SkillData : ScriptableObject
{
[field: SerializeField] public string Name { get; set; }
[field: TextArea(3, 10)]
[field: SerializeField] public string Description { get; set; }
[field: SerializeField] public float Damage { get; set; }
[field: SerializeField] public float Cooldown { get; set; }
[field: SerializeField] public float Range { get; set; }
[field: SerializeField] public float CastingTime { get; set; }
[field: SerializeField] public float Duration { get; set; }
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 134e3d2eb4ca75b4bb18832c2b875454

View File

@ -1,5 +1,6 @@
fileFormatVersion: 2
guid: c3b0bd4a4e0b19c44a602a873d5c96c9
guid: 3732a643b4e49f440ba8408dded9d282
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f83165d1b2f27da47bdc869c97aed90f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,21 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 134e3d2eb4ca75b4bb18832c2b875454, type: 3}
m_Name: TheWaltzOfTheSword
m_EditorClassIdentifier:
<Name>k__BackingField: "\uAC80\uC758 \uC648\uCE20"
<Description>k__BackingField:
<Damage>k__BackingField: 20
<Cooldown>k__BackingField: 5
<Range>k__BackingField: 5
<CastingTime>k__BackingField: 0.5
<Duration>k__BackingField: 1.8

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9fd5b3a40dbd8ee468b461b3e607c81c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0f3e56e8f89fa3346b0c173f23599038
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,21 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 134e3d2eb4ca75b4bb18832c2b875454, type: 3}
m_Name: BullCharge
m_EditorClassIdentifier:
<Name>k__BackingField: "\uD669\uC18C \uB3CC\uC9C4"
<Description>k__BackingField:
<Damage>k__BackingField: 10
<Cooldown>k__BackingField: 6
<Range>k__BackingField: 0
<CastingTime>k__BackingField: 1
<Duration>k__BackingField: 0

View File

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

View File

@ -0,0 +1,21 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 134e3d2eb4ca75b4bb18832c2b875454, type: 3}
m_Name: HammerSlam
m_EditorClassIdentifier:
<Name>k__BackingField: "\uB9DD\uCE58 \uAC15\uD0C0"
<Description>k__BackingField:
<Damage>k__BackingField: 10
<Cooldown>k__BackingField: 3
<Range>k__BackingField: 3.5
<CastingTime>k__BackingField: 1
<Duration>k__BackingField: 0

View File

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

View File

@ -0,0 +1,21 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 134e3d2eb4ca75b4bb18832c2b875454, type: 3}
m_Name: MeteorSwing
m_EditorClassIdentifier:
<Name>k__BackingField: "\uC720\uC131 \uD718\uB450\uB974\uAE30"
<Description>k__BackingField:
<Damage>k__BackingField: 10
<Cooldown>k__BackingField: 10
<Range>k__BackingField: 3
<CastingTime>k__BackingField: 1
<Duration>k__BackingField: 0

View File

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

View File

@ -0,0 +1,21 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 134e3d2eb4ca75b4bb18832c2b875454, type: 3}
m_Name: SeismicThrust
m_EditorClassIdentifier:
<Name>k__BackingField: "\uC9C0\uC9C4 \uD30C\uB3D9"
<Description>k__BackingField:
<Damage>k__BackingField: 10
<Cooldown>k__BackingField: 15
<Range>k__BackingField: 12
<CastingTime>k__BackingField: 0.5
<Duration>k__BackingField: 0

View File

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

View File

@ -0,0 +1,21 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 134e3d2eb4ca75b4bb18832c2b875454, type: 3}
m_Name: SkyfallSmash
m_EditorClassIdentifier:
<Name>k__BackingField: "\uCC3D\uACF5\uC758 \uB099\uD558"
<Description>k__BackingField:
<Damage>k__BackingField: 30
<Cooldown>k__BackingField: 20
<Range>k__BackingField: 5
<CastingTime>k__BackingField: 1
<Duration>k__BackingField: 0

View File

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

View File

@ -1,4 +1,5 @@
using System;
using System.Collections;
using System.Linq;
using Sirenix.OdinInspector;
using UnityEngine;
@ -7,46 +8,75 @@ using Random = UnityEngine.Random;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class TheWaltzOfTheSword : SkillBase
public class TheWaltzOfTheSword : BaseSkill
{
[Title("추가 설정")]
public bool returnToStartPosition;
public bool isHitStop = true;
[ShowIf("@isHitStop")]
public float hitStopDuration = 0.3f;
public bool isMovingCamera = true;
public ParticleSystem readyEffect;
public ParticleSystem hitEffect;
private enum Direction
{
NONE = -1,
LEFT,
BACK,
RIGHT
}
[field: SerializeField] public Collider[] HitColliders { get; private set; } = new Collider[MAX_HIT_NUM];
public int HitSize { get; private set; }
[Title("추가 설정")]
[SerializeField] private bool returnToStartPosition;
[SerializeField] private bool isHitStop = true;
[ShowIf("@isHitStop")]
[SerializeField] private float hitStopDuration = 0.3f;
[SerializeField] private bool isMovingCamera;
[SerializeField] private ParticleSystem readyEffect;
[SerializeField] private ParticleSystem hitEffect;
[SerializeField] private Collider[] hitColliders = new Collider[MAX_HIT_NUM];
private IAnimationStateController iAnimationStateController;
private IRigidMovable iRigidMovable;
private Coroutine readyToSkillCoroutine;
private Coroutine skillCoroutine;
private int hitCount;
private int attackCount;
private int currentHitCount;
private float intervalTime;
private Direction currentDirection;
private bool previousLeft;
private bool isMoved;
private const int MAX_HIT_NUM = 6;
public override void ActivateSkill(params Action[] onCompleted)
{
SortCollidersByDistance();
if (iAnimationStateController == null)
{
iAnimationStateController = SkillInputData.Transform.GetComponent<IAnimationStateController>();
}
if (iRigidMovable == null)
{
iRigidMovable = SkillInputData.Transform.GetComponent<IRigidMovable>();
}
ReadySkill = false;
readyEffect.Play();
CoolDown(Cooldown, () => ReadySkill = true);
SkillInputData.SkillUi.Cooldown(Cooldown);
readyToSkillCoroutine = StartCoroutine(ReadyToSkillCoroutine(onCompleted));
}
public override bool EnableSkill()
{
if (!ReadySkill) return false;
if (!enableSkill) return false;
HitColliders = new Collider[MAX_HIT_NUM];
HitSize = Physics.OverlapSphereNonAlloc(SkillInputData.StartPosition, Range, HitColliders,SkillInputData.TargetLayer);
var readySkill = HitSize > 0;
hitColliders = new Collider[MAX_HIT_NUM];
hitCount = Physics.OverlapSphereNonAlloc(SkillInputData.StartPosition, SkillData.Range, hitColliders,SkillInputData.TargetLayer);
return readySkill;
return hitCount > 0;
}
public override void InitData()
protected override void InitData()
{
base.InitData();
var parent = SkillInputData.PlayerCollider.transform.Find("Particles");
if (!parent)
{
@ -55,19 +85,199 @@ namespace BlueWaterProject
}
readyEffect = Instantiate(readyEffect, Vector3.zero, Quaternion.identity, parent);
}
private IEnumerator ReadyToSkillCoroutine(params Action[] onCompleted)
{
enableSkill = false;
readyEffect.Play();
SortCollidersByDistance();
iAnimationStateController.SetAnimationParameter(CombatPlayerAnimatorParameter.IS_READY_MAIN_SKILL, true);
var animationStarted = false;
yield return StartCoroutine(iAnimationStateController.WaitForAnimationToRun(CombatPlayerAnimationName.READY_TO_MAIN_SKILL,
success => animationStarted = success));
if (!animationStarted)
{
EndReadyToSkill(0, onCompleted[0]);
yield break;
}
iAnimationStateController.SetCurrentAnimationSpeed(SkillData.CastingTime);
while (iAnimationStateController.IsComparingCurrentAnimation(CombatPlayerAnimationName.READY_TO_MAIN_SKILL) &&
iAnimationStateController.GetCurrentAnimationNormalizedTime() < 1f)
{
yield return null;
}
EndReadyToSkill(SkillData.Cooldown, null);
skillCoroutine = StartCoroutine(SkillCoroutine(onCompleted));
}
private void EndReadyToSkill(float cooldown, Action enableMove)
{
if (readyToSkillCoroutine != null)
{
StopCoroutine(readyToSkillCoroutine);
readyToSkillCoroutine = null;
}
enableMove?.Invoke();
iAnimationStateController.ResetAnimationSpeed();
iAnimationStateController.SetAnimationParameter(CombatPlayerAnimatorParameter.IS_READY_MAIN_SKILL, false);
StartCoroutine(Utils.CoolDown(cooldown, () => enableSkill = true));
SkillInputData.SkillUi.Cooldown(cooldown);
}
private IEnumerator SkillCoroutine(params Action[] onCompleted)
{
iAnimationStateController.SetAnimationParameter(CombatPlayerAnimatorParameter.IS_ACTIVATE_MAIN_SKILL, true);
var animationStarted = false;
yield return StartCoroutine(iAnimationStateController.WaitForAnimationToRun(CombatPlayerAnimationName.MAIN_SKILL,
success => animationStarted = success));
if (!animationStarted)
{
EndSkill(onCompleted[0]);
yield break;
}
iAnimationStateController.SetCurrentAnimationSpeed(SkillData.Duration);
intervalTime = 1f / 6f;
if (isMovingCamera)
{
CameraManager.Inst.CombatCamera.SetFollowAndLookAt(null);
}
SkillInputData.PlayerRb.isKinematic = true;
SkillInputData.PlayerCollider.enabled = false;
currentDirection = Direction.BACK;
previousLeft = false;
isMoved = false;
attackCount = 0;
currentHitCount = 0;
while (iAnimationStateController.IsComparingCurrentAnimation(CombatPlayerAnimationName.MAIN_SKILL) &&
attackCount < 6)
{
if (!isMoved)
{
MovePoint(hitColliders[currentHitCount], currentDirection);
}
else if (iAnimationStateController.GetCurrentAnimationNormalizedTime() >= intervalTime * (attackCount + 1))
{
ExecuteAttackRoutine(onCompleted[0]);
}
yield return null;
}
EndSkill(onCompleted[0]);
}
private void MovePoint(Collider hitCollider, Direction direction)
{
var center = hitCollider.bounds.center;
var addX = 0f;
var addZ = 0f;
switch(direction)
{
case Direction.NONE:
break;
case Direction.LEFT:
iRigidMovable.PreviousMoveDirection = Vector3.right;
addX = -hitCollider.bounds.extents.x;
currentDirection = Direction.BACK;
break;
case Direction.BACK:
addZ = hitCollider.bounds.extents.z;
if (previousLeft)
{
currentDirection = Direction.RIGHT;
}
else
{
currentDirection = Direction.LEFT;
}
previousLeft = !previousLeft;
break;
case Direction.RIGHT:
iRigidMovable.PreviousMoveDirection = Vector3.left;
addX = hitCollider.bounds.extents.x;
currentDirection = Direction.BACK;
break;
default:
throw new ArgumentOutOfRangeException(nameof(direction), direction, null);
}
var newPosition = new Vector3(center.x + addX, SkillInputData.Transform.position.y, center.z + addZ);
SkillInputData.PlayerRb.position = newPosition;
isMoved = true;
}
private void ExecuteAttackRoutine(Action enableMove)
{
DoAttack(hitColliders[currentHitCount]);
attackCount++;
AddCurrentNum();
for (var i = 0; i < hitCount; i++)
{
if (!IsTargetAlive(hitColliders[currentHitCount]))
{
AddCurrentNum();
continue;
}
isMoved = false;
return;
}
EndSkill(enableMove);
}
private void AddCurrentNum()
{
currentHitCount = (currentHitCount + 1) % hitCount;
}
private void EndSkill(Action enableMove)
{
if (skillCoroutine != null)
{
StopCoroutine(skillCoroutine);
skillCoroutine = null;
}
iAnimationStateController.ResetAnimationSpeed();
iAnimationStateController.SetAnimationParameter(CombatPlayerAnimatorParameter.IS_ACTIVATE_MAIN_SKILL, false);
enableMove?.Invoke();
SkillInputData.PlayerRb.isKinematic = false;
SkillInputData.PlayerCollider.enabled = true;
}
private void SortCollidersByDistance()
{
HitColliders = HitColliders
hitColliders = hitColliders
.Where(c => c != null)
.OrderBy(c => (c.transform.position - transform.position).sqrMagnitude)
.ToArray();
}
public void SkillAttackTiming(Collider hitCollider)
private void DoAttack(Collider hitCollider)
{
var iDamageable = hitCollider.GetComponent<IDamageable>();
iDamageable.TakeDamage(Damage);
iDamageable.TakeDamage(SkillData.Damage);
if (iDamageable.GetCurrentHp() == 0f)
{
@ -86,10 +296,9 @@ namespace BlueWaterProject
Random.Range(bounds.min.y, bounds.max.y),
Random.Range(bounds.min.z, bounds.max.z)
);
var effect = Instantiate(hitEffect, randomPosition, Quaternion.identity, instantiateLocation);
var effect = Instantiate(hitEffect, randomPosition, Quaternion.identity);
effect.Play();
}
}
public bool IsTargetAlive(Collider hitCollider)
@ -106,7 +315,7 @@ namespace BlueWaterProject
public bool AllTargetsAreDead()
{
return HitColliders.All(c => c == null || !IsTargetAlive(c));
return hitColliders.All(c => c == null || !IsTargetAlive(c));
}
}
}

View File

@ -0,0 +1,67 @@
using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.UI;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class HeartHpUi : MonoBehaviour
{
[SerializeField, Required] private Transform heartsLayout;
[SerializeField, Required] private GameObject heartPrefab;
[Range(1, 10)]
[SerializeField] private int maxHeartCount = 5;
[SerializeField] private List<Image> heartImageList = new();
// Resources
[SerializeField] private Sprite fullHeart;
[SerializeField] private Sprite halfHeart;
[SerializeField] private Sprite emptyHeart;
private void Awake()
{
InitHeart();
}
private void InitHeart()
{
foreach (Transform element in heartsLayout)
{
Destroy(element.gameObject);
}
heartImageList = new List<Image>(maxHeartCount);
for (var i = 0; i < maxHeartCount; i++)
{
var newHeart = Instantiate(heartPrefab, heartsLayout).GetComponent<Image>();
heartImageList.Add(newHeart);
}
}
public void SetCurrentHp(int currentHp)
{
var fullHearts = currentHp / 2;
var existHalfHeart = currentHp % 2 != 0;
for (var i = 0; i < heartImageList.Count; i++)
{
if (i < fullHearts)
{
heartImageList[i].sprite = fullHeart;
}
else if (i == fullHearts && existHalfHeart)
{
heartImageList[i].sprite = halfHeart;
}
else
{
heartImageList[i].sprite = emptyHeart;
}
}
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: d75a19165bcac1e4992403ab2cc27e97

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,140 @@
fileFormatVersion: 2
guid: eeadd8a8fd9fc0845b55082a7cd5c484
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 256
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Windows Store Apps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,140 @@
fileFormatVersion: 2
guid: 75f333a56e5fcb846aa181c4ee90b675
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 256
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Windows Store Apps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,140 @@
fileFormatVersion: 2
guid: 93d6c20681d26f5459a6bf7bc2b0a3c4
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 256
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Windows Store Apps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -3277,7 +3277,7 @@ MonoBehaviour:
<MaxHp>k__BackingField: 100
<CurrentHp>k__BackingField: 0
<MoveSpd>k__BackingField: 5
<Atk>k__BackingField: 10
<Atk>k__BackingField: 1
<AtkCooldown>k__BackingField: 1
<AtkRange>k__BackingField: 1.5
<DefenseRange>k__BackingField: 20

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1dd4685ea00f078438ba2da289b3bd26
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,77 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &802100244533984703
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4877169289728250219}
- component: {fileID: 7609574497803085177}
- component: {fileID: 8900327665232277449}
m_Layer: 5
m_Name: Heart
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4877169289728250219
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 802100244533984703}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 60, y: 60}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7609574497803085177
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 802100244533984703}
m_CullTransparentMesh: 1
--- !u!114 &8900327665232277449
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 802100244533984703}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 75f333a56e5fcb846aa181c4ee90b675, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 627c70e13fd93494e8e194f0eaf2c9df
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,508 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5135070360579407439
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2754806907860164217}
- component: {fileID: 2569602580055754578}
m_Layer: 5
m_Name: HeartHpUi
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2754806907860164217
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5135070360579407439}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3219224117066786199}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &2569602580055754578
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5135070360579407439}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d75a19165bcac1e4992403ab2cc27e97, type: 3}
m_Name:
m_EditorClassIdentifier:
heartsLayout: {fileID: 3219224117066786199}
heartPrefab: {fileID: 802100244533984703, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
maxHeartCount: 2
heartImageList: []
fullHeart: {fileID: 21300000, guid: 75f333a56e5fcb846aa181c4ee90b675, type: 3}
halfHeart: {fileID: 21300000, guid: 93d6c20681d26f5459a6bf7bc2b0a3c4, type: 3}
emptyHeart: {fileID: 21300000, guid: eeadd8a8fd9fc0845b55082a7cd5c484, type: 3}
--- !u!1 &6355063536985655860
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3219224117066786199}
- component: {fileID: 7746833053608042544}
m_Layer: 5
m_Name: HeartsLayout
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3219224117066786199
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6355063536985655860}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7063899068830901721}
- {fileID: 7192459016687938227}
- {fileID: 90424455910538200}
m_Father: {fileID: 2754806907860164217}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 10, y: -10}
m_SizeDelta: {x: 60, y: 60}
m_Pivot: {x: 0, y: 1}
--- !u!114 &7746833053608042544
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6355063536985655860}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 10
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!1001 &2341749754545781720
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 3219224117066786199}
m_Modifications:
- target: {fileID: 802100244533984703, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_Name
value: Heart (1)
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_SizeDelta.x
value: 60
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_SizeDelta.y
value: 60
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8900327665232277449, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_Sprite
value:
objectReference: {fileID: 21300000, guid: 93d6c20681d26f5459a6bf7bc2b0a3c4,
type: 3}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 627c70e13fd93494e8e194f0eaf2c9df, type: 3}
--- !u!224 &7192459016687938227 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
m_PrefabInstance: {fileID: 2341749754545781720}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2424956840628630706
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 3219224117066786199}
m_Modifications:
- target: {fileID: 802100244533984703, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_Name
value: Heart
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_SizeDelta.x
value: 60
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_SizeDelta.y
value: 60
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 627c70e13fd93494e8e194f0eaf2c9df, type: 3}
--- !u!224 &7063899068830901721 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
m_PrefabInstance: {fileID: 2424956840628630706}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &4822914505765579443
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 3219224117066786199}
m_Modifications:
- target: {fileID: 802100244533984703, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_Name
value: Heart (2)
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_SizeDelta.x
value: 60
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_SizeDelta.y
value: 60
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8900327665232277449, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
propertyPath: m_Sprite
value:
objectReference: {fileID: 21300000, guid: eeadd8a8fd9fc0845b55082a7cd5c484,
type: 3}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 627c70e13fd93494e8e194f0eaf2c9df, type: 3}
--- !u!224 &90424455910538200 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 4877169289728250219, guid: 627c70e13fd93494e8e194f0eaf2c9df,
type: 3}
m_PrefabInstance: {fileID: 4822914505765579443}
m_PrefabAsset: {fileID: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 22cc85c188cd0f54e8eb09e6d7c89b40
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -44,16 +44,13 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 2748ef62a9ba8734986610a7072e7155, type: 3}
m_Name:
m_EditorClassIdentifier:
<SkillName>k__BackingField: TheWaltzOfTheSword
<ReadySkill>k__BackingField: 1
<Damage>k__BackingField: 20
<Cooldown>k__BackingField: 5
<Range>k__BackingField: 5
<CastingTime>k__BackingField: 0.5
<SkillDuration>k__BackingField: 1.8
isUsingIndicator: 1
<SkillData>k__BackingField: {fileID: 11400000, guid: 9fd5b3a40dbd8ee468b461b3e607c81c,
type: 2}
enableSkill: 1
isUsingIndicator: 0
indicator: {fileID: 0}
<SkillInputData>k__BackingField:
<Transform>k__BackingField: {fileID: 0}
<PlayerCollider>k__BackingField: {fileID: 0}
<PlayerRb>k__BackingField: {fileID: 0}
<PlayerAgent>k__BackingField: {fileID: 0}
@ -72,7 +69,7 @@ MonoBehaviour:
type: 3}
hitEffect: {fileID: 6909896828301235070, guid: b1ca28b8904fe0f4484fdb06b8c55086,
type: 3}
<HitColliders>k__BackingField:
hitColliders:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}

View File

@ -0,0 +1,101 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: BackComboAttack1
serializedVersion: 7
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves:
- serializedVersion: 2
curve:
- time: 0
value: {fileID: -8273695093530358050, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.07
value: {fileID: -7532279746763670837, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.14
value: {fileID: -6690643586923134871, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.21
value: {fileID: -364200943543637980, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.29
value: {fileID: 5655127320682784782, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.36
value: {fileID: -7825454764802691781, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.43
value: {fileID: -8967544251284020822, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.5
value: {fileID: -3882585022272345765, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
flags: 2
m_SampleRate: 100
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
isIntCurve: 0
isSerializeReferenceCurve: 0
pptrCurveMapping:
- {fileID: -8273695093530358050, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -7532279746763670837, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -6690643586923134871, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -364200943543637980, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: 5655127320682784782, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -7825454764802691781, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -8967544251284020822, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -3882585022272345765, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.51
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 0
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View File

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

View File

@ -6,7 +6,7 @@ AnimationClip:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Back Quick Succession Attack
m_Name: BackComboAttack2
serializedVersion: 7
m_Legacy: 0
m_Compressed: 0
@ -21,59 +21,35 @@ AnimationClip:
- serializedVersion: 2
curve:
- time: 0
value: {fileID: -8273695093530358050, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.07
value: {fileID: -7532279746763670837, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.14
value: {fileID: -6690643586923134871, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.21
value: {fileID: -364200943543637980, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.28
value: {fileID: 5655127320682784782, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.35
value: {fileID: -7825454764802691781, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.42
value: {fileID: -8967544251284020822, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.49
value: {fileID: -3882585022272345765, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.56
value: {fileID: -3075048693740337369, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.63
- time: 0.07
value: {fileID: 211312044542259247, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.7
- time: 0.14
value: {fileID: -7264380394888667038, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.77
- time: 0.21
value: {fileID: 4115920633166267615, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.84
- time: 0.28
value: {fileID: -5953609903805028780, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.91
- time: 0.35
value: {fileID: -9122206709035583997, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 0.98
- time: 0.42
value: {fileID: -6230190510390866434, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 1.05
- time: 0.49
value: {fileID: -8423494383954947910, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 1.12
- time: 0.56
value: {fileID: 877046381003724980, guid: 3799083e0fb2447b58c45499eaf37bd0,
type: 3}
- time: 1.19
- time: 0.63
value: {fileID: 97539586369888396, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- time: 1.26
- time: 0.7
value: {fileID: 97539586369888396, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
attribute: m_Sprite
path:
@ -97,14 +73,6 @@ AnimationClip:
isIntCurve: 0
isSerializeReferenceCurve: 0
pptrCurveMapping:
- {fileID: -8273695093530358050, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -7532279746763670837, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -6690643586923134871, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -364200943543637980, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: 5655127320682784782, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -7825454764802691781, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -8967544251284020822, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -3882585022272345765, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -3075048693740337369, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: 211312044542259247, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
- {fileID: -7264380394888667038, guid: 3799083e0fb2447b58c45499eaf37bd0, type: 3}
@ -121,7 +89,7 @@ AnimationClip:
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1.27
m_StopTime: 0.71
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0

View File

@ -0,0 +1,101 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: FrontComboAttack1
serializedVersion: 7
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves:
- serializedVersion: 2
curve:
- time: 0
value: {fileID: -643761589136525347, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.07
value: {fileID: -8634219885328462433, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.14
value: {fileID: 5340048592208790007, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.21
value: {fileID: -3785830539903465732, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.29
value: {fileID: 6340001065433092570, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.36
value: {fileID: -7553988919368407184, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.43
value: {fileID: 2495992002276153849, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.5
value: {fileID: -6784843102938823166, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
flags: 2
m_SampleRate: 100
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
isIntCurve: 0
isSerializeReferenceCurve: 0
pptrCurveMapping:
- {fileID: -643761589136525347, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: -8634219885328462433, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: 5340048592208790007, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: -3785830539903465732, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: 6340001065433092570, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: -7553988919368407184, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: 2495992002276153849, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: -6784843102938823166, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.51
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 0
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View File

@ -6,7 +6,7 @@ AnimationClip:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Front Quick Succession Attack
m_Name: FrontComboAttack2
serializedVersion: 7
m_Legacy: 0
m_Compressed: 0
@ -21,60 +21,36 @@ AnimationClip:
- serializedVersion: 2
curve:
- time: 0
value: {fileID: -643761589136525347, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.07
value: {fileID: -8634219885328462433, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.14
value: {fileID: 5340048592208790007, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.21
value: {fileID: -3785830539903465732, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.28
value: {fileID: 6340001065433092570, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.35
value: {fileID: -7553988919368407184, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.42
value: {fileID: 2495992002276153849, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.49
value: {fileID: -6784843102938823166, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.56
value: {fileID: -7336129006373879803, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.63
- time: 0.07
value: {fileID: 314836917132208407, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.7
- time: 0.14
value: {fileID: -4057824189658882187, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.77
- time: 0.21
value: {fileID: -5676063425892692060, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.84
- time: 0.28
value: {fileID: 1495765941559451746, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.91
- time: 0.35
value: {fileID: 2673277784656510627, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 0.98
- time: 0.42
value: {fileID: 7647125809099135066, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 1.05
- time: 0.49
value: {fileID: 1829974661663830687, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 1.12
- time: 0.56
value: {fileID: -7539677618690639295, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 1.19
- time: 0.63
value: {fileID: -5746243717921055779, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
- time: 1.26
- time: 0.7
value: {fileID: -5746243717921055779, guid: 88b84319f88e542e495fc1f6338dc3ab,
type: 3}
attribute: m_Sprite
@ -99,14 +75,6 @@ AnimationClip:
isIntCurve: 0
isSerializeReferenceCurve: 0
pptrCurveMapping:
- {fileID: -643761589136525347, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: -8634219885328462433, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: 5340048592208790007, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: -3785830539903465732, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: 6340001065433092570, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: -7553988919368407184, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: 2495992002276153849, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: -6784843102938823166, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: -7336129006373879803, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: 314836917132208407, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
- {fileID: -4057824189658882187, guid: 88b84319f88e542e495fc1f6338dc3ab, type: 3}
@ -123,7 +91,7 @@ AnimationClip:
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1.27
m_StopTime: 0.71
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0

View File

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

View File

@ -0,0 +1,101 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: SideComboAttack1
serializedVersion: 7
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves:
- serializedVersion: 2
curve:
- time: 0
value: {fileID: -8734568474861324231, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.07
value: {fileID: -6598741468600560582, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.14
value: {fileID: -1448534508439064450, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.21
value: {fileID: 6470166299010896407, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.29
value: {fileID: -8842590583836025036, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.36
value: {fileID: -3108277205920478454, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.43
value: {fileID: -3030634035499231212, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.5
value: {fileID: 8193033228689126025, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
flags: 2
m_SampleRate: 100
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
isIntCurve: 0
isSerializeReferenceCurve: 0
pptrCurveMapping:
- {fileID: -8734568474861324231, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: -6598741468600560582, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: -1448534508439064450, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: 6470166299010896407, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: -8842590583836025036, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: -3108277205920478454, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: -3030634035499231212, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: 8193033228689126025, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.51
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 0
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View File

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

View File

@ -6,7 +6,7 @@ AnimationClip:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Side Quick Succession Attack
m_Name: SideComboAttack2
serializedVersion: 7
m_Legacy: 0
m_Compressed: 0
@ -21,63 +21,39 @@ AnimationClip:
- serializedVersion: 2
curve:
- time: 0
value: {fileID: -8734568474861324231, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.07
value: {fileID: -6598741468600560582, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.14
value: {fileID: -1448534508439064450, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.21
value: {fileID: 6470166299010896407, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.28
value: {fileID: -8842590583836025036, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.35
value: {fileID: -3108277205920478454, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.42
value: {fileID: -3030634035499231212, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.49
value: {fileID: 8193033228689126025, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.56
value: {fileID: 6450559367394009326, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.63
- time: 0.06
value: {fileID: 1022299056725829792, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.7
- time: 0.13
value: {fileID: 9133338980149026694, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.77
- time: 0.19
value: {fileID: 5662889510980965141, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.84
- time: 0.25
value: {fileID: -3204992135469483134, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.91
- time: 0.32
value: {fileID: 8652026564429111343, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 0.98
- time: 0.38
value: {fileID: -5411097385205464217, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 1.05
- time: 0.45
value: {fileID: -5678076920946459352, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 1.12
- time: 0.51
value: {fileID: -9073108797845903621, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 1.19
- time: 0.57
value: {fileID: -2130665544896635304, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 1.26
- time: 0.64
value: {fileID: 7386425078254453756, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
- time: 1.33
- time: 0.7
value: {fileID: 7386425078254453756, guid: defcc8125c9264ebc9dc3d4026bcb572,
type: 3}
attribute: m_Sprite
@ -102,14 +78,6 @@ AnimationClip:
isIntCurve: 0
isSerializeReferenceCurve: 0
pptrCurveMapping:
- {fileID: -8734568474861324231, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: -6598741468600560582, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: -1448534508439064450, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: 6470166299010896407, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: -8842590583836025036, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: -3108277205920478454, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: -3030634035499231212, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: 8193033228689126025, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: 6450559367394009326, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: 1022299056725829792, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
- {fileID: 9133338980149026694, guid: defcc8125c9264ebc9dc3d4026bcb572, type: 3}
@ -127,7 +95,7 @@ AnimationClip:
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1.34
m_StopTime: 0.71
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0

View File

@ -1,30 +1,5 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1101 &-8486779952133263134
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: isActivateMainSkill
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 5288804090290371663}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.64285713
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!206 &-8385716840509112995
BlendTree:
m_ObjectHideFlags: 1
@ -42,7 +17,7 @@ BlendTree:
m_DirectBlendParameter: Blend
m_Mirror: 0
- serializedVersion: 2
m_Motion: {fileID: 7400000, guid: abab70d66c74a4d4780dc81a1b5737ed, type: 2}
m_Motion: {fileID: 7400000, guid: e4faf49fc8b0c144d8c2a79fed7c3543, type: 2}
m_Threshold: 0.33333334
m_Position: {x: -0.9, y: 0}
m_TimeScale: 1
@ -50,7 +25,7 @@ BlendTree:
m_DirectBlendParameter: Blend
m_Mirror: 0
- serializedVersion: 2
m_Motion: {fileID: 7400000, guid: abab70d66c74a4d4780dc81a1b5737ed, type: 2}
m_Motion: {fileID: 7400000, guid: e4faf49fc8b0c144d8c2a79fed7c3543, type: 2}
m_Threshold: 0.6666667
m_Position: {x: 0.9, y: 0}
m_TimeScale: 1
@ -58,7 +33,7 @@ BlendTree:
m_DirectBlendParameter: Blend
m_Mirror: 0
- serializedVersion: 2
m_Motion: {fileID: 7400000, guid: 9e4778555214b4d429df96f3b84b6b10, type: 2}
m_Motion: {fileID: 7400000, guid: bc014660364fb1048939b9b3b16053ef, type: 2}
m_Threshold: 1
m_Position: {x: 0, y: 1}
m_TimeScale: 1
@ -122,6 +97,34 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-5504608788140889247
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 2
m_ConditionEvent: isAttacking
m_EventTreshold: 0
- m_ConditionMode: 1
m_ConditionEvent: isMoving
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -618453422930481919}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.87080103
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!114 &-5289412369375769790
MonoBehaviour:
m_ObjectHideFlags: 1
@ -367,6 +370,34 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-3306250636120345449
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ComboAttack2
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 391659674646309895}
- {fileID: 2589863345135596606}
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: -1888369058798407440}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-3146538631277008348
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -392,6 +423,53 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!206 &-1888369058798407440
BlendTree:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Blend Tree
m_Childs:
- serializedVersion: 2
m_Motion: {fileID: 7400000, guid: 8526f5cf0075aba489ce87145b2c63cc, 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: abab70d66c74a4d4780dc81a1b5737ed, type: 2}
m_Threshold: 0.33333334
m_Position: {x: -0.9, y: 0}
m_TimeScale: 1
m_CycleOffset: 0
m_DirectBlendParameter: Blend
m_Mirror: 0
- serializedVersion: 2
m_Motion: {fileID: 7400000, guid: abab70d66c74a4d4780dc81a1b5737ed, type: 2}
m_Threshold: 0.6666667
m_Position: {x: 0.9, y: 0}
m_TimeScale: 1
m_CycleOffset: 0
m_DirectBlendParameter: Blend
m_Mirror: 0
- serializedVersion: 2
m_Motion: {fileID: 7400000, guid: 9e4778555214b4d429df96f3b84b6b10, type: 2}
m_Threshold: 1
m_Position: {x: 0, y: 1}
m_TimeScale: 1
m_CycleOffset: 0
m_DirectBlendParameter: Blend
m_Mirror: 0
m_BlendParameter: xDirection
m_BlendParameterY: zDirection
m_MinThreshold: 0
m_MaxThreshold: 1
m_UseAutomaticThresholds: 1
m_NormalizedBlendValues: 0
m_BlendType: 1
--- !u!1101 &-1487820468378709118
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -441,12 +519,13 @@ AnimatorState:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ComboAttack
m_Name: ComboAttack1
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 3543128493095741911}
- {fileID: 8928760706930681322}
- {fileID: -27374218785730259}
- {fileID: 3543128493095741911}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@ -485,9 +564,8 @@ AnimatorState:
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -3809054890995379507}
- {fileID: -4577426398346569303}
- {fileID: -8486779952133263134}
- {fileID: -3809054890995379507}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@ -515,6 +593,15 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: fc7f327f78a10164b8a90f10b8eefc5f, type: 3}
m_Name:
m_EditorClassIdentifier:
combatPlayerController: {fileID: 0}
theWaltzOfTheSword: {fileID: 0}
currentHitNum: 0
hitCount: 0
time: 0
intervalTime: 0
currentDirection: 0
previousLeft: 0
isMoved: 0
--- !u!1101 &-27374218785730259
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -523,8 +610,8 @@ AnimatorStateTransition:
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 2
m_ConditionEvent: isAttacking
- m_ConditionMode: 6
m_ConditionEvent: ComboAttackCount
m_EventTreshold: 0
- m_ConditionMode: 1
m_ConditionEvent: isMoving
@ -576,7 +663,7 @@ AnimatorController:
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: isAttacking
- m_Name: isReadyMainSkill
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
@ -588,6 +675,12 @@ AnimatorController:
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: ComboAttackCount
m_Type: 3
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
@ -629,6 +722,34 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &391659674646309895
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 6
m_ConditionEvent: ComboAttackCount
m_EventTreshold: 0
- m_ConditionMode: 1
m_ConditionEvent: isMoving
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -618453422930481919}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.6212121
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &750437929063984674
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -670,8 +791,7 @@ AnimatorState:
m_Transitions:
- {fileID: 276457862005141075}
- {fileID: 750437929063984674}
m_StateMachineBehaviours:
- {fileID: -485676201465698196}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
@ -737,6 +857,34 @@ BlendTree:
m_UseAutomaticThresholds: 1
m_NormalizedBlendValues: 0
m_BlendType: 1
--- !u!1101 &2151954955498222414
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 2
m_ConditionEvent: isAttacking
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: isMoving
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 2904739495372590564}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.87080103
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &2368236931724677174
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -745,9 +893,15 @@ AnimatorStateTransition:
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: isAttacking
- m_ConditionMode: 2
m_ConditionEvent: isReadyMainSkill
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: isActivateMainSkill
m_EventTreshold: 0
- m_ConditionMode: 6
m_ConditionEvent: ComboAttackCount
m_EventTreshold: 1
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1391371825940290833}
m_Solo: 0
@ -769,7 +923,10 @@ AnimatorStateTransition:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: isActivateMainSkill
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 937190665916713420}
m_Solo: 0
@ -779,8 +936,36 @@ AnimatorStateTransition:
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 1
m_HasExitTime: 1
m_HasFixedDuration: 1
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &2589863345135596606
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 6
m_ConditionEvent: ComboAttackCount
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: isMoving
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 2904739495372590564}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.6212121
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
@ -795,9 +980,8 @@ AnimatorState:
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 3163530354401825757}
- {fileID: -7583967420879830985}
- {fileID: 6486267535032140894}
- {fileID: 3163530354401825757}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@ -846,8 +1030,8 @@ AnimatorStateTransition:
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 2
m_ConditionEvent: isAttacking
- m_ConditionMode: 6
m_ConditionEvent: ComboAttackCount
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: isMoving
@ -970,55 +1154,34 @@ AnimatorStateMachine:
m_Position: {x: 310, y: 100, z: 0}
- serializedVersion: 1
m_State: {fileID: -618453422930481919}
m_Position: {x: 600, y: 100, z: 0}
m_Position: {x: 730, y: 100, z: 0}
- serializedVersion: 1
m_State: {fileID: 9191734135348127121}
m_Position: {x: 430, y: 220, z: 0}
m_Position: {x: 510, y: 220, z: 0}
- serializedVersion: 1
m_State: {fileID: -1391371825940290833}
m_Position: {x: 300, y: 0, z: 0}
m_Position: {x: 230, y: -100, z: 0}
- serializedVersion: 1
m_State: {fileID: 937190665916713420}
m_Position: {x: 900, y: -100, z: 0}
m_Position: {x: 1030, y: -100, z: 0}
- serializedVersion: 1
m_State: {fileID: 5288804090290371663}
m_Position: {x: 600, y: -100, z: 0}
m_Position: {x: 730, y: -100, z: 0}
- serializedVersion: 1
m_State: {fileID: -3306250636120345449}
m_Position: {x: 470, y: -100, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: 2368236931724677174}
- {fileID: 8858143837399215685}
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 40, y: 0, z: 0}
m_AnyStatePosition: {x: 600, y: -220, z: 0}
m_EntryPosition: {x: 40, y: 100, z: 0}
m_ExitPosition: {x: 990, y: 110, z: 0}
m_ExitPosition: {x: 1120, y: 110, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 2904739495372590564}
--- !u!1101 &6486267535032140894
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: isActivateMainSkill
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 5288804090290371663}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.59016395
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!206 &7176258330419148192
BlendTree:
m_ObjectHideFlags: 1
@ -1066,6 +1229,56 @@ BlendTree:
m_UseAutomaticThresholds: 1
m_NormalizedBlendValues: 0
m_BlendType: 1
--- !u!1101 &8858143837399215685
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: isReadyMainSkill
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 5288804090290371663}
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: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 0
--- !u!1101 &8928760706930681322
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 6
m_ConditionEvent: ComboAttackCount
m_EventTreshold: 2
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -3306250636120345449}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.6212121
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &9191734135348127121
AnimatorState:
serializedVersion: 6
@ -1077,8 +1290,8 @@ AnimatorState:
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -4120808473508093546}
- {fileID: -4230107529430858695}
- {fileID: -4120808473508093546}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0

View File

@ -4,12 +4,12 @@
{
"type": "Unity.Muse.Common.PreferenceDataWrapper`1[[System.Collections.Generic.List`1[[Unity.Muse.Common.Account.OrganizationInfo, Unity.Muse.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
"key": "Unity.Muse.Common.Preferences.organizations",
"value": "{\"value\":[{\"rid\":1000}],\"references\":{\"version\":2,\"RefIds\":[{\"rid\":1000,\"type\":{\"class\":\"OrganizationInfo\",\"ns\":\"Unity.Muse.Common.Account\",\"asm\":\"Unity.Muse.Common\"},\"data\":{\"org_id\":\"14569290698329\",\"org_name\":\"qkdzhr33\",\"status\":\"not-entitled\"}}]}}"
"value": "{\"value\":[{\"rid\":1000},{\"rid\":1001}],\"references\":{\"version\":2,\"RefIds\":[{\"rid\":1000,\"type\":{\"class\":\"OrganizationInfo\",\"ns\":\"Unity.Muse.Common.Account\",\"asm\":\"Unity.Muse.Common\"},\"data\":{\"org_id\":\"14568565657763\",\"org_name\":\"iwnc2020\",\"status\":\"trial-expired\"}},{\"rid\":1001,\"type\":{\"class\":\"OrganizationInfo\",\"ns\":\"Unity.Muse.Common.Account\",\"asm\":\"Unity.Muse.Common\"},\"data\":{\"org_id\":\"7971586351139\",\"org_name\":\"Ntion\",\"status\":\"not-entitled\"}}]}}"
},
{
"type": "Unity.Muse.Common.PreferenceDataWrapper`1[[Unity.Muse.Common.Account.OrganizationInfo, Unity.Muse.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]",
"key": "Unity.Muse.Common.Preferences.organization",
"value": "{\"value\":{\"rid\":1000},\"references\":{\"version\":2,\"RefIds\":[{\"rid\":1000,\"type\":{\"class\":\"OrganizationInfo\",\"ns\":\"Unity.Muse.Common.Account\",\"asm\":\"Unity.Muse.Common\"},\"data\":{\"org_id\":\"14569290698329\",\"org_name\":\"qkdzhr33\",\"status\":\"not-entitled\"}}]}}"
"value": "{\"value\":{\"rid\":1000},\"references\":{\"version\":2,\"RefIds\":[{\"rid\":1000,\"type\":{\"class\":\"OrganizationInfo\",\"ns\":\"Unity.Muse.Common.Account\",\"asm\":\"Unity.Muse.Common\"},\"data\":{\"org_id\":\"14568565657763\",\"org_name\":\"iwnc2020\",\"status\":\"trial-expired\"}}]}}"
},
{
"type": "Unity.Muse.Common.PreferenceDataWrapper`1[[System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",