+ CombatPlayer 기능별 분리 + Combat, CombatUi 전용 input action map 추가 + 스킬 시스템 로직 수정 + 전투플레이어 스킬(검의 왈츠) 로직 변경
This commit is contained in:
parent
3a5675b2db
commit
f1d0c6d371
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
// }
|
||||
// }
|
||||
// }
|
@ -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;
|
||||
// }
|
||||
// }
|
||||
// }
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e9b7e599e011e1e418c34e3fe3cf6abd
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d8ce76942ad0280489b33193acecfb5f
|
@ -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; }
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4df83d31a74aad34a9b47f8da4bc613e
|
@ -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);
|
||||
}
|
||||
|
@ -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>();
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7274fd4e8e40b21448be0c0e0205da6a
|
14
BlueWater/Assets/02.Scripts/Interface/IDashable.cs
Normal file
14
BlueWater/Assets/02.Scripts/Interface/IDashable.cs
Normal 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);
|
||||
}
|
||||
}
|
11
BlueWater/Assets/02.Scripts/Interface/IDashable.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Interface/IDashable.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f0f726bda53a407489641469d9143bdd
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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();
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1b4c3fbd22d0ce84c8197297dc808518
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
12
BlueWater/Assets/02.Scripts/Interface/IRigidMovable.cs
Normal file
12
BlueWater/Assets/02.Scripts/Interface/IRigidMovable.cs
Normal 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; }
|
||||
}
|
||||
}
|
11
BlueWater/Assets/02.Scripts/Interface/IRigidMovable.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Interface/IRigidMovable.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 333346889738f664a9f716a94e210d19
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
132
BlueWater/Assets/02.Scripts/NewSkill/BaseSkill.cs
Normal file
132
BlueWater/Assets/02.Scripts/NewSkill/BaseSkill.cs
Normal 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
|
||||
}
|
||||
}
|
2
BlueWater/Assets/02.Scripts/NewSkill/BaseSkill.cs.meta
Normal file
2
BlueWater/Assets/02.Scripts/NewSkill/BaseSkill.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b5bf25014c6ac1a479d986ba3eb2c847
|
@ -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
|
||||
{
|
||||
|
24
BlueWater/Assets/02.Scripts/NewSkill/SkillData.cs
Normal file
24
BlueWater/Assets/02.Scripts/NewSkill/SkillData.cs
Normal 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; }
|
||||
}
|
||||
}
|
2
BlueWater/Assets/02.Scripts/NewSkill/SkillData.cs.meta
Normal file
2
BlueWater/Assets/02.Scripts/NewSkill/SkillData.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 134e3d2eb4ca75b4bb18832c2b875454
|
@ -1,5 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c3b0bd4a4e0b19c44a602a873d5c96c9
|
||||
guid: 3732a643b4e49f440ba8408dded9d282
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f83165d1b2f27da47bdc869c97aed90f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9fd5b3a40dbd8ee468b461b3e607c81c
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros.meta
Normal file
8
BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0f3e56e8f89fa3346b0c173f23599038
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a73bd420075994a4da31c17857a68079
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fff709d3ddb3f204b8b06337919d0d93
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a1e550fbbc57574438f4a11f19069b56
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0a8523f59e9007341b2679d088dbd569
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f7fd16f319c8c024895abd3e2b395b3f
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
67
BlueWater/Assets/02.Scripts/Ui/HeartHpUi.cs
Normal file
67
BlueWater/Assets/02.Scripts/Ui/HeartHpUi.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
2
BlueWater/Assets/02.Scripts/Ui/HeartHpUi.cs.meta
Normal file
2
BlueWater/Assets/02.Scripts/Ui/HeartHpUi.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d75a19165bcac1e4992403ab2cc27e97
|
BIN
BlueWater/Assets/03.Images/Ui/EmptyHeart.png
Normal file
BIN
BlueWater/Assets/03.Images/Ui/EmptyHeart.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
140
BlueWater/Assets/03.Images/Ui/EmptyHeart.png.meta
Normal file
140
BlueWater/Assets/03.Images/Ui/EmptyHeart.png.meta
Normal 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:
|
BIN
BlueWater/Assets/03.Images/Ui/FullHeart.png
Normal file
BIN
BlueWater/Assets/03.Images/Ui/FullHeart.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
140
BlueWater/Assets/03.Images/Ui/FullHeart.png.meta
Normal file
140
BlueWater/Assets/03.Images/Ui/FullHeart.png.meta
Normal 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:
|
BIN
BlueWater/Assets/03.Images/Ui/HalfHeart.png
Normal file
BIN
BlueWater/Assets/03.Images/Ui/HalfHeart.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
140
BlueWater/Assets/03.Images/Ui/HalfHeart.png.meta
Normal file
140
BlueWater/Assets/03.Images/Ui/HalfHeart.png.meta
Normal 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:
|
@ -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
|
||||
|
10249
BlueWater/Assets/05.Prefabs/Characters/Players/CombatPlayer2D.prefab
Normal file
10249
BlueWater/Assets/05.Prefabs/Characters/Players/CombatPlayer2D.prefab
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1dd4685ea00f078438ba2da289b3bd26
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
77
BlueWater/Assets/05.Prefabs/Hp/Heart.prefab
Normal file
77
BlueWater/Assets/05.Prefabs/Hp/Heart.prefab
Normal 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
|
7
BlueWater/Assets/05.Prefabs/Hp/Heart.prefab.meta
Normal file
7
BlueWater/Assets/05.Prefabs/Hp/Heart.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 627c70e13fd93494e8e194f0eaf2c9df
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
508
BlueWater/Assets/05.Prefabs/Hp/HeartHpUi.prefab
Normal file
508
BlueWater/Assets/05.Prefabs/Hp/HeartHpUi.prefab
Normal 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}
|
7
BlueWater/Assets/05.Prefabs/Hp/HeartHpUi.prefab.meta
Normal file
7
BlueWater/Assets/05.Prefabs/Hp/HeartHpUi.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 22cc85c188cd0f54e8eb09e6d7c89b40
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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}
|
||||
|
101
BlueWater/Assets/07.Animation/CombatPlayer/BackComboAttack1.anim
Normal file
101
BlueWater/Assets/07.Animation/CombatPlayer/BackComboAttack1.anim
Normal 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: []
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bc014660364fb1048939b9b3b16053ef
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 7400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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
|
@ -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: []
|
@ -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
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8526f5cf0075aba489ce87145b2c63cc
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 7400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
101
BlueWater/Assets/07.Animation/CombatPlayer/SideComboAttack1.anim
Normal file
101
BlueWater/Assets/07.Animation/CombatPlayer/SideComboAttack1.anim
Normal 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: []
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e4faf49fc8b0c144d8c2a79fed7c3543
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 7400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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
|
@ -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
|
||||
|
@ -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]]",
|
||||
|
Loading…
Reference in New Issue
Block a user