summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2022-11-16 20:57:37 +0800
committerchai <215380520@qq.com>2022-11-16 20:57:37 +0800
commit7dd988e2dc0583633781462f3836e6f97b7c682b (patch)
tree1d72c23aee44f1fd6de305e110f709478f4b2c66
parente5b23c103b9c98975ad0d003937d3616478d0177 (diff)
* playback speed
-rw-r--r--Documents/_TODO.xlsxbin2051751 -> 2051761 bytes
-rw-r--r--Erika/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity135
-rw-r--r--Erika/Assets/Bundle/Unit/Colliders/ColliderBox.prefab43
-rw-r--r--Erika/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Combo03_Z0_4.asset51
-rw-r--r--Erika/Assets/Bundle/Unit/PC/Erika/AnimatorController/Erika_AnimatorController.controller89
-rw-r--r--Erika/Assets/Scripts/Input/InputKeyboardMouse.cs14
-rw-r--r--Erika/Assets/Scripts/Input/InputManager.cs7
-rw-r--r--Erika/Assets/Scripts/Test2/TestErikaRobot.cs3
-rw-r--r--Erika/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs2
-rw-r--r--Erika/Assets/Scripts/Unit/AfterImage/AfterImageAvatar.cs2
-rw-r--r--Erika/Assets/Scripts/Unit/AnimationData.cs7
-rw-r--r--Erika/Assets/Scripts/Unit/AnimatorLayerInfo.cs8
-rw-r--r--Erika/Assets/Scripts/Unit/AnimatorState.cs2
-rw-r--r--Erika/Assets/Scripts/Unit/Collider/CollisionHandler.cs4
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs94
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitBody.cs4
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitCollider.cs22
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitComponent.cs7
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitLensEffect.cs4
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPostEffect.cs4
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPreprocessing.cs4
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitRender.cs4
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitSkill.cs44
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState.cs4
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs12
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitState/UnitState.cs6
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs1
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/SkillState.cs35
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/SkillState.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStatemachine.cs6
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/PCController.cs1
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs18
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/PCController_States.cs25
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/PCController_States.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/UnitController.cs18
-rw-r--r--Erika/Assets/Scripts/Unit/RootMotionProxy.cs3
-rw-r--r--Erika/Assets/Scripts/Unit/UnitProfile.cs5
-rw-r--r--Erika/Assets/Scripts/Unit/UnitRootMotion.cs12
-rw-r--r--Erika/Assets/Scripts/Utils/UnityExtends.cs4
39 files changed, 517 insertions, 209 deletions
diff --git a/Documents/_TODO.xlsx b/Documents/_TODO.xlsx
index d8f0440a..c3bfba71 100644
--- a/Documents/_TODO.xlsx
+++ b/Documents/_TODO.xlsx
Binary files differ
diff --git a/Erika/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity b/Erika/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity
index aa010edf..3250e56c 100644
--- a/Erika/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity
+++ b/Erika/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity
@@ -112,6 +112,135 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
+--- !u!1 &65697947
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 65697951}
+ - component: {fileID: 65697950}
+ - component: {fileID: 65697949}
+ - component: {fileID: 65697948}
+ m_Layer: 5
+ m_Name: UICanvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &65697948
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 65697947}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &65697949
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 65697947}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+--- !u!223 &65697950
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 65697947}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &65697951
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 65697947}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 143417589}
+ m_RootOrder: 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: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!1 &143417588
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 143417589}
+ m_Layer: 0
+ m_Name: UIRoot
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &143417589
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 143417588}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 65697951}
+ m_Father: {fileID: 0}
+ m_RootOrder: 11
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &152403860
GameObject:
m_ObjectHideFlags: 0
@@ -411,7 +540,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 9
+ m_RootOrder: 8
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &533536616
GameObject:
@@ -987,7 +1116,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 68da209687f0dcc49967a423b26c204c, type: 3}
m_Name:
m_EditorClassIdentifier:
- offset: {x: 0, y: 1.2, z: 0}
+ offset: {x: 0, y: 2, z: 0}
z: -7.5
region:
l: -0.1
@@ -1716,7 +1845,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 8
+ m_RootOrder: 9
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2137539566
GameObject:
diff --git a/Erika/Assets/Bundle/Unit/Colliders/ColliderBox.prefab b/Erika/Assets/Bundle/Unit/Colliders/ColliderBox.prefab
index e6ff38a3..be790ace 100644
--- a/Erika/Assets/Bundle/Unit/Colliders/ColliderBox.prefab
+++ b/Erika/Assets/Bundle/Unit/Colliders/ColliderBox.prefab
@@ -74,5 +74,44 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: b6e50b8c49a6ee144830503d34593230, type: 3}
m_Name:
m_EditorClassIdentifier:
- colliderType: 0
- owner: {fileID: 0}
+ m_ColliderBox:
+ uid: 0
+ type: 0
+ pivot: 0
+ nobreak: 0
+ invisible: 0
+ multiHit: 0
+ hitResponse: 0
+ hitBack: {x: 0, y: 0, z: 0}
+ hitCurve:
+ serializedVersion: 2
+ m_Curve: []
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ freezeGlobal: 0
+ freezeFramesSelf: 0
+ freezeFramesOther: 0
+ sparkPath:
+ sparkAnchor: 1
+ sparkOffset: {x: 0, y: 0, z: 0}
+ sparkScale: {x: 1, y: 1, z: 1}
+ multiSparks: 0
+ spark2Path:
+ spark2Anchor: 1
+ spark2Offset: {x: 0, y: 0, z: 0}
+ spark3Path:
+ spark3Anchor: 1
+ spark3Offset: {x: 0, y: 0, z: 0}
+ selfEffect: 0
+ otherEffect: 0
+ zoomCamera: 0
+ shakeScreen: 0
+ shakeOffset: {x: 0, y: 0}
+ shakeStrength: 0
+ colorDrift: 0
+ blur: 0
+ soundPath:
+ useGravity: 0
+ multiple: 0
+ m_Owner: {fileID: 0}
diff --git a/Erika/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Combo03_Z0_4.asset b/Erika/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Combo03_Z0_4.asset
index 30e4c31f..27b8a497 100644
--- a/Erika/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Combo03_Z0_4.asset
+++ b/Erika/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Combo03_Z0_4.asset
@@ -221,56 +221,7 @@ MonoBehaviour:
active: 1
position: {x: 1.5449152, y: 1.4012014, z: 0}
size: {x: 2.58, y: 1.14, z: 1}
- defendBoxes:
- - collider:
- uid: -2005854031
- type: 4
- pivot: 1
- nobreak: 0
- invisible: 0
- multiHit: 0
- hitResponse: 0
- hitBack: {x: 0, y: 0, z: 0}
- hitCurve:
- serializedVersion: 2
- m_Curve: []
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- freezeGlobal: 0
- freezeFramesSelf: 0
- freezeFramesOther: 0
- sparkPath:
- sparkAnchor: 1
- sparkOffset: {x: 0, y: 0, z: 0}
- sparkScale: {x: 1, y: 1, z: 1}
- multiSparks: 0
- spark2Path:
- spark2Anchor: 1
- spark2Offset: {x: 0, y: 0, z: 0}
- spark3Path:
- spark3Anchor: 1
- spark3Offset: {x: 0, y: 0, z: 0}
- selfEffect: 0
- otherEffect: 0
- zoomCamera: 0
- shakeScreen: 0
- shakeOffset: {x: 0, y: 0}
- shakeStrength: 0
- colorDrift: 0
- blur: 0
- soundPath:
- useGravity: 0
- multiple: 0
- frames:
- - frame: 6
- active: 1
- position: {x: 0, y: 0, z: 0}
- size: {x: 0.5, y: 1, z: 1}
- - frame: 38
- active: 1
- position: {x: 0, y: 0, z: 0}
- size: {x: 0.5, y: 1, z: 1}
+ defendBoxes: []
overrideRootMotion: 0
rootMotionOverrideData:
positions: []
diff --git a/Erika/Assets/Bundle/Unit/PC/Erika/AnimatorController/Erika_AnimatorController.controller b/Erika/Assets/Bundle/Unit/PC/Erika/AnimatorController/Erika_AnimatorController.controller
index 31f994ec..a0438ed2 100644
--- a/Erika/Assets/Bundle/Unit/PC/Erika/AnimatorController/Erika_AnimatorController.controller
+++ b/Erika/Assets/Bundle/Unit/PC/Erika/AnimatorController/Erika_AnimatorController.controller
@@ -9,180 +9,162 @@ AnimatorController:
m_Name: Erika_AnimatorController
serializedVersion: 5
m_AnimatorParameters:
- - m_Name: IdleStatus
- m_Type: 1
- m_DefaultFloat: 0.4
- m_DefaultInt: 0
- m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
- - m_Name: PlaybackSpeed0
- m_Type: 1
- m_DefaultFloat: 1
- m_DefaultInt: 0
- m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
- - m_Name: PlaybackSpeed1
- m_Type: 1
- m_DefaultFloat: 1
- m_DefaultInt: 0
- m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
- m_Name: ToIdle
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToMove
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToJump
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToLanding
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToAirDash
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToLandingGround
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToHeavyHit
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToGetUp
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToAttack
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToAttack0
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToAttack1
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToAttack2
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToAttack3
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToAttack4
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToAttack5
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToQTE
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToPhase0
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToPhase1
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToPhase2
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToPhase3
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToPhase4
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToPhase5
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToPhase6
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToPhase7
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToPhase8
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
- m_Name: ToPhase9
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
+ m_Controller: {fileID: 0}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Basic
@@ -547,9 +529,9 @@ AnimatorStateTransition:
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
- m_TransitionDuration: 0.05
+ m_TransitionDuration: 0.1
m_TransitionOffset: 0
- m_ExitTime: 0.75
+ m_ExitTime: 0.865238
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 0
@@ -612,7 +594,10 @@ AnimatorStateTransition:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
- m_Conditions: []
+ m_Conditions:
+ - m_ConditionMode: 1
+ m_ConditionEvent: ToAttack
+ m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102008300147848362}
m_Solo: 0
@@ -691,9 +676,9 @@ AnimatorStateTransition:
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
- m_TransitionDuration: 0.1
+ m_TransitionDuration: 0.02
m_TransitionOffset: 0
- m_ExitTime: 0.75
+ m_ExitTime: 0.69857144
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 0
@@ -2883,13 +2868,13 @@ AnimatorStateMachine:
m_Position: {x: -948, y: -996, z: 0}
- serializedVersion: 1
m_State: {fileID: 1102615469568996994}
- m_Position: {x: -372, y: -1056, z: 0}
+ m_Position: {x: -360, y: -1056, z: 0}
- serializedVersion: 1
m_State: {fileID: 1102129912193280218}
- m_Position: {x: -360, y: -972, z: 0}
+ m_Position: {x: -360, y: -960, z: 0}
- serializedVersion: 1
m_State: {fileID: 1102416046689606334}
- m_Position: {x: -360, y: -888, z: 0}
+ m_Position: {x: -360, y: -864, z: 0}
- serializedVersion: 1
m_State: {fileID: 1102008300147848362}
m_Position: {x: -900, y: -756, z: 0}
diff --git a/Erika/Assets/Scripts/Input/InputKeyboardMouse.cs b/Erika/Assets/Scripts/Input/InputKeyboardMouse.cs
index ebcb457e..e75bfa30 100644
--- a/Erika/Assets/Scripts/Input/InputKeyboardMouse.cs
+++ b/Erika/Assets/Scripts/Input/InputKeyboardMouse.cs
@@ -2,18 +2,24 @@
using System.Collections.Generic;
using UnityEngine;
+/// <summary>
+/// 鼠标键盘输入
+/// </summary>
public class InputKeyboardMouse : MonoBehaviour
{
void Update()
{
- if (Input.GetButtonDown("Fire1"))
+ float horizontal = Input.GetAxisRaw("Horizontal");
+ bool bMove = horizontal != 0;
+ if (bMove)
{
- PCController.instance.CommandMove();
+ EUnitDirection dir = horizontal == 1 ? EUnitDirection.Right : EUnitDirection.Left;
+ InputManager.Instance.InputTurn(dir);
+ InputManager.Instance.InputMove(dir);
}
- if (Input.GetButtonDown("Fire2"))
+ else
{
PCController.instance.CommandIdle();
}
-
}
}
diff --git a/Erika/Assets/Scripts/Input/InputManager.cs b/Erika/Assets/Scripts/Input/InputManager.cs
index 5403d779..c3b8096a 100644
--- a/Erika/Assets/Scripts/Input/InputManager.cs
+++ b/Erika/Assets/Scripts/Input/InputManager.cs
@@ -7,9 +7,14 @@ using UnityEngine;
/// </summary>
public class InputManager : SingletonMB<InputManager>
{
+ public void InputTurn(EUnitDirection dir)
+ {
+ PCController.instance.CommandTurn(dir);
+ }
- public void InputMove()
+ public void InputMove(EUnitDirection dir)
{
+ PCController.instance.CommandMove(dir);
}
public void InputSkill()
diff --git a/Erika/Assets/Scripts/Test2/TestErikaRobot.cs b/Erika/Assets/Scripts/Test2/TestErikaRobot.cs
index 0be3b380..93c2bfaa 100644
--- a/Erika/Assets/Scripts/Test2/TestErikaRobot.cs
+++ b/Erika/Assets/Scripts/Test2/TestErikaRobot.cs
@@ -10,7 +10,8 @@ public class TestErikaRobot : SingletonMB<TestErikaRobot>
void Start()
{
- UnitManager.Instance.SpawnUnit(profile, Vector3.zero, Quaternion.identity, Vector3.one);
+ UnitController player = UnitManager.Instance.SpawnUnit(profile, Vector3.zero, Quaternion.identity, Vector3.one);
+ UnitManager.Instance.SetPlayerCharacter(player as PCController);
}
} \ No newline at end of file
diff --git a/Erika/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs b/Erika/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs
index 394601e2..a17b39be 100644
--- a/Erika/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs
+++ b/Erika/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs
@@ -21,7 +21,7 @@ public class WaitForActionReachEnd : IEnumerator
public bool MoveNext()
{
- return m_UnitAnimation.playbackNormalizedTime < 1f;
+ return m_UnitAnimation.playbackClampedNormalizedTime < 1f;
}
public void Reset()
diff --git a/Erika/Assets/Scripts/Unit/AfterImage/AfterImageAvatar.cs b/Erika/Assets/Scripts/Unit/AfterImage/AfterImageAvatar.cs
index 170a1202..0b258496 100644
--- a/Erika/Assets/Scripts/Unit/AfterImage/AfterImageAvatar.cs
+++ b/Erika/Assets/Scripts/Unit/AfterImage/AfterImageAvatar.cs
@@ -30,7 +30,7 @@ public class AfterImageAvatar : MonoBehaviour
transform.position = prototype.transform.position;
animator.runtimeAnimatorController = prototype.unitMotion.animator.runtimeAnimatorController;
- animator.Play(prototype.unitMotion.stateHash, 0, prototype.unitMotion.playbackNormalizedTime);
+ animator.Play(prototype.unitMotion.stateHash, 0, prototype.unitMotion.playbackClampedNormalizedTime);
animator.speed = 0.02f;
animator.Update(1 / 60f);
diff --git a/Erika/Assets/Scripts/Unit/AnimationData.cs b/Erika/Assets/Scripts/Unit/AnimationData.cs
index 2d324d49..dab3d55c 100644
--- a/Erika/Assets/Scripts/Unit/AnimationData.cs
+++ b/Erika/Assets/Scripts/Unit/AnimationData.cs
@@ -9,14 +9,15 @@ using UnityEditor;
// 不要修改枚举的顺序,只能在后面新加,不能删除
public enum EAnimationToogle
{
- Combo = 0, // 连击
+ Combo = 0, // 连击,是否可以按键触发combo
SuperArmor = 1, // 霸体
Break = 2, // 打断
- SkillLink = 3, // 技能连招
- Link = 4, // 普攻连招
+ SkillLink = 3, // 技能连招,开启后允许按键触发combo
+ ComboLink = 4, // 普攻连招,开启后按键触发combo
MoveLink = 5, // 接移动
+ ChangeAble = 6, // 是否可以切换动作,从combo池中拿出下一个动作
}
[Serializable]
diff --git a/Erika/Assets/Scripts/Unit/AnimatorLayerInfo.cs b/Erika/Assets/Scripts/Unit/AnimatorLayerInfo.cs
index ecc4daa4..bec49d66 100644
--- a/Erika/Assets/Scripts/Unit/AnimatorLayerInfo.cs
+++ b/Erika/Assets/Scripts/Unit/AnimatorLayerInfo.cs
@@ -106,7 +106,7 @@ public class AnimatorLayerInfo
{
get
{
- return playbackNormalizedTime * clipInfo.clip.length;
+ return playbackClampedNormalizedTime * clipInfo.clip.length;
}
}
@@ -121,7 +121,7 @@ public class AnimatorLayerInfo
}
// 播放进度百分比,[0-1],是逻辑上的,如果动画不是loop,那么播放完后normalizedTime是1
- public float playbackNormalizedTime
+ public float playbackClampedNormalizedTime
{
get
{
@@ -209,7 +209,7 @@ public class AnimatorLayerInfo
{
if (m_AnimationData == null)
return false;
- return m_AnimationData.IsToggleOpen(toggle, playbackNormalizedTime);
+ return m_AnimationData.IsToggleOpen(toggle, playbackClampedNormalizedTime);
}
public void OnUpdate()
@@ -220,7 +220,7 @@ public class AnimatorLayerInfo
// 播放速度控制
if (applySpeedCurve && animationData != null && animationData.speedCurve != null)
{
- playbackSpeed = animationData.speedCurve.Evaluate(playbackNormalizedTime);
+ playbackSpeed = animationData.speedCurve.Evaluate(playbackClampedNormalizedTime);
}
}
diff --git a/Erika/Assets/Scripts/Unit/AnimatorState.cs b/Erika/Assets/Scripts/Unit/AnimatorState.cs
index 62d59239..8bb8a002 100644
--- a/Erika/Assets/Scripts/Unit/AnimatorState.cs
+++ b/Erika/Assets/Scripts/Unit/AnimatorState.cs
@@ -8,8 +8,6 @@ using UnityEngine;
/// </summary>
public enum EAnimatorState
{
- None = 0,
-
// locomotion
__Localmotion = 1,
Idle,
diff --git a/Erika/Assets/Scripts/Unit/Collider/CollisionHandler.cs b/Erika/Assets/Scripts/Unit/Collider/CollisionHandler.cs
index 2af3442a..8593980c 100644
--- a/Erika/Assets/Scripts/Unit/Collider/CollisionHandler.cs
+++ b/Erika/Assets/Scripts/Unit/Collider/CollisionHandler.cs
@@ -25,7 +25,7 @@ public class CollisionHandler : MonoBehaviour
this.m_Owner = owner;
this.transform.SetParent(owner.transform);
- this.transform.localPosition = Vector3.zero;
+ this.transform.ResetTransformation();
m_Collider = GetComponent<Collider>();
}
@@ -43,7 +43,7 @@ public class CollisionHandler : MonoBehaviour
{
BoxCollider bc = collider as BoxCollider;
Vector3 center = info.position;
- Vector3 localPosition = m_Owner.faceRotation * center;
+ Vector3 localPosition = center;// m_Owner.faceRotation * center;
switch(info.collider.pivot)
{
case ColliderBox.Pivot.MiddleBottom:
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs
index 8a69314d..a19512ec 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs
@@ -32,6 +32,10 @@ public class UnitMotion : UnitComponent
// 角色的所有动作数据,包括(动画、事件、RM)
public UnitMotionData m_MotionData;
+ private TimelineEventProxy m_TimelineEventProxy;
+
+ #region 动作状态
+
// 当前动作
protected int m_currentMotionIDID;
public int currentMotionID
@@ -93,7 +97,8 @@ public class UnitMotion : UnitComponent
}
}
- public float playbackNormalizedTime
+ // 归一化的动画播放时间
+ public float playbackClampedNormalizedTime
{
get
{
@@ -105,12 +110,21 @@ public class UnitMotion : UnitComponent
}
}
- public AnimatorStateInfo stateInfo
+ // 并非准确的播放时间,只是逻辑时间,因为动画会加速减速
+ public float playbackClampedTimeInSeconds
+ {
+ get
+ {
+ return playbackClampedNormalizedTime * animationClip.length;
+ }
+ }
+
+ public AnimatorStateInfo stateInfo
{
get
{
AnimatorStateInfo stateInfo = m_Animator.GetCurrentAnimatorStateInfo(0);
- if (isInTransition) // 过渡中的动作认为当前动作是下一个动作
+ if (isInTransition) // 过渡中的动作认为当前动作是下一个动作(为了保证及时性,和m_CUrrentMotionID保证一致)
{
stateInfo = m_Animator.GetNextAnimatorStateInfo(0);
}
@@ -124,48 +138,53 @@ public class UnitMotion : UnitComponent
{
return stateInfo.shortNameHash;
}
- }
+ }
- // 并非准确的播放时间,只是逻辑时间,因为动画会加速减速
- public float playbackTimeInSeconds
- {
- get
- {
- return playbackNormalizedTime * animationClip.length;
- }
- }
+ public float playbackSpeed
+ {
+ get
+ {
+ //return m_Animator.GetFloat("PlaybackSpeed" + 0);
+ return m_Animator.speed;
+ }
+ set
+ {
+ float v = Mathf.Clamp(value, 0, 10);
+ //m_Animator.SetFloat("PlaybackSpeed" + 0, v);
+ m_Animator.speed = v;
+ }
+ }
- private TimelineEventProxy m_TimelineEventProxy;
+ /// <summary>
+ /// 当前动作是否是motionId
+ /// </summary>
+ /// <param name="motionId"></param>
+ /// <returns></returns>
+ public bool IsCurrent(int motionId)
+ {
+ if (motionId == 0)
+ return false;
+ return m_currentMotionIDID == motionId;
+ }
- public float playbackSpeed
- {
- get
- {
- return m_Animator.GetFloat("PlaybackSpeed" + 0);
- }
- set
- {
- float v = Mathf.Clamp(value, 0, 10);
- m_Animator.SetFloat("PlaybackSpeed" + 0, v);
- }
- }
+ #endregion
public override void OnUpdate()
{
base.OnUpdate();
// 执行事件
- m_TimelineEventProxy.ExecuteAnimationEvents(animationData, playbackTimeInSeconds * TimelineEventProxy.FPS);
+ m_TimelineEventProxy.ExecuteAnimationEvents(animationData, playbackClampedTimeInSeconds * TimelineEventProxy.FPS);
// 播放速度控制
if (/*applySpeedCurve && */animationData != null && animationData.speedCurve != null)
{
- playbackSpeed = animationData.speedCurve.Evaluate(playbackNormalizedTime);
+ playbackSpeed = animationData.speedCurve.Evaluate(playbackClampedNormalizedTime);
}
}
public bool IsToggleOpen(EAnimationToogle toggle)
{
- return animationData.IsToggleOpen(toggle, playbackNormalizedTime);
+ return animationData.IsToggleOpen(toggle, playbackClampedNormalizedTime);
}
//public override void Initialize()
@@ -276,6 +295,21 @@ public class UnitMotion : UnitComponent
#region 播放动作,对外屏蔽Animator
/// <summary>
+ /// 重置所有trigger的状态,否则在过渡时切换另一个动作会有问题,导致切换失败
+ /// </summary>
+ private void ClearAllTriggers()
+ {
+ var allMotions = m_MotionData.allMotions;
+ if (allMotions == null || allMotions.Count == 0)
+ return;
+ allMotions.ForEach(m => {
+ if (m.hide)
+ return;
+ m_Animator.ResetTrigger("To" + m.animatorState.ToString());
+ });
+ }
+
+ /// <summary>
/// 用trigger跳转动作
/// </summary>
/// <param name="animType"></param>
@@ -293,6 +327,8 @@ public class UnitMotion : UnitComponent
if (!overrideAnim)
return;
+ ClearAllTriggers();
+
string trigger = "To" + stateName;
m_Animator.SetTrigger(trigger);
currentMotionID = motion.uid;
@@ -309,6 +345,8 @@ public class UnitMotion : UnitComponent
if (!overrideAnim)
return;
+ ClearAllTriggers();
+
string trigger = "To" + stateName;
m_Animator.SetTrigger(trigger);
currentMotionID = motion.uid;
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitBody.cs b/Erika/Assets/Scripts/Unit/Components/UnitBody.cs
index cc7ac348..e2c01f0e 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitBody.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitBody.cs
@@ -4,9 +4,9 @@ using UnityEngine;
public class UnitBody : UnitComponent
{
- public override void Initialize()
+ public override void Initialize(object obj = null)
{
- base.Initialize();
+ base.Initialize(obj);
}
public override void OnUpdate()
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitCollider.cs b/Erika/Assets/Scripts/Unit/Components/UnitCollider.cs
index 1d216a06..b0910c0c 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitCollider.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitCollider.cs
@@ -30,9 +30,9 @@ public class UnitCollider : UnitComponent
base.OnDestroy();
}
- public override void Initialize()
+ public override void Initialize(object obj = null)
{
- base.Initialize();
+ base.Initialize(obj);
showGizmos = true;
m_AllColliders.Clear();
@@ -46,7 +46,7 @@ public class UnitCollider : UnitComponent
public ColliderInfo[] GetCurrentBoxesInfoByType(ColliderBox.EColliderType type)
{
AnimationData animData = m_Owner.unitMotion.animationData;
- float playbackTime = m_Owner.unitMotion.playbackNormalizedTime * m_Owner.unitMotion.animationClip.length;
+ float playbackTime = m_Owner.unitMotion.playbackClampedNormalizedTime * m_Owner.unitMotion.animationClip.length;
//float playbackTime = layerInfo.playbackRealTimeInSeconds;
ColliderInfo[] infos = animData.GetActiveCollidersInfo(type, playbackTime);
return infos;
@@ -86,20 +86,26 @@ public class UnitCollider : UnitComponent
public override void OnUpdate()
{
+ }
+
+ public override void OnFixedUpdate()
+ {
+ base.OnFixedUpdate();
+
m_ActiveColliders.Clear();
for (int i = (int)ColliderBox.EColliderType.HitBox; i < (int)ColliderBox.EColliderType.End; ++i)
{
ColliderBox.EColliderType colliderType = (ColliderBox.EColliderType)i;
ColliderInfo[] activeColliders = GetCurrentBoxesInfoByType(colliderType);
- if(activeColliders == null || activeColliders.Length == 0)
+ if (activeColliders == null || activeColliders.Length == 0)
continue;
- for(int j = 0; j < activeColliders.Length; ++j)
+ for (int j = 0; j < activeColliders.Length; ++j)
{
ColliderInfo info = activeColliders[j];
m_ActiveColliders.Add(info.uid);
CollisionHandler handler = m_AllColliders.Find(s => s.colliderBox.uid == info.uid);
- if(handler == null)
+ if (handler == null)
{
handler = ResourceManager.Instance.CreateObj<CollisionHandler>(StaticDefine.collider);
handler.Initialize(m_Owner, info.collider);
@@ -109,10 +115,10 @@ public class UnitCollider : UnitComponent
}
}
- for(int i = m_AllColliders.Count - 1; i >= 0; --i)
+ for (int i = m_AllColliders.Count - 1; i >= 0; --i)
{
CollisionHandler handler = m_AllColliders[i];
- if(!m_ActiveColliders.Contains(handler.colliderBox.uid))
+ if (!m_ActiveColliders.Contains(handler.colliderBox.uid))
{
m_AllColliders.RemoveAt(i);
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitComponent.cs b/Erika/Assets/Scripts/Unit/Components/UnitComponent.cs
index 948beba4..414a13bd 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitComponent.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitComponent.cs
@@ -27,12 +27,7 @@ public class UnitComponent : MonoBehaviour
{
}
- public virtual void Initialize()
- {
- m_Owner = GetComponent<UnitController>();
- }
-
- public virtual void Initialize(object param)
+ public virtual void Initialize(object param = null)
{
m_Owner = GetComponent<UnitController>();
}
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitLensEffect.cs b/Erika/Assets/Scripts/Unit/Components/UnitLensEffect.cs
index 0511b1bb..13ccc08e 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitLensEffect.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitLensEffect.cs
@@ -24,9 +24,9 @@ public partial class UnitLensEffect : UnitComponent
m_CommandBufferPool = new ObjectPool<CommandBuffer>(null, null);
}
- public override void Initialize()
+ public override void Initialize(object obj = null)
{
- base.Initialize();
+ base.Initialize(obj);
renderers = new List<RendererProxy>();
m_Effects = new List<LensEffectBase>();
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPostEffect.cs b/Erika/Assets/Scripts/Unit/Components/UnitPostEffect.cs
index ad98ff6a..872f2df1 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitPostEffect.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitPostEffect.cs
@@ -5,9 +5,9 @@ using UnityEngine;
public class UnitPostEffect : UnitComponent
{
- public override void Initialize()
+ public override void Initialize(object obj)
{
- base.Initialize();
+ base.Initialize(obj);
}
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPreprocessing.cs b/Erika/Assets/Scripts/Unit/Components/UnitPreprocessing.cs
index 8c56f0b6..00770ce2 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitPreprocessing.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitPreprocessing.cs
@@ -27,9 +27,9 @@ public class UnitPreprocessing : UnitComponent
private Material m_MaterialDepth;
- public override void Initialize()
+ public override void Initialize(object obj = null)
{
- base.Initialize();
+ base.Initialize(obj);
}
public override void OnPostInitialize()
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitRender.cs b/Erika/Assets/Scripts/Unit/Components/UnitRender.cs
index a5822ffe..d20e56a8 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitRender.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitRender.cs
@@ -19,9 +19,9 @@ public class UnitRender : UnitComponent
}
}
- public override void Initialize()
+ public override void Initialize(object obj = null)
{
- base.Initialize();
+ base.Initialize(obj);
}
public override void OnPostInitialize()
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitSkill.cs b/Erika/Assets/Scripts/Unit/Components/UnitSkill.cs
index 4af856f2..c8f31f31 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitSkill.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitSkill.cs
@@ -2,12 +2,15 @@
using System.Collections.Generic;
using UnityEngine;
-/// <summary>
-/// 技能逻辑,包含combo
-/// </summary>
[DisallowMultipleComponent]
public class UnitSkill : UnitComponent
{
+ public struct Param
+ {
+ public List<SkillData> skills;
+ public List<ComboData> combos;
+ }
+
//角色所有技能数据
protected List<SkillData> m_AllSkills;
@@ -29,4 +32,39 @@ public class UnitSkill : UnitComponent
return owner.unitStatemachine;
}
}
+
+ public override void Initialize(object obj = null)
+ {
+ base.Initialize(obj);
+
+ Param param = (Param)obj;
+ m_AllSkills = param.skills;
+ m_AllCombos = param.combos;
+
+
+ }
+
+ #region 技能状态判定
+
+ /// <summary>
+ /// 是否可以连招
+ /// </summary>
+ /// <returns></returns>
+ public bool IsLink()
+ {
+ return false;
+ }
+
+ public bool IsSkillMoveAble()
+ {
+ return false;
+ }
+
+ public bool CanSkillMove()
+ {
+ return false;
+ }
+
+ #endregion
+
}
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState.cs b/Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState.cs
index e44c7f85..e8eec45e 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState.cs
@@ -44,9 +44,9 @@ public partial class PCState : UnitState
private EUnitState m_PrevState;
- public override void Initialize()
+ public override void Initialize(object obj)
{
- base.Initialize();
+ base.Initialize(obj);
owner.onTimelineEvent += OnTimeLineEvent;
}
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs b/Erika/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs
index e6b526f7..49ace09d 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs
@@ -31,9 +31,9 @@ public class MonsterState : UnitState
UnitMotion unitMotion { get { return m_Owner.unitMotion; } }
- public override void Initialize()
+ public override void Initialize(object obj)
{
- base.Initialize();
+ base.Initialize(obj);
}
public void ChangeState<T>(EUnitState nextState, T param = default, bool bForce = false)
@@ -116,7 +116,7 @@ public class MonsterState : UnitState
yield return null;
while (true)
{
- //bool reachEnd = m_Owner.monsterAnimation.playbackNormalizedTime == 1;
+ //bool reachEnd = m_Owner.monsterAnimation.playbackClampedNormalizedTime == 1;
//if(reachEnd)
//{
// ChangeState(EUnitState.Idle, new IdleParam());
@@ -140,7 +140,7 @@ public class MonsterState : UnitState
yield return null;
while (true)
{
- //bool reachEnd = m_Owner.monsterAnimation.playbackNormalizedTime == 1;
+ //bool reachEnd = m_Owner.monsterAnimation.playbackClampedNormalizedTime == 1;
//if (reachEnd)
//{
// //yield return new WaitForSeconds(1f);
@@ -167,7 +167,7 @@ public class MonsterState : UnitState
float g = -15.8f;
while (true)
{
- //bool reachEnd = m_Owner.monsterAnimation.playbackNormalizedTime == 1;
+ //bool reachEnd = m_Owner.monsterAnimation.playbackClampedNormalizedTime == 1;
//if (reachEnd)
//{
// vy += g * Time.deltaTime;
@@ -198,7 +198,7 @@ public class MonsterState : UnitState
yield return null;
while (true)
{
- //bool reachEnd = m_Owner.monsterAnimation.playbackNormalizedTime == 1;
+ //bool reachEnd = m_Owner.monsterAnimation.playbackClampedNormalizedTime == 1;
//if (reachEnd)
//{
// ChangeState(EUnitState.Idle, new IdleParam());
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitState/UnitState.cs b/Erika/Assets/Scripts/Unit/Components/UnitState/UnitState.cs
index 924b3014..c9a39513 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitState/UnitState.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitState/UnitState.cs
@@ -16,7 +16,7 @@ public class UnitState : UnitComponent
{
get
{
- return owner.unitMotion.playbackNormalizedTime == 1;
+ return owner.unitMotion.playbackClampedNormalizedTime == 1;
}
}
@@ -27,7 +27,7 @@ public class UnitState : UnitComponent
{
if (!owner.unitMotion.animationData.HasProperty(EAnimationProperty.Endpoint))
return false;
- return owner.unitMotion.playbackNormalizedTime >= owner.unitMotion.animationData.GetProperty(EAnimationProperty.Endpoint);
+ return owner.unitMotion.playbackClampedNormalizedTime >= owner.unitMotion.animationData.GetProperty(EAnimationProperty.Endpoint);
}
}
@@ -57,7 +57,7 @@ public class UnitState : UnitComponent
{
get
{
- return owner.unitMotion.IsToggleOpen(EAnimationToogle.Link);
+ return owner.unitMotion.IsToggleOpen(EAnimationToogle.ComboLink);
}
}
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs
index aa238da7..443450f0 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs
@@ -27,6 +27,7 @@ namespace UnitStates.Common
public override void OnFixedUpdate()
{
+
}
public override void OnUpdate()
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/SkillState.cs b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/SkillState.cs
new file mode 100644
index 00000000..061a607c
--- /dev/null
+++ b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/SkillState.cs
@@ -0,0 +1,35 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace UnitStates.Common
+{
+
+ public class SkillState : UnitStateBase
+ {
+ public struct SkillParam : IStateParam
+ {
+ }
+
+ public override void ModifyNextState(EUnitState state, UnitStateBase nextState)
+ {
+ }
+
+ public override void OnEnter(IStateParam param)
+ {
+ m_Motion.Trigger(EAnimationType.Idle);
+ }
+
+ public override void OnExit()
+ {
+ }
+
+ public override void OnFixedUpdate()
+ {
+ }
+
+ public override void OnUpdate()
+ {
+ }
+ }
+}
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/SkillState.cs.meta b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/SkillState.cs.meta
new file mode 100644
index 00000000..94c2a8e2
--- /dev/null
+++ b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/SkillState.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: caaab93386974e5429d5ba2f97728f44
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStatemachine.cs b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStatemachine.cs
index f7b76b3a..e6c820d3 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStatemachine.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStatemachine.cs
@@ -117,8 +117,11 @@ public sealed class UnitStatemachine : UnitComponent
/// 切换到目标状态
/// </summary>
/// <param name="state"></param>
- public void ChangeState(EUnitState state, UnitStateBase.IStateParam param)
+ public bool ChangeState(EUnitState state, UnitStateBase.IStateParam param, bool bForce = false)
{
+ if (!bForce && m_CurrentState == state)
+ return true;
+
UnitStateBase currentState = GetState(m_CurrentState);
UnitStateBase nextState = GetState(state);
if (currentState != null)
@@ -131,6 +134,7 @@ public sealed class UnitStatemachine : UnitComponent
{
nextState.OnEnter(param);
}
+ return true;
}
/// <summary>
diff --git a/Erika/Assets/Scripts/Unit/Controller/PCController.cs b/Erika/Assets/Scripts/Unit/Controller/PCController.cs
index 95320912..0c3ef100 100644
--- a/Erika/Assets/Scripts/Unit/Controller/PCController.cs
+++ b/Erika/Assets/Scripts/Unit/Controller/PCController.cs
@@ -39,6 +39,7 @@ public sealed partial class PCController : UnitController
{
fsm.AddState(EUnitState.Idle, new UnitStates.Common.IdleState());
fsm.AddState(EUnitState.Move, new UnitStates.Common.MoveState());
+ fsm.AddState(EUnitState.Skill, new UnitStates.Common.SkillState());
fsm.ChangeState(EUnitState.Idle, null);
}
diff --git a/Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs b/Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs
index 7ec5d30d..7f86a574 100644
--- a/Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs
+++ b/Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs
@@ -2,12 +2,24 @@
using System.Collections.Generic;
using UnityEngine;
+// Input.XXXX()
+// -> InputManager.InputXXX()
+// -> PCController.CommandXXX()
+
public sealed partial class PCController : UnitController
{
- public void CommandMove()
+ public void CommandTurn (EUnitDirection dir)
{
- unitStatemachine.ChangeState(EUnitState.Move, null);
+ Turn(dir == EUnitDirection.Right);
+ }
+
+ public void CommandMove(EUnitDirection dir)
+ {
+ if (!IsMoveAble())
+ return;
+
+ EnterMove();
}
public void CommandIdle()
@@ -23,7 +35,7 @@ public sealed partial class PCController : UnitController
{
}
- public void CommandSkill()
+ public void CommandSkill(int id)
{
}
diff --git a/Erika/Assets/Scripts/Unit/Controller/PCController_States.cs b/Erika/Assets/Scripts/Unit/Controller/PCController_States.cs
new file mode 100644
index 00000000..6eee60b5
--- /dev/null
+++ b/Erika/Assets/Scripts/Unit/Controller/PCController_States.cs
@@ -0,0 +1,25 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public sealed partial class PCController : UnitController
+{
+
+ private bool IsMoveAble()
+ {
+ return true;
+ }
+
+ #region 操作statemachine
+
+ private void EnterMove()
+ {
+ if (fsm.IsInState(EUnitState.Move))
+ return;
+
+ fsm.ChangeState(EUnitState.Move, null);
+ }
+
+ #endregion
+
+}
diff --git a/Erika/Assets/Scripts/Unit/Controller/PCController_States.cs.meta b/Erika/Assets/Scripts/Unit/Controller/PCController_States.cs.meta
new file mode 100644
index 00000000..f1ccd46a
--- /dev/null
+++ b/Erika/Assets/Scripts/Unit/Controller/PCController_States.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fafb158c8bb0c4340a63c4cb743706de
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Erika/Assets/Scripts/Unit/Controller/UnitController.cs b/Erika/Assets/Scripts/Unit/Controller/UnitController.cs
index 3fec206a..9f765aae 100644
--- a/Erika/Assets/Scripts/Unit/Controller/UnitController.cs
+++ b/Erika/Assets/Scripts/Unit/Controller/UnitController.cs
@@ -9,6 +9,12 @@ using UnityEngine;
// void OnGrab();
//}
+public enum EUnitDirection
+{
+ Right = 0, // 默认朝右
+ Left = 1, // 左
+}
+
/// <summary>
/// 角色控制器,包含所有角色组件的引用。可扩展
/// </summary>
@@ -210,9 +216,12 @@ public class UnitController : MonoBehaviour/*, Interactable*/
unitStatemachine = GetOrAddUnitComponent<UnitStatemachine>();
unitStatemachine.Initialize();
-
+
+ UnitSkill.Param unitSkillParam = new UnitSkill.Param();
+ unitSkillParam.combos = profile.combos;
+ unitSkillParam.skills = profile.skills;
unitSkill = GetOrAddUnitComponent<UnitSkill>();
- unitSkill.Initialize();
+ unitSkill.Initialize(unitSkillParam);
unitRootMotion = GetOrAddUnitComponent<UnitRootMotion>();
unitRootMotion.Initialize();
@@ -231,8 +240,11 @@ public class UnitController : MonoBehaviour/*, Interactable*/
unitPreprocessing = GetOrAddUnitComponent<UnitPreprocessing>();
unitPreprocessing.Initialize();
+
#endregion
+ unitObj.AddComponent<RootMotionProxy>();
+
unitDetail = gameObject.GetComponentInChildren<UnitDetail>();
unitPhysicsBoxes = gameObject.GetComponentInChildren<UnitPhysicsBoxCollection>();
@@ -290,7 +302,7 @@ public class UnitController : MonoBehaviour/*, Interactable*/
snapshot.trs = new TRS(unitObj.transform.position, unitObj.transform.rotation, unitObj.transform.lossyScale);
snapshot.unit = this;
snapshot.animStateHash = unitMotion.stateHash;
- snapshot.normalizedTime = unitMotion.playbackNormalizedTime;
+ snapshot.normalizedTime = unitMotion.playbackClampedNormalizedTime;
return snapshot;
}
diff --git a/Erika/Assets/Scripts/Unit/RootMotionProxy.cs b/Erika/Assets/Scripts/Unit/RootMotionProxy.cs
index 96bba7ca..871c4f28 100644
--- a/Erika/Assets/Scripts/Unit/RootMotionProxy.cs
+++ b/Erika/Assets/Scripts/Unit/RootMotionProxy.cs
@@ -5,6 +5,9 @@ using UnityEngine;
public class RootMotionProxy : MonoBehaviour
{
+ /// <summary>
+ /// 有OnAnimatorMove方法时会屏蔽animator的apply rootmotion
+ /// </summary>
private void OnAnimatorMove()
{
}
diff --git a/Erika/Assets/Scripts/Unit/UnitProfile.cs b/Erika/Assets/Scripts/Unit/UnitProfile.cs
index 37e07c7a..66e007ff 100644
--- a/Erika/Assets/Scripts/Unit/UnitProfile.cs
+++ b/Erika/Assets/Scripts/Unit/UnitProfile.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using UnityEngine;
/// <summary>
-/// 用这个表创建unit
+/// unit表
/// </summary>
[CreateAssetMenu(fileName = "New Unit Profile", menuName = "Erika/Unit Profile")]
public class UnitProfile : ScriptableObject
@@ -39,4 +39,5 @@ public class UnitProfile : ScriptableObject
[Tooltip("连招")]
public List<ComboData> combos;
-} \ No newline at end of file
+}
+
diff --git a/Erika/Assets/Scripts/Unit/UnitRootMotion.cs b/Erika/Assets/Scripts/Unit/UnitRootMotion.cs
index 661ecc5e..cc463c4b 100644
--- a/Erika/Assets/Scripts/Unit/UnitRootMotion.cs
+++ b/Erika/Assets/Scripts/Unit/UnitRootMotion.cs
@@ -16,9 +16,9 @@ public class UnitRootMotion : UnitComponent
float m_PrevFrame;
AnimationData m_PrevAnimationData;
- public override void Initialize()
+ public override void Initialize(object obj = null)
{
- base.Initialize();
+ base.Initialize(obj);
m_PrevFrame = 0;
m_PrevAnimationData = null;
@@ -81,7 +81,7 @@ public class UnitRootMotion : UnitComponent
{
m_Owner.unitMotion.animator.transform.localPosition = Vector3.zero;
- //UpdateRootMotion();
+ UpdateRootMotion();
}
public void OnAnimationChange()
@@ -89,13 +89,13 @@ public class UnitRootMotion : UnitComponent
m_PrevAnimationData = null;
}
- public void UpdateRootMotion()
+ public void UpdateRootMotion()
{
bool overrideRootMotion = m_Owner.unitMotion.animationData.overrideRootMotion;
if(overrideRootMotion)
{
var rmData = m_Owner.unitMotion.animationData.rootMotionOverrideData;
- float frame = m_Owner.unitMotion.playbackNormalizedTime * m_Owner.unitMotion.animationClip.length * TimelineEventProxy.FPS;
+ float frame = m_Owner.unitMotion.playbackClampedNormalizedTime * m_Owner.unitMotion.animationClip.length * TimelineEventProxy.FPS;
var animData = m_Owner.unitMotion.animationData;
if(animData != m_PrevAnimationData)
{
@@ -129,7 +129,7 @@ public class UnitRootMotion : UnitComponent
dest.y = Mathf.Max(0, dest.y); // 从地面以下拉回
//m_Owner.transform.position += RootMotionUtility.ExchangeXZ(dest); // 不需要exchangeXZ
m_Owner.unitCharacterController.Move(dest);
- }
+ }
}
#endif
diff --git a/Erika/Assets/Scripts/Utils/UnityExtends.cs b/Erika/Assets/Scripts/Utils/UnityExtends.cs
index faa26271..c87048a3 100644
--- a/Erika/Assets/Scripts/Utils/UnityExtends.cs
+++ b/Erika/Assets/Scripts/Utils/UnityExtends.cs
@@ -18,10 +18,10 @@ public static class UnityExtends
//虽然这里的声明有参数,但是调用函数时不需要参数
public static void ResetTransformation(this Transform trans)
{
- trans.position = Vector3.zero;
+ trans.localPosition = Vector3.zero;
trans.localRotation = Quaternion.identity;
trans.localScale = new Vector3(1, 1, 1);
- }
+ }
}