From 9b9cf1a1bbe45c403df5cdf67904faa4a13f6ad1 Mon Sep 17 00:00:00 2001 From: Glence Date: Fri, 10 Mar 2023 16:26:52 +0800 Subject: [PATCH] WIP for animatons --- Assets/Scenes/Level1.shade | 26 +++++-- .../Player/PlayerStates/UT_PlayerIdleState.cs | 22 ++++-- .../Player/PlayerStates/UT_PlayerRunState.cs | 13 ++-- .../Player/PlayerStates/UT_PlayerWalkState.cs | 27 +++++-- .../Gameplay/Player/SC_PlayerAnimations.cs | 75 +++++++++++++++++++ .../Player/SC_PlayerAnimations.cs.shmeta | 3 + .../Gameplay/Player/SC_PlayerController.cs | 33 +++----- Assets/Scripts/UI/SC_PauseMenu.cs | 2 + Assets/Scripts/Utility/UT_BaseSate.cs | 12 +-- SHADE_Engine/src/Editor/SHEditor.cpp | 7 +- 10 files changed, 158 insertions(+), 62 deletions(-) create mode 100644 Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs create mode 100644 Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs.shmeta diff --git a/Assets/Scenes/Level1.shade b/Assets/Scenes/Level1.shade index 8219b365..ca74f938 100644 --- a/Assets/Scenes/Level1.shade +++ b/Assets/Scenes/Level1.shade @@ -2419,7 +2419,7 @@ Components: Transform Component: Translate: {x: 0, y: 0, z: 0} - Rotate: {x: -1.48352981, y: 0, z: 0} + Rotate: {x: -7.50001717, y: 1.39999998, z: -3.50001717} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -7643,10 +7643,6 @@ heavyMultiper: 0.5 silhouettePlayer: 462 silhouetteBag: 465 - idleClip: 227450439 - walkClip: 229125027 - runClip: 228149757 - pickUpClip: 0 - Type: PickAndThrow Enabled: true throwForce: [8, 10, 8] @@ -7660,6 +7656,20 @@ Enabled: true currentStateName: Idle State currentAnimName: "" + - Type: PlayerAnimations + Enabled: true + playerIdleClip: 227450439 + playerWalkClip: 229125027 + playerRunClip: 228149757 + playerPickUpClip: 219605278 + playerCarryIdleClip: 231128260 + playerCarryWalkClip: 227671720 + playerThrowClip: 223399345 + playerJumpStartClip: 223009573 + playerJumpLoopClip: 230974023 + playerJumpEndClip: 228134756 + silhouettePlayer: 51000 + silhouetteBag: 51000 - EID: 65733 Name: HoldingPoint IsActive: true @@ -7722,7 +7732,11 @@ IsActive: true Renderable Component: Mesh: 144838771 - Material: 123745521 + Material: 117923942 + IsActive: true + Animator Component: + Rig: 77816045 + AnimationController: 0 IsActive: true Scripts: ~ - EID: 462 diff --git a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerIdleState.cs b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerIdleState.cs index 8c5044c0..589db690 100644 --- a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerIdleState.cs +++ b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerIdleState.cs @@ -3,18 +3,28 @@ using System; public class PlayerIdleState : BaseState { - private AnimationClipAsset idleClip; - private Animator animator; - public PlayerIdleState(StateMachine stateMachine, Animator ani , AnimationClipAsset clip) : base(stateMachine) + private bool holdItem; + public PlayerIdleState(StateMachine stateMachine, bool hi) : base(stateMachine) { stateName = "Idle State"; - idleClip = clip; - animator = ani; + holdItem = hi; } public override void OnEnter() { //Debug.Log("WALK ENTER"); - animator.Play(idleClip); + if (PlayerAnimations.Instance) + { + if (!holdItem) + { + PlayerAnimations.Instance.playerAnimator.Play(PlayerAnimations.Instance.playerIdleClip); + PlayerAnimations.Instance.BagAnimator.Play(PlayerAnimations.Instance.playerIdleClip); + } + else + { + PlayerAnimations.Instance.playerAnimator.Play(PlayerAnimations.Instance.playerCarryIdleClip); + PlayerAnimations.Instance.BagAnimator.Play(PlayerAnimations.Instance.playerCarryIdleClip); + } + } } public override void update() { diff --git a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerRunState.cs b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerRunState.cs index 0ff4be17..0c786c2d 100644 --- a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerRunState.cs +++ b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerRunState.cs @@ -6,19 +6,18 @@ public class PlayerRunState : BaseState private float timer; private float delay = 0.25f; - private AnimationClipAsset runClip; - private Animator animator; - - public PlayerRunState(StateMachine stateMachine, Animator ani, AnimationClipAsset clip) : base(stateMachine) + public PlayerRunState(StateMachine stateMachine) : base(stateMachine) { stateName = "Run State"; - animator = ani; - runClip = clip; } public override void OnEnter() { //Debug.Log("WALK ENTER"); - animator.Play(runClip); + if (PlayerAnimations.Instance) + { + PlayerAnimations.Instance.playerAnimator.Play(PlayerAnimations.Instance.playerRunClip); + PlayerAnimations.Instance.BagAnimator.Play(PlayerAnimations.Instance.playerRunClip); + } } public override void update() { diff --git a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerWalkState.cs b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerWalkState.cs index 5609825d..98a0dd69 100644 --- a/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerWalkState.cs +++ b/Assets/Scripts/Gameplay/Player/PlayerStates/UT_PlayerWalkState.cs @@ -5,20 +5,33 @@ public class PlayerWalkState : BaseState { private float timer; private float delay = 0.5f; - - private AnimationClipAsset walkClip; - private Animator animator; - public PlayerWalkState(StateMachine stateMachine, Animator ani, AnimationClipAsset clip) : base(stateMachine) + private bool holdItem; + public PlayerWalkState(StateMachine stateMachine, bool hi) : base(stateMachine) { stateName = "Walk State"; - animator = ani; - walkClip = clip; + holdItem = hi; } public override void OnEnter() { //Debug.Log("WALK ENTER"); timer = delay; - animator.Play(walkClip); + if (PlayerAnimations.Instance) + { + if (!holdItem) + { + if(PlayerAnimations.Instance.playerWalkClip) + PlayerAnimations.Instance.playerAnimator.Play(PlayerAnimations.Instance.playerWalkClip); + if(PlayerAnimations.Instance.playerWalkClip) + PlayerAnimations.Instance.BagAnimator.Play(PlayerAnimations.Instance.playerWalkClip); + } + else + { + if(PlayerAnimations.Instance.playerCarryWalkClip) + PlayerAnimations.Instance.playerAnimator.Play(PlayerAnimations.Instance.playerCarryWalkClip); + if(PlayerAnimations.Instance.playerCarryWalkClip) + PlayerAnimations.Instance.BagAnimator.Play(PlayerAnimations.Instance.playerCarryWalkClip); + } + } } public override void update() { diff --git a/Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs b/Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs new file mode 100644 index 00000000..46ba8120 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs @@ -0,0 +1,75 @@ +using SHADE; +using System; +using System.Collections.Generic; + + +public class PlayerAnimations : Script +{ + #region Raccoon + [SerializeField] + public AnimationClipAsset playerIdleClip; // done + [SerializeField] + public AnimationClipAsset playerWalkClip; // done + [SerializeField] + public AnimationClipAsset playerRunClip; // done + [SerializeField] + public AnimationClipAsset playerPickUpClip; + [SerializeField] + public AnimationClipAsset playerCarryIdleClip; // done + [SerializeField] + public AnimationClipAsset playerCarryWalkClip; // done + [SerializeField] + public AnimationClipAsset playerThrowClip; + [SerializeField] + public AnimationClipAsset playerJumpStartClip; + [SerializeField] + public AnimationClipAsset playerJumpLoopClip; + [SerializeField] + public AnimationClipAsset playerJumpEndClip; + #endregion + + #region Animator + public Animator playerAnimator { get; private set; } + public Animator BagAnimator { get; private set; } + public Animator silhoPlayerAnimator { get; private set; } + public Animator silhoBagAnimator { get; private set; } + #endregion + + #region silhouette + public GameObject silhouettePlayer; + public GameObject silhouetteBag; + #endregion + + public static PlayerAnimations Instance { get; private set; } + + protected override void awake() + { + if (Instance != null && Instance != this) + RemoveScript(); + else + Instance = this; + + playerAnimator = GetComponent(); + if (!playerAnimator) + Debug.LogError("Player Animator is MISSING!"); + + BagAnimator = GetComponentInChildren(); + if (!BagAnimator) + Debug.LogError("Bag Animator is MISSING!"); + + silhoPlayerAnimator = silhouettePlayer.GetComponent(); + if (!silhoPlayerAnimator) + Debug.LogError("Silho Player Animator is MISSING!"); + + silhoBagAnimator = silhouetteBag.GetComponent(); + if (!silhoBagAnimator) + Debug.LogError("Silho Player Animator is MISSING!"); + } + + protected override void onDestroy() + { + if (Instance == this) + Instance = null; + } +} + diff --git a/Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs.shmeta b/Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs.shmeta new file mode 100644 index 00000000..b8cd1620 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/SC_PlayerAnimations.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_PlayerAnimations +ID: 159045981 +Type: 9 diff --git a/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs b/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs index dd59975f..ecde7698 100644 --- a/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs +++ b/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs @@ -32,7 +32,7 @@ public class PlayerController : Script private float delayTimer = 0.0f; [Tooltip("The current state fo the raccoon")] - public RaccoonStates currentState = RaccoonStates.IDLE; + public RaccoonStates currentState; //Movement variables============================================================ [Tooltip("Max vel for walking")] @@ -82,21 +82,6 @@ public class PlayerController : Script public GameObject silhouetteBag; private Renderable silhouetteBagRend; - #region Serialized Fields - [SerializeField] - private AnimationClipAsset idleClip; - [SerializeField] - private AnimationClipAsset walkClip; - [SerializeField] - private AnimationClipAsset runClip; - [SerializeField] - private AnimationClipAsset pickUpClip; - #endregion - - #region Components - public Animator animator { get; private set; } - #endregion - protected override void awake() { //default setup @@ -120,15 +105,11 @@ public class PlayerController : Script if(!tranform) Debug.LogError("tranform is MISSING!"); - animator = GetComponent(); - if (!animator) - Debug.LogError("Animator is MISSING!"); - stateMachine = AddScript(); Dictionary dictionary = new Dictionary(); - dictionary.Add(typeof(PlayerIdleState), new PlayerIdleState(stateMachine, animator , idleClip)); - dictionary.Add(typeof(PlayerWalkState), new PlayerWalkState(stateMachine, animator , walkClip)); - dictionary.Add(typeof(PlayerRunState), new PlayerRunState(stateMachine, animator, runClip)); + dictionary.Add(typeof(PlayerIdleState), new PlayerIdleState(stateMachine, holdItem)); + dictionary.Add(typeof(PlayerWalkState), new PlayerWalkState(stateMachine, holdItem)); + dictionary.Add(typeof(PlayerRunState), new PlayerRunState(stateMachine)); dictionary.Add(typeof(PlayerJumpState), new PlayerJumpState(stateMachine)); dictionary.Add(typeof(PlayerFallState), new PlayerFallState(stateMachine)); dictionary.Add(typeof(PlayerLandState), new PlayerLandState(stateMachine)); @@ -152,6 +133,12 @@ public class PlayerController : Script } } + protected override void start() + { + currentState = RaccoonStates.IDLE; + stateMachine.SetState(typeof(PlayerIdleState)); + } + protected override void lateUpdate() { } diff --git a/Assets/Scripts/UI/SC_PauseMenu.cs b/Assets/Scripts/UI/SC_PauseMenu.cs index 32b59a85..7dd528b0 100644 --- a/Assets/Scripts/UI/SC_PauseMenu.cs +++ b/Assets/Scripts/UI/SC_PauseMenu.cs @@ -50,6 +50,7 @@ public class PauseMenu : Script if (canvas) canvas.SetActive(false); Application.FixDeltaTime = Time.DefaultFixDeltaTime; + AnimationSystem.TimeScale = AnimationSystem.DefaultTimeScale; } }); } @@ -106,6 +107,7 @@ public class PauseMenu : Script if (canvas) canvas.SetActive(true); Application.FixDeltaTime = 0; + AnimationSystem.TimeScale = 0; } } diff --git a/Assets/Scripts/Utility/UT_BaseSate.cs b/Assets/Scripts/Utility/UT_BaseSate.cs index 521f5936..483a289b 100644 --- a/Assets/Scripts/Utility/UT_BaseSate.cs +++ b/Assets/Scripts/Utility/UT_BaseSate.cs @@ -15,17 +15,14 @@ public abstract class BaseState } public virtual void OnEnter() - { - } + {} public abstract void update(); public abstract void fixedUpdate(); public virtual void OnExit() - { - - } + {} public string GetStateName() { @@ -37,11 +34,6 @@ public abstract class BaseState return animationName; } - public virtual float GetAnimPercent() - { - return 1.0f; - } - public virtual void onCollisionEnter(CollisionInfo info) { } diff --git a/SHADE_Engine/src/Editor/SHEditor.cpp b/SHADE_Engine/src/Editor/SHEditor.cpp index 268af73e..c8ba7b68 100644 --- a/SHADE_Engine/src/Editor/SHEditor.cpp +++ b/SHADE_Engine/src/Editor/SHEditor.cpp @@ -113,14 +113,15 @@ namespace SHADE SHEditorWindowManager::CreateEditorWindow(); SHEditorWindowManager::CreateEditorWindow(); SHEditorWindowManager::CreateEditorWindow(); - SHEditorWindowManager::CreateEditorWindow(); SHEditorWindowManager::CreateEditorWindow(); - SHEditorWindowManager::CreateEditorWindow(); - SHEditorWindowManager::CreateEditorWindow(); SHEditorWindowManager::CreateEditorWindow(); SHEditorWindowManager::CreateEditorWindow(); + SHEditorWindowManager::CreateEditorWindow(); + SHEditorWindowManager::CreateEditorWindow(); + SHEditorWindowManager::CreateEditorWindow(); + //Add popup windows SHEditorWindowManager::CreatePopupWindow();