new dash implementation
This commit is contained in:
@@ -60734,6 +60734,10 @@ MonoBehaviour:
|
|||||||
healthRecoveryCap: 1
|
healthRecoveryCap: 1
|
||||||
useAnimationBasedRotation: 0
|
useAnimationBasedRotation: 0
|
||||||
dashBlendTreeState: Dash_Directional
|
dashBlendTreeState: Dash_Directional
|
||||||
|
dashHorizontalParam: DashHorizontal
|
||||||
|
dashVerticalParam: DashVertical
|
||||||
|
dashAngleCorrection: 0
|
||||||
|
debugDash: 1
|
||||||
--- !u!114 &9202663235077955828
|
--- !u!114 &9202663235077955828
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -6652,6 +6652,18 @@ AnimatorController:
|
|||||||
m_DefaultInt: 0
|
m_DefaultInt: 0
|
||||||
m_DefaultBool: 0
|
m_DefaultBool: 0
|
||||||
m_Controller: {fileID: 9100000}
|
m_Controller: {fileID: 9100000}
|
||||||
|
- m_Name: DashHorizontal
|
||||||
|
m_Type: 1
|
||||||
|
m_DefaultFloat: 0
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
- m_Name: DashVertical
|
||||||
|
m_Type: 1
|
||||||
|
m_DefaultFloat: 0
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
m_AnimatorLayers:
|
m_AnimatorLayers:
|
||||||
- serializedVersion: 5
|
- serializedVersion: 5
|
||||||
m_Name: Base Layer
|
m_Name: Base Layer
|
||||||
@@ -46844,16 +46856,7 @@ BlendTree:
|
|||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
m_Motion: {fileID: 1827226128182048838, guid: 10c005d4a1cfe8648af9ff7bfc4f7275,
|
m_Motion: {fileID: 1827226128182048838, guid: 10c005d4a1cfe8648af9ff7bfc4f7275,
|
||||||
type: 3}
|
type: 3}
|
||||||
m_Threshold: 0
|
m_Threshold: 0.125
|
||||||
m_Position: {x: 0, y: 0}
|
|
||||||
m_TimeScale: 1
|
|
||||||
m_CycleOffset: 0
|
|
||||||
m_DirectBlendParameter: InputHorizontal
|
|
||||||
m_Mirror: 0
|
|
||||||
- serializedVersion: 2
|
|
||||||
m_Motion: {fileID: 1827226128182048838, guid: 10c005d4a1cfe8648af9ff7bfc4f7275,
|
|
||||||
type: 3}
|
|
||||||
m_Threshold: 0.25
|
|
||||||
m_Position: {x: 0, y: -1}
|
m_Position: {x: 0, y: -1}
|
||||||
m_TimeScale: 1
|
m_TimeScale: 1
|
||||||
m_CycleOffset: 0
|
m_CycleOffset: 0
|
||||||
@@ -46862,34 +46865,70 @@ BlendTree:
|
|||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
m_Motion: {fileID: 1827226128182048838, guid: 0e637c252c2643d4d9770ad55b6e71c1,
|
m_Motion: {fileID: 1827226128182048838, guid: 0e637c252c2643d4d9770ad55b6e71c1,
|
||||||
type: 3}
|
type: 3}
|
||||||
m_Threshold: 0.5
|
m_Threshold: 0.2
|
||||||
m_Position: {x: 0, y: 1}
|
m_Position: {x: 0, y: 1}
|
||||||
m_TimeScale: 1
|
m_TimeScale: 1
|
||||||
m_CycleOffset: 0
|
m_CycleOffset: 0
|
||||||
m_DirectBlendParameter: InputHorizontal
|
m_DirectBlendParameter: InputHorizontal
|
||||||
m_Mirror: 0
|
m_Mirror: 0
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
m_Motion: {fileID: 1827226128182048838, guid: 91b0987685baf44bb853583ed38ef4ed,
|
m_Motion: {fileID: 1827226128182048838, guid: ea59d735895318549a2927c0f055a480,
|
||||||
type: 3}
|
type: 3}
|
||||||
m_Threshold: 0.75
|
m_Threshold: 0.275
|
||||||
m_Position: {x: -1, y: 0}
|
m_Position: {x: -1, y: 0}
|
||||||
m_TimeScale: 1
|
m_TimeScale: 1
|
||||||
m_CycleOffset: 0
|
m_CycleOffset: 0
|
||||||
m_DirectBlendParameter: InputHorizontal
|
m_DirectBlendParameter: InputHorizontal
|
||||||
m_Mirror: 0
|
m_Mirror: 0
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
m_Motion: {fileID: 1827226128182048838, guid: 1c9f48ddca32d45479d6aeb95df77d7f,
|
m_Motion: {fileID: 1827226128182048838, guid: 92a0213fe328958449f8212bd701597b,
|
||||||
type: 3}
|
type: 3}
|
||||||
m_Threshold: 1
|
m_Threshold: 0.35
|
||||||
m_Position: {x: 1, y: 0}
|
m_Position: {x: 1, y: 0}
|
||||||
m_TimeScale: 1
|
m_TimeScale: 1
|
||||||
m_CycleOffset: 0
|
m_CycleOffset: 0
|
||||||
m_DirectBlendParameter: InputHorizontal
|
m_DirectBlendParameter: InputHorizontal
|
||||||
m_Mirror: 0
|
m_Mirror: 0
|
||||||
m_BlendParameter: InputHorizontal
|
- serializedVersion: 2
|
||||||
m_BlendParameterY: InputVertical
|
m_Motion: {fileID: 1827226128182048838, guid: 5390eaabe8094204983513a21277bd9b,
|
||||||
m_MinThreshold: 0
|
type: 3}
|
||||||
m_MaxThreshold: 1
|
m_Threshold: 0.425
|
||||||
|
m_Position: {x: -0.7, y: -0.7}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: InputHorizontal
|
||||||
|
m_Mirror: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
m_Motion: {fileID: 1827226128182048838, guid: a60b5ff8c46006d4d9a39ac7327237eb,
|
||||||
|
type: 3}
|
||||||
|
m_Threshold: 0.5
|
||||||
|
m_Position: {x: 0.7, y: -0.7}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: InputHorizontal
|
||||||
|
m_Mirror: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
m_Motion: {fileID: 1827226128182048838, guid: 548517d69a9f2954bac08ec35b81e4c1,
|
||||||
|
type: 3}
|
||||||
|
m_Threshold: 0.575
|
||||||
|
m_Position: {x: -0.7, y: 0.7}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: InputHorizontal
|
||||||
|
m_Mirror: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
m_Motion: {fileID: 1827226128182048838, guid: aa01bc85e87e25e488a6c3f258007c7f,
|
||||||
|
type: 3}
|
||||||
|
m_Threshold: 0.65
|
||||||
|
m_Position: {x: 0.7, y: 0.7}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: InputHorizontal
|
||||||
|
m_Mirror: 0
|
||||||
|
m_BlendParameter: DashHorizontal
|
||||||
|
m_BlendParameterY: DashVertical
|
||||||
|
m_MinThreshold: 0.125
|
||||||
|
m_MaxThreshold: 0.65
|
||||||
m_UseAutomaticThresholds: 1
|
m_UseAutomaticThresholds: 1
|
||||||
m_NormalizedBlendValues: 0
|
m_NormalizedBlendValues: 0
|
||||||
m_BlendType: 3
|
m_BlendType: 3
|
||||||
|
|||||||
@@ -14584,6 +14584,11 @@ PrefabInstance:
|
|||||||
propertyPath: m_IsActive
|
propertyPath: m_IsActive
|
||||||
value: 1
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4704300330561169846, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: locomotionType
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4704300330561169846, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 4704300330561169846, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: strafeRollDuration
|
propertyPath: strafeRollDuration
|
||||||
@@ -15107,12 +15112,12 @@ PrefabInstance:
|
|||||||
- target: {fileID: 5234664790783380194, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5234664790783380194, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchoredPosition.x
|
propertyPath: m_AnchoredPosition.x
|
||||||
value: 2781164
|
value: 4271459
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5234664790783380194, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5234664790783380194, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_AnchoredPosition.y
|
propertyPath: m_AnchoredPosition.y
|
||||||
value: -444986.44
|
value: -683435.1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5265345828117443429, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5265345828117443429, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -15162,7 +15167,17 @@ PrefabInstance:
|
|||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: startItems.Array.size
|
propertyPath: startItems.Array.size
|
||||||
value: 9
|
value: 11
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: itemsFilter.Array.size
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: 'itemsFilter.Array.data[0]'
|
||||||
|
value: 23
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -15182,12 +15197,12 @@ PrefabInstance:
|
|||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: startItems.Array.data[9].id
|
propertyPath: startItems.Array.data[9].id
|
||||||
value: 1
|
value: 96
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: startItems.Array.data[10].id
|
propertyPath: startItems.Array.data[10].id
|
||||||
value: 1
|
value: 97
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -15297,12 +15312,12 @@ PrefabInstance:
|
|||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: startItems.Array.data[9].amount
|
propertyPath: startItems.Array.data[9].amount
|
||||||
value: 1
|
value: 3
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: startItems.Array.data[10].amount
|
propertyPath: startItems.Array.data[10].amount
|
||||||
value: 1
|
value: 3
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -15417,22 +15432,22 @@ PrefabInstance:
|
|||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: startItems.Array.data[9].autoEquip
|
propertyPath: startItems.Array.data[9].autoEquip
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: startItems.Array.data[9].indexArea
|
propertyPath: startItems.Array.data[9].indexArea
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: startItems.Array.data[10].autoEquip
|
propertyPath: startItems.Array.data[10].autoEquip
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: startItems.Array.data[10].indexArea
|
propertyPath: startItems.Array.data[10].indexArea
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
@@ -15739,16 +15754,46 @@ PrefabInstance:
|
|||||||
propertyPath: startItems.Array.data[8].attributes.Array.size
|
propertyPath: startItems.Array.data[8].attributes.Array.size
|
||||||
value: 1
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: startItems.Array.data[9].attributes.Array.size
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: startItems.Array.data[10].attributes.Array.size
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: startItems.Array.data[8].attributes.Array.data[0].name
|
propertyPath: startItems.Array.data[8].attributes.Array.data[0].name
|
||||||
value: 12
|
value: 12
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: startItems.Array.data[9].attributes.Array.data[0].name
|
||||||
|
value: 12
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: startItems.Array.data[10].attributes.Array.data[0].name
|
||||||
|
value: 12
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: startItems.Array.data[8].attributes.Array.data[0].value
|
propertyPath: startItems.Array.data[8].attributes.Array.data[0].value
|
||||||
value: 15
|
value: 15
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: startItems.Array.data[9].attributes.Array.data[0].value
|
||||||
|
value: 15
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5582921900280934274, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: startItems.Array.data[10].attributes.Array.data[0].value
|
||||||
|
value: 15
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5613825752652024524, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 5613825752652024524, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_Layer
|
propertyPath: m_Layer
|
||||||
@@ -15879,6 +15924,11 @@ PrefabInstance:
|
|||||||
propertyPath: m_LocalEulerAnglesHint.y
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
value: -116.866
|
value: -116.866
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6463794160194089925, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_IsActive
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6692395660911280292, guid: 851e8e61247888340bdec90fc8aa37f5,
|
- target: {fileID: 6692395660911280292, guid: 851e8e61247888340bdec90fc8aa37f5,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_Layer
|
propertyPath: m_Layer
|
||||||
|
|||||||
@@ -21,18 +21,19 @@ namespace Beyond
|
|||||||
|
|
||||||
[Header("Beyond's Dash Settings")]
|
[Header("Beyond's Dash Settings")]
|
||||||
public string dashBlendTreeState = "Dash_Directional";
|
public string dashBlendTreeState = "Dash_Directional";
|
||||||
|
public string dashHorizontalParam = "DashHorizontal";
|
||||||
|
public string dashVerticalParam = "DashVertical";
|
||||||
|
|
||||||
// Internal flag to lock animator parameters during dash
|
[Tooltip("If your animation is slightly rotated (Red arrow offset), add an angle here to compensate (e.g. -45 or 45).")]
|
||||||
private bool _lockAnimParamsForDash = false;
|
public float dashAngleCorrection = 0f;
|
||||||
|
|
||||||
|
[Tooltip("Print debug info to Console when dashing")]
|
||||||
|
public bool debugDash = true;
|
||||||
|
|
||||||
public bool GodMode
|
public bool GodMode
|
||||||
{
|
{
|
||||||
get => m_GodMode;
|
get => m_GodMode;
|
||||||
set
|
set { m_GodMode = value; isImmortal = m_GodMode; }
|
||||||
{
|
|
||||||
m_GodMode = value;
|
|
||||||
isImmortal = m_GodMode;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool canRecoverHealth
|
protected override bool canRecoverHealth
|
||||||
@@ -44,21 +45,13 @@ namespace Beyond
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsDashingOrRolling()
|
public bool IsDashingOrRolling() => m_isDashing || isRolling;
|
||||||
{
|
|
||||||
return m_isDashing || isRolling;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void Start()
|
protected override void Start()
|
||||||
{
|
{
|
||||||
base.Start();
|
base.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void RollBehavior()
|
|
||||||
{
|
|
||||||
base.RollBehavior();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Roll()
|
public override void Roll()
|
||||||
{
|
{
|
||||||
Dash();
|
Dash();
|
||||||
@@ -71,71 +64,59 @@ namespace Beyond
|
|||||||
ReduceStamina(rollStamina, false);
|
ReduceStamina(rollStamina, false);
|
||||||
currentStaminaRecoveryDelay = 2f;
|
currentStaminaRecoveryDelay = 2f;
|
||||||
|
|
||||||
// 1. Handle Stationary (Backwards Dash)
|
// Setup Camera Vectors
|
||||||
if (input.sqrMagnitude < 0.05f)
|
Transform camT = Camera.main != null ? Camera.main.transform : transform;
|
||||||
|
// Flatten camera vectors so looking up/down doesn't affect dash length
|
||||||
|
Vector3 camFwd = Vector3.Scale(camT.forward, new Vector3(1, 0, 1)).normalized;
|
||||||
|
Vector3 camRight = Vector3.Scale(camT.right, new Vector3(1, 0, 1)).normalized;
|
||||||
|
|
||||||
|
Vector3 targetWorldDir = Vector3.zero;
|
||||||
|
|
||||||
|
// 1. Determine Target World Direction
|
||||||
|
if (input.sqrMagnitude < 0.1f)
|
||||||
{
|
{
|
||||||
ApplyDashParams(0f, -1f);
|
// NO INPUT -> Move strictly "Into the Screen" (Towards Camera)
|
||||||
|
// This is the negative of the Camera Forward vector.
|
||||||
|
targetWorldDir = -camFwd;
|
||||||
|
if (debugDash) Debug.Log($"[Dash] No Input. Target: BACKWARD ({targetWorldDir})");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 2. Handle Directional Input (Camera Relative -> Character Relative)
|
// DIRECTIONAL INPUT
|
||||||
|
// FIX: Use input.z for Forward/Backward, NOT input.y
|
||||||
|
targetWorldDir = (camFwd * input.z + camRight * input.x).normalized;
|
||||||
|
|
||||||
// A. Get the Input Direction relative to the Camera
|
if (debugDash) Debug.Log($"[Dash] Input: {input}. Target World Dir: {targetWorldDir}");
|
||||||
Vector3 inputDir = Vector3.zero;
|
}
|
||||||
if (Camera.main != null)
|
|
||||||
|
// 2. Convert World Direction to Character Local Space
|
||||||
|
// "Where is the Target World Dir relative to ME?"
|
||||||
|
Vector3 localDir = transform.InverseTransformDirection(targetWorldDir);
|
||||||
|
|
||||||
|
// 3. Apply Angle Correction (If animation is skewed 45 degrees)
|
||||||
|
if (dashAngleCorrection != 0f)
|
||||||
{
|
{
|
||||||
// Convert joystick input (X,Y) into World Space based on Camera facing
|
localDir = Quaternion.Euler(0, dashAngleCorrection, 0) * localDir;
|
||||||
Vector3 camFwd = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized;
|
|
||||||
Vector3 camRight = Vector3.Scale(Camera.main.transform.right, new Vector3(1, 0, 1)).normalized;
|
|
||||||
inputDir = (camFwd * input.y + camRight * input.x).normalized;
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
// 4. Normalize (Ensure full blend magnitude)
|
||||||
|
localDir.y = 0;
|
||||||
|
localDir.Normalize();
|
||||||
|
|
||||||
|
// 5. Send to Animator (Dedicated Parameters)
|
||||||
|
animator.SetFloat(dashHorizontalParam, localDir.x);
|
||||||
|
animator.SetFloat(dashVerticalParam, localDir.z);
|
||||||
|
|
||||||
|
if (debugDash)
|
||||||
{
|
{
|
||||||
// Fallback if no camera found
|
Debug.Log($"[Dash Final] Local X: {localDir.x} | Local Z: {localDir.z}");
|
||||||
inputDir = new Vector3(input.x, 0, input.y).normalized;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// B. Convert that World Direction into the Character's Local Space
|
// 6. Play Animation
|
||||||
// This tells us: "Is the input to the Left, Right, or Forward of ME?"
|
|
||||||
Vector3 localDir = transform.InverseTransformDirection(inputDir);
|
|
||||||
|
|
||||||
// C. Send to Animator
|
|
||||||
ApplyDashParams(localDir.x, localDir.z);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. Play Animation
|
|
||||||
animator.CrossFadeInFixedTime(dashBlendTreeState, rollTransition, baseLayer);
|
animator.CrossFadeInFixedTime(dashBlendTreeState, rollTransition, baseLayer);
|
||||||
|
|
||||||
// 4. Lock parameters briefly so Invector doesn't overwrite them immediately
|
|
||||||
StartCoroutine(LockDashParamsRoutine());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper to set params and lock the update loop
|
// --- Standard Boilerplate Below ---
|
||||||
private void ApplyDashParams(float x, float y)
|
|
||||||
{
|
|
||||||
_lockAnimParamsForDash = true;
|
|
||||||
animator.SetFloat(vAnimatorParameters.InputHorizontal, x);
|
|
||||||
animator.SetFloat(vAnimatorParameters.InputVertical, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Release the lock after a short delay (once the blend has firmly started)
|
|
||||||
private IEnumerator LockDashParamsRoutine()
|
|
||||||
{
|
|
||||||
yield return new WaitForSeconds(0.2f); // Adjust this if the blend pops back too soon
|
|
||||||
_lockAnimParamsForDash = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- CRITICAL FIX: Override Invector's Parameter Update ---
|
|
||||||
public override void UpdateAnimatorParameters()
|
|
||||||
{
|
|
||||||
// If we are locking parameters for the dash, DO NOT let the base class overwrite them.
|
|
||||||
if (_lockAnimParamsForDash) return;
|
|
||||||
|
|
||||||
// Otherwise, run standard Invector logic
|
|
||||||
base.UpdateAnimatorParameters();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Standard overrides below...
|
|
||||||
public void OnEvadeStart() { if (!m_GodMode) isImmortal = true; }
|
public void OnEvadeStart() { if (!m_GodMode) isImmortal = true; }
|
||||||
public void OnEvadeEnd() { if (!m_GodMode) isImmortal = false; }
|
public void OnEvadeEnd() { if (!m_GodMode) isImmortal = false; }
|
||||||
public override void ActionsControl() { base.ActionsControl(); m_isDashing = IsAnimatorTag("IsDashing"); }
|
public override void ActionsControl() { base.ActionsControl(); m_isDashing = IsAnimatorTag("IsDashing"); }
|
||||||
@@ -148,30 +129,18 @@ namespace Beyond
|
|||||||
{
|
{
|
||||||
int deadLayer = 0;
|
int deadLayer = 0;
|
||||||
var info = animatorStateInfos.GetStateInfoUsingTag("Dead");
|
var info = animatorStateInfos.GetStateInfoUsingTag("Dead");
|
||||||
if (info != null)
|
if (info != null && !animator.IsInTransition(deadLayer) && info.normalizedTime >= 0.99f && groundDistance <= 0.15f) RemoveComponents();
|
||||||
{
|
|
||||||
if (!animator.IsInTransition(deadLayer) && info.normalizedTime >= 0.99f && groundDistance <= 0.15f) RemoveComponents();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (deathBy == DeathBy.AnimationWithRagdoll)
|
else if (deathBy == DeathBy.AnimationWithRagdoll)
|
||||||
{
|
{
|
||||||
int deadLayer = 0;
|
int deadLayer = 0;
|
||||||
var info = animatorStateInfos.GetStateInfoUsingTag("Dead");
|
var info = animatorStateInfos.GetStateInfoUsingTag("Dead");
|
||||||
if (info != null)
|
if (info != null && !animator.IsInTransition(deadLayer) && info.normalizedTime >= 0.8f) onActiveRagdoll.Invoke(null);
|
||||||
{
|
|
||||||
if (!animator.IsInTransition(deadLayer) && info.normalizedTime >= 0.8f) onActiveRagdoll.Invoke(null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (deathBy == DeathBy.Ragdoll)
|
|
||||||
{
|
|
||||||
onActiveRagdoll.Invoke(null);
|
|
||||||
}
|
}
|
||||||
|
else if (deathBy == DeathBy.Ragdoll) onActiveRagdoll.Invoke(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveAnimatorTags()
|
public void RemoveAnimatorTags() => animatorStateInfos.stateInfos.vToList().ForEach(infos => infos.tags.Clear());
|
||||||
{
|
|
||||||
animatorStateInfos.stateInfos.vToList().ForEach(infos => infos.tags.Clear());
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void ControlAnimatorRootMotion()
|
public override void ControlAnimatorRootMotion()
|
||||||
{
|
{
|
||||||
@@ -191,24 +160,17 @@ namespace Beyond
|
|||||||
if (useRootMotion) MoveCharacter(moveDirection);
|
if (useRootMotion) MoveCharacter(moveDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnTriggerEnter(Collider other)
|
protected override void OnTriggerEnter(Collider other) { if (!m_ignoreTriggers) onActionEnter.Invoke(other); }
|
||||||
{
|
|
||||||
if (!m_ignoreTriggers) onActionEnter.Invoke(other);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnTriggerStay(Collider other)
|
protected override void OnTriggerStay(Collider other)
|
||||||
{
|
{
|
||||||
try { CheckForAutoCrouch(other); }
|
try { CheckForAutoCrouch(other); } catch (UnityException e) { Debug.LogWarning(e.Message); }
|
||||||
catch (UnityException e) { Debug.LogWarning(e.Message); }
|
|
||||||
if (!m_ignoreTriggers) base.OnTriggerStay(other);
|
if (!m_ignoreTriggers) base.OnTriggerStay(other);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnTriggerExit(Collider other)
|
protected override void OnTriggerExit(Collider other)
|
||||||
{
|
{
|
||||||
AutoCrouchExit(other);
|
AutoCrouchExit(other);
|
||||||
if (!m_ignoreTriggers) base.OnTriggerExit(other);
|
if (!m_ignoreTriggers) base.OnTriggerExit(other);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawWeaponLowLeft() { }
|
void DrawWeaponLowLeft() { }
|
||||||
|
|
||||||
public override void ControlRotationType()
|
public override void ControlRotationType()
|
||||||
@@ -217,10 +179,7 @@ namespace Beyond
|
|||||||
bool validInput = input != Vector3.zero || (isStrafing ? strafeSpeed.rotateWithCamera : freeSpeed.rotateWithCamera);
|
bool validInput = input != Vector3.zero || (isStrafing ? strafeSpeed.rotateWithCamera : freeSpeed.rotateWithCamera);
|
||||||
if (validInput)
|
if (validInput)
|
||||||
{
|
{
|
||||||
if (lockAnimMovement)
|
if (lockAnimMovement) inputSmooth = Vector3.Lerp(inputSmooth, input, (isStrafing ? strafeSpeed.movementSmooth : freeSpeed.movementSmooth) * Time.deltaTime);
|
||||||
{
|
|
||||||
inputSmooth = Vector3.Lerp(inputSmooth, input, (isStrafing ? strafeSpeed.movementSmooth : freeSpeed.movementSmooth) * Time.deltaTime);
|
|
||||||
}
|
|
||||||
Vector3 dir = (isStrafing && isGrounded && (!isSprinting || sprintOnlyFree == false) || (freeSpeed.rotateWithCamera && input == Vector3.zero)) && rotateTarget ? rotateTarget.forward : moveDirection;
|
Vector3 dir = (isStrafing && isGrounded && (!isSprinting || sprintOnlyFree == false) || (freeSpeed.rotateWithCamera && input == Vector3.zero)) && rotateTarget ? rotateTarget.forward : moveDirection;
|
||||||
if (isStrafing || !useAnimationBasedRotation) RotateToDirection(dir);
|
if (isStrafing || !useAnimationBasedRotation) RotateToDirection(dir);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ Material:
|
|||||||
- _DetailNormalMapScale: 1
|
- _DetailNormalMapScale: 1
|
||||||
- _DissolveNoiseScale: 25
|
- _DissolveNoiseScale: 25
|
||||||
- _DstBlend: 10
|
- _DstBlend: 10
|
||||||
|
- _DstBlendAlpha: 10
|
||||||
- _EffectStrenght: 1
|
- _EffectStrenght: 1
|
||||||
- _EffectThreshold: 0
|
- _EffectThreshold: 0
|
||||||
- _EnvironmentReflections: 1
|
- _EnvironmentReflections: 1
|
||||||
@@ -140,6 +141,7 @@ Material:
|
|||||||
- _SmoothnessTextureChannel: 0
|
- _SmoothnessTextureChannel: 0
|
||||||
- _SpecularHighlights: 1
|
- _SpecularHighlights: 1
|
||||||
- _SrcBlend: 1
|
- _SrcBlend: 1
|
||||||
|
- _SrcBlendAlpha: 1
|
||||||
- _Surface: 1
|
- _Surface: 1
|
||||||
- _Threshold: 0
|
- _Threshold: 0
|
||||||
- _USEDISSOLVE: 1
|
- _USEDISSOLVE: 1
|
||||||
|
|||||||
@@ -19,10 +19,15 @@ ModelImporter:
|
|||||||
animationImportErrors:
|
animationImportErrors:
|
||||||
animationImportWarnings: "\nClip 'Take 001' has import animation warnings that
|
animationImportWarnings: "\nClip 'Take 001' has import animation warnings that
|
||||||
might lower retargeting quality:\nNote: Activate translation DOF on avatar
|
might lower retargeting quality:\nNote: Activate translation DOF on avatar
|
||||||
to improve retargeting quality.\n\t'BascileusRCalf' has scale animation that
|
to improve retargeting quality.\n\t'BascileusLCalf' has scale animation that
|
||||||
will be discarded.\n\t'BascileusRFoot' has scale animation that will be discarded.\n\t'BascileusRibcage'
|
will be discarded.\n\t'BascileusLFoot' has scale animation that will be discarded.\n\t'BascileusRibcage'
|
||||||
is inbetween humanoid transforms and has rotation animation that will be discarded.\n\t'BascileusLForearm2'
|
is inbetween humanoid transforms and has rotation animation that will be discarded.\n\t'BascileusLForearm1'
|
||||||
is inbetween humanoid transforms and has rotation animation that will be discarded.\n\t'BascileusRForearm2'
|
has scale animation that will be discarded.\n\t'BascileusLForearm2' is inbetween
|
||||||
|
humanoid transforms and has rotation animation that will be discarded.\n\t'BascileusLPalm'
|
||||||
|
has scale animation that will be discarded.\n\t'BascileusLDigit11' has scale
|
||||||
|
animation that will be discarded.\n\t'BascileusLDigit22' has scale animation
|
||||||
|
that will be discarded.\n\t'BascileusLDigit32' has scale animation that will
|
||||||
|
be discarded.\n\t'BascileusLDigit42' has scale animation that will be discarded.\n\t'BascileusRForearm2'
|
||||||
is inbetween humanoid transforms and has rotation animation that will be discarded.\n"
|
is inbetween humanoid transforms and has rotation animation that will be discarded.\n"
|
||||||
animationRetargetingWarnings:
|
animationRetargetingWarnings:
|
||||||
animationDoRetargetingWarnings: 0
|
animationDoRetargetingWarnings: 0
|
||||||
@@ -50,12 +55,12 @@ ModelImporter:
|
|||||||
hasAdditiveReferencePose: 0
|
hasAdditiveReferencePose: 0
|
||||||
loopTime: 0
|
loopTime: 0
|
||||||
loopBlend: 0
|
loopBlend: 0
|
||||||
loopBlendOrientation: 0
|
loopBlendOrientation: 1
|
||||||
loopBlendPositionY: 0
|
loopBlendPositionY: 0
|
||||||
loopBlendPositionXZ: 0
|
loopBlendPositionXZ: 0
|
||||||
keepOriginalOrientation: 0
|
keepOriginalOrientation: 1
|
||||||
keepOriginalPositionY: 1
|
keepOriginalPositionY: 1
|
||||||
keepOriginalPositionXZ: 1
|
keepOriginalPositionXZ: 0
|
||||||
heightFromFeet: 0
|
heightFromFeet: 0
|
||||||
mirror: 0
|
mirror: 0
|
||||||
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user