調理シーンの兄弟アニメ対応
This commit is contained in:
parent
c5a99131aa
commit
4d4c4da244
|
|
@ -91,13 +91,19 @@ AnimatorController:
|
|||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
m_Controller: {fileID: 0}
|
||||
- m_Name: Normal
|
||||
m_Type: 9
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
m_Controller: {fileID: 0}
|
||||
- m_Name: Flame
|
||||
m_Type: 9
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 0}
|
||||
m_AnimatorLayers:
|
||||
- serializedVersion: 5
|
||||
m_Name: Base Layer
|
||||
|
|
@ -176,7 +182,7 @@ AnimatorStateMachine:
|
|||
m_Position: {x: 250, y: -10, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -6981161888748237111}
|
||||
m_Position: {x: 240, y: 110, z: 0}
|
||||
m_Position: {x: 310, y: 80, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 3909174915482303229}
|
||||
m_Position: {x: 275, y: 175, z: 0}
|
||||
|
|
@ -184,6 +190,7 @@ AnimatorStateMachine:
|
|||
m_AnyStateTransitions:
|
||||
- {fileID: 871869168590934795}
|
||||
- {fileID: -6968845174723350288}
|
||||
- {fileID: 6228895696704337158}
|
||||
m_EntryTransitions: []
|
||||
m_StateMachineTransitions: {}
|
||||
m_StateMachineBehaviours: []
|
||||
|
|
@ -192,3 +199,28 @@ AnimatorStateMachine:
|
|||
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||
m_DefaultState: {fileID: -5348363866995552689}
|
||||
--- !u!1101 &6228895696704337158
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Flame
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 3909174915482303229}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.75
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ AnimatorStateMachine:
|
|||
- {fileID: -5209310951543379251}
|
||||
- {fileID: 1703827808131827942}
|
||||
- {fileID: -6918687918940225781}
|
||||
- {fileID: 418725440919557013}
|
||||
m_EntryTransitions: []
|
||||
m_StateMachineTransitions: {}
|
||||
m_StateMachineBehaviours: []
|
||||
|
|
@ -176,19 +177,25 @@ AnimatorController:
|
|||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
m_Controller: {fileID: 0}
|
||||
- m_Name: Walk
|
||||
m_Type: 9
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
m_Controller: {fileID: 0}
|
||||
- m_Name: Sleep
|
||||
m_Type: 9
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
m_Controller: {fileID: 0}
|
||||
- m_Name: Vitality
|
||||
m_Type: 9
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 0}
|
||||
m_AnimatorLayers:
|
||||
- serializedVersion: 5
|
||||
m_Name: Base Layer
|
||||
|
|
@ -202,6 +209,31 @@ AnimatorController:
|
|||
m_IKPass: 0
|
||||
m_SyncedLayerAffectsTiming: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
--- !u!1101 &418725440919557013
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Vitality
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: -2896776327676832643}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.75
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1102 &1480020873699022687
|
||||
AnimatorState:
|
||||
serializedVersion: 5
|
||||
|
|
|
|||
|
|
@ -5151,6 +5151,7 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 9b3b578c8a46648248e58adb3ee9caba, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
livelyRate: 7
|
||||
refreshRewardCoin: 100
|
||||
cookingButton: {fileID: 414580708}
|
||||
adButton: {fileID: 445566315}
|
||||
|
|
@ -5185,7 +5186,8 @@ MonoBehaviour:
|
|||
blueBrotherAnimator: {fileID: 1124341218}
|
||||
pinkBrotherAnimator: {fileID: 519190656}
|
||||
pinkTransform: {fileID: 519190655}
|
||||
pinkWalkspeed: 0.8
|
||||
pinkWalkSpeed: 0.8
|
||||
pinkLivelySpeed: 1
|
||||
--- !u!1 &1906074463
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ using UnityEngine.UI;
|
|||
public class KitchenManager : MonoBehaviour
|
||||
{
|
||||
private static readonly double refreshWaitTime = 300;
|
||||
[Range(0, 9)]
|
||||
[SerializeField] private int livelyRate = 7;
|
||||
[SerializeField] int refreshRewardCoin = 100;
|
||||
[SerializeField] private Button cookingButton;
|
||||
[SerializeField] private Button adButton;
|
||||
|
|
@ -19,6 +21,7 @@ public class KitchenManager : MonoBehaviour
|
|||
[SerializeField] private BulkOrderIndicatorView orderIndicatorView;
|
||||
|
||||
private readonly Subject<Unit> showAdDialogSubject = new Subject<Unit>();
|
||||
IDisposable timerDisposable = null;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
|
|
@ -108,41 +111,65 @@ public class KitchenManager : MonoBehaviour
|
|||
{
|
||||
CoinGetDialog.ShowDialog(refreshRewardCoin, () =>
|
||||
{
|
||||
adButton.gameObject.SetActive(false);
|
||||
kitchenView.SetNormalAnimation();
|
||||
|
||||
CoinManager.Instance.AddCoin(refreshRewardCoin);
|
||||
gameData.Coin = CoinManager.Instance.OwnCoin;
|
||||
gameData.kitchenRefreshTime = DateTime.UtcNow.AddSeconds(refreshWaitTime).ToBinary();
|
||||
GameDataManager.SaveGameData();
|
||||
|
||||
// SetTimer((int)refreshWaitTime);
|
||||
adButton.gameObject.SetActive(false);
|
||||
if (gameData.kitchenRefreshTime % 10 < livelyRate)
|
||||
{
|
||||
kitchenView.SetLivelyAnimation();
|
||||
}
|
||||
else
|
||||
{
|
||||
kitchenView.SetNormalAnimation();
|
||||
}
|
||||
});
|
||||
});
|
||||
}).AddTo(this);
|
||||
|
||||
// 休憩リワード
|
||||
var remaining = (int) DateTime.FromBinary(gameData.kitchenRefreshTime).Subtract(DateTime.UtcNow).TotalSeconds;
|
||||
// timerDisposable = SetTimer(remaining);
|
||||
|
||||
// 商品在庫計算
|
||||
var shopStock = gameData.ShopStock.Count;
|
||||
var tankStock = gameData.StorageTanks.Sum(x => x.Stock);
|
||||
var totalStock = shopStock + tankStock;
|
||||
|
||||
if (gameData.Coin + gameData.Material.Sum(data => data.Amount) + totalStock == 0)
|
||||
if (remaining <= 0 && gameData.FinishedFlags.HasFlag(TutorialFlag.FirstPlay))
|
||||
{
|
||||
// コイン獲得有効
|
||||
adButton.gameObject.SetActive(true);
|
||||
kitchenView.SetNormalAnimation();
|
||||
}
|
||||
else if (gameData.Coin + gameData.Material.Sum(data => data.Amount) + totalStock == 0)
|
||||
{
|
||||
// 所持金0救済
|
||||
adButton.gameObject.SetActive(true);
|
||||
kitchenView.SetTiredAnimation();
|
||||
kitchenView.SetNormalAnimation();
|
||||
showAdDialogSubject.OnNext(Unit.Default);
|
||||
}
|
||||
else if (remaining > 0 || !gameData.FinishedFlags.HasFlag(TutorialFlag.FirstPlay))
|
||||
else if (remaining > 0)
|
||||
{
|
||||
// 獲得後
|
||||
adButton.gameObject.SetActive(false);
|
||||
kitchenView.SetNormalAnimation();
|
||||
if (gameData.kitchenRefreshTime % 10 < livelyRate)
|
||||
{
|
||||
kitchenView.SetLivelyAnimation();
|
||||
}
|
||||
else
|
||||
{
|
||||
kitchenView.SetNormalAnimation();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
adButton.gameObject.SetActive(true);
|
||||
kitchenView.SetTiredAnimation();
|
||||
// 獲得無効
|
||||
adButton.gameObject.SetActive(false);
|
||||
kitchenView.SetNormalAnimation();
|
||||
}
|
||||
#if UNITY_EDITOR
|
||||
Debug.Log($"remaining: {remaining}");
|
||||
|
|
@ -293,6 +320,20 @@ public class KitchenManager : MonoBehaviour
|
|||
return (condition <= gameData.OrderConditionCount, nextOrderId, nextOrderLevel);
|
||||
}
|
||||
|
||||
private IDisposable SetTimer(int time)
|
||||
{
|
||||
timerDisposable?.Dispose();
|
||||
return Observable.Timer(TimeSpan.Zero,TimeSpan.FromSeconds(1f))
|
||||
.Select(x => (int)(time - x))
|
||||
.TakeWhile(x => x > 0)
|
||||
.Subscribe(x => { }
|
||||
, () =>
|
||||
{
|
||||
kitchenView.SetNormalAnimation();
|
||||
adButton.gameObject.SetActive(true);
|
||||
}).AddTo(this);
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (SoundManager.ExistsInstance)
|
||||
|
|
|
|||
|
|
@ -8,14 +8,17 @@ public class KitchenView : MonoBehaviour
|
|||
// blue
|
||||
private static readonly int Normal = Animator.StringToHash("Normal");
|
||||
private static readonly int Tired = Animator.StringToHash("Tired");
|
||||
private static readonly int Flame = Animator.StringToHash("Flame");
|
||||
// pink
|
||||
private static readonly int Walk = Animator.StringToHash("Walk");
|
||||
private static readonly int Stay = Animator.StringToHash("Stay");
|
||||
private static readonly int Sleep = Animator.StringToHash("Sleep");
|
||||
private static readonly int Vitality = Animator.StringToHash("Vitality");
|
||||
[SerializeField] private Animator blueBrotherAnimator;
|
||||
[SerializeField] private Animator pinkBrotherAnimator;
|
||||
[SerializeField] private Transform pinkTransform;
|
||||
[SerializeField] private float pinkWalkspeed = .8f;
|
||||
[SerializeField] private float pinkWalkSpeed = .8f;
|
||||
[SerializeField] private float pinkLivelySpeed = .8f;
|
||||
private readonly (int trigger, Vector2 wayPoint, float wait)[] pinkMoves =
|
||||
{
|
||||
(Walk, new Vector2(3.28f,0.726f), 0f),
|
||||
|
|
@ -27,22 +30,27 @@ public class KitchenView : MonoBehaviour
|
|||
(Walk, new Vector2(0f,0.726f), 0f),
|
||||
(Stay, new Vector2(0f,0.726f), 3f),
|
||||
};
|
||||
|
||||
private readonly (int trigger, Vector2 wayPoint, float wait)[] livelyPinkMoves =
|
||||
{
|
||||
(Vitality, new Vector2(3.28f,0.726f), 0f),
|
||||
(Vitality, new Vector2(-3.28f,0.726f), 0f),
|
||||
};
|
||||
|
||||
private int moveIndex;
|
||||
private Vector2 wayPoint;
|
||||
private float durationDelta;
|
||||
private float completedDuration;
|
||||
private bool isTired;
|
||||
private bool isLively;
|
||||
private (int trigger, Vector2 wayPoint, float wait)[] selectedMoves;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
this.UpdateAsObservable().Subscribe(_ =>
|
||||
{
|
||||
if (isTired)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var pinkSpeed = isLively ? pinkLivelySpeed : pinkWalkSpeed;
|
||||
var localPosition = pinkTransform.localPosition;
|
||||
localPosition = Vector2.MoveTowards(localPosition, wayPoint, pinkWalkspeed * Time.deltaTime);
|
||||
localPosition = Vector2.MoveTowards(localPosition, wayPoint, pinkSpeed * Time.deltaTime);
|
||||
pinkTransform.localPosition = localPosition;
|
||||
if (Vector2.Distance(localPosition, wayPoint) < .01f)
|
||||
{
|
||||
|
|
@ -53,7 +61,7 @@ public class KitchenView : MonoBehaviour
|
|||
}
|
||||
durationDelta = 0;
|
||||
moveIndex++;
|
||||
if (moveIndex == pinkMoves.Length)
|
||||
if (moveIndex >= selectedMoves.Length)
|
||||
{
|
||||
moveIndex = 0;
|
||||
}
|
||||
|
|
@ -67,9 +75,15 @@ public class KitchenView : MonoBehaviour
|
|||
moveIndex = 0;
|
||||
}
|
||||
|
||||
private void ChangeAnimation()
|
||||
{
|
||||
moveIndex = 0;
|
||||
selectedMoves = isLively ? livelyPinkMoves : pinkMoves;
|
||||
}
|
||||
|
||||
private void SetPinkMove()
|
||||
{
|
||||
var move = pinkMoves[moveIndex];
|
||||
var move = selectedMoves[moveIndex];
|
||||
wayPoint = move.wayPoint;
|
||||
completedDuration = move.wait;
|
||||
pinkBrotherAnimator.SetTrigger(move.trigger);
|
||||
|
|
@ -88,15 +102,17 @@ public class KitchenView : MonoBehaviour
|
|||
|
||||
public void SetNormalAnimation()
|
||||
{
|
||||
isTired = false;
|
||||
isLively = false;
|
||||
ChangeAnimation();
|
||||
SetPinkMove();
|
||||
blueBrotherAnimator.SetTrigger(Normal);
|
||||
}
|
||||
|
||||
public void SetTiredAnimation()
|
||||
public void SetLivelyAnimation()
|
||||
{
|
||||
isTired = true;
|
||||
blueBrotherAnimator.SetTrigger(Tired);
|
||||
pinkBrotherAnimator.SetTrigger(Sleep);
|
||||
isLively = true;
|
||||
ChangeAnimation();
|
||||
SetPinkMove();
|
||||
blueBrotherAnimator.SetTrigger(Flame);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue