fix animation end action, fast forward work as expected

This commit is contained in:
Vladimir Koshevarov
2023-03-14 13:16:15 +02:00
parent 9208aa251f
commit f6a8ca9d9d
6 changed files with 25 additions and 19 deletions
@@ -33901,7 +33901,7 @@ AnimationClip:
m_LoopBlend: 0 m_LoopBlend: 0
m_LoopBlendOrientation: 0 m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 1 m_LoopBlendPositionY: 1
m_LoopBlendPositionXZ: 0 m_LoopBlendPositionXZ: 1
m_KeepOriginalOrientation: 0 m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 0 m_KeepOriginalPositionY: 0
m_KeepOriginalPositionXZ: 0 m_KeepOriginalPositionXZ: 0
Binary file not shown.
+1 -1
View File
@@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1 m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0} m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0} m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.17276844, g: 0.21589246, b: 0.2978263, a: 1} m_IndirectSpecularColor: {r: 0.172768, g: 0.21589169, b: 0.29782546, a: 1}
m_UseRadianceAmbientProbe: 0 m_UseRadianceAmbientProbe: 0
--- !u!157 &3 --- !u!157 &3
LightmapSettings: LightmapSettings:
+3 -3
View File
@@ -3387,7 +3387,7 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 963194225} m_GameObject: {fileID: 963194225}
m_LocalRotation: {x: 0.53717524, y: 0.00000001592945, z: -0.000000010144878, w: 0.8434707} m_LocalRotation: {x: 0.53717524, y: 0.000000015757937, z: -0.000000010035648, w: 0.8434707}
m_LocalPosition: {x: 29.11, y: 15, z: -57.39} m_LocalPosition: {x: 29.11, y: 15, z: -57.39}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
@@ -3540,7 +3540,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: 250, y: 0}
m_SizeDelta: {x: 480, y: 0} m_SizeDelta: {x: 480, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &989266191 --- !u!114 &989266191
@@ -12170,7 +12170,7 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2110938951} m_GameObject: {fileID: 2110938951}
m_LocalRotation: {x: 0.53717524, y: 0.00000001592945, z: -0.000000010144878, w: 0.8434707} m_LocalRotation: {x: 0.53717524, y: 0.000000015757937, z: -0.000000010035648, w: 0.8434707}
m_LocalPosition: {x: 29.11, y: 15, z: -57.39} m_LocalPosition: {x: 29.11, y: 15, z: -57.39}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
+3 -9
View File
@@ -1,5 +1,4 @@
using System; using System;
using System.Collections;
public class Bed : BaseInteractableObject public class Bed : BaseInteractableObject
{ {
@@ -7,18 +6,13 @@ public class Bed : BaseInteractableObject
public override void Interact(Player player) public override void Interact(Player player)
{ {
_player=player; _player = player;
StartCoroutine(Sleep()); _player.SetPlayerAnimation(AnimationStates.Sitting, OnAnimationFinished);
} }
private IEnumerator Sleep() private void OnAnimationFinished()
{ {
_player.SetPlayerAnimation(AnimationStates.Sitting);
yield return StartCoroutine(_player.IsAnimationStatePlaying(0));
print("sitting animation finished");
TimeManager.Instance.FastForward(TimeSpan.FromHours(8), OnFastForwardEnd); TimeManager.Instance.FastForward(TimeSpan.FromHours(8), OnFastForwardEnd);
yield break;
} }
private void OnFastForwardEnd() private void OnFastForwardEnd()
+17 -5
View File
@@ -1,6 +1,5 @@
using Assets.Scripts.Actions.Interfaces; using Assets.Scripts.Actions.Interfaces;
using System; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
@@ -33,6 +32,7 @@ public class Player : MonoBehaviour
private const string WALK_VELOCITY = "WalkVelocity"; private const string WALK_VELOCITY = "WalkVelocity";
private ContainerItem _containerItem; private ContainerItem _containerItem;
private Action _OnAnimationFinish;
private void Awake() private void Awake()
{ {
@@ -64,9 +64,16 @@ public class Player : MonoBehaviour
{ {
if (IsBlockingAnimation(_currentAnimation)) if (IsBlockingAnimation(_currentAnimation))
{ {
StartCoroutine(IsAnimationStatePlaying(0)); if (IsAnimationStatePlaying(0))
{
return; return;
} }
else
{
_OnAnimationFinish?.Invoke();
_OnAnimationFinish = null;
}
}
if (_currentTask == null || _currentTask.Status == TaskStatus.Complete) if (_currentTask == null || _currentTask.Status == TaskStatus.Complete)
{ {
@@ -164,6 +171,11 @@ public class Player : MonoBehaviour
return TaskStatus.Complete; return TaskStatus.Complete;
} }
public void SetPlayerAnimation(AnimationStates newState, Action onAnimationFinish)
{
_OnAnimationFinish = onAnimationFinish;
SetPlayerAnimation(newState);
}
public void SetPlayerAnimation(AnimationStates newState) public void SetPlayerAnimation(AnimationStates newState)
{ {
if (newState == _currentAnimation) if (newState == _currentAnimation)
@@ -175,12 +187,12 @@ public class Player : MonoBehaviour
} }
public IEnumerator IsAnimationStatePlaying(int animLayer) public bool IsAnimationStatePlaying(int animLayer)
{ {
string stateName = GetEnumMemberValue(_currentAnimation); string stateName = GetEnumMemberValue(_currentAnimation);
var stateInfo = _animator.GetCurrentAnimatorStateInfo(animLayer); var stateInfo = _animator.GetCurrentAnimatorStateInfo(animLayer);
yield return new WaitWhile(() => stateInfo.IsName(stateName) && stateInfo.normalizedTime < 1.0f); return stateInfo.IsName(stateName) && stateInfo.normalizedTime < 1.0f;
yield break;
} }
public void AddTask(PlayerTasks task) public void AddTask(PlayerTasks task)