From 48dce0fcfc01c167905838673ead8ba8ca19f806 Mon Sep 17 00:00:00 2001 From: kimura Date: Fri, 4 Feb 2022 17:11:15 +0900 Subject: [PATCH] =?UTF-8?q?vip=E5=AE=A3=E4=BC=9Dview=E5=87=A6=E7=90=86?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Avatars/customer_Luxury_Gray.prefab | 44 +++++++-- .../Scripts/VipCustomerButtonView.cs | 89 ++++++++++++++++++- 2 files changed, 124 insertions(+), 9 deletions(-) diff --git a/popcorn/Assets/MyGame/Resources/Avatars/customer_Luxury_Gray.prefab b/popcorn/Assets/MyGame/Resources/Avatars/customer_Luxury_Gray.prefab index 4e1ab681..196f8945 100644 --- a/popcorn/Assets/MyGame/Resources/Avatars/customer_Luxury_Gray.prefab +++ b/popcorn/Assets/MyGame/Resources/Avatars/customer_Luxury_Gray.prefab @@ -813,6 +813,7 @@ GameObject: - component: {fileID: 5201512537784308050} - component: {fileID: 7687630557404592465} - component: {fileID: 6786587213025535951} + - component: {fileID: 1491786667167105538} m_Layer: 0 m_Name: movie_VIP m_TagString: Untagged @@ -900,6 +901,32 @@ Animation: m_PlayAutomatically: 1 m_AnimatePhysics: 0 m_CullingType: 0 +--- !u!61 &1491786667167105538 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6877570175858391367} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0.40160847, y: -0.08085698} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.8577533, y: 0.041125536} + oldSize: {x: 1.56, y: 1.76} + newSize: {x: 0.58, y: 0.64} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 3.4794078, y: 3.4169888} + m_EdgeRadius: 0 --- !u!1 &8035936346664169813 GameObject: m_ObjectHideFlags: 0 @@ -1159,6 +1186,11 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 2524396702494263387, guid: 8c6dcd9482c51504e89ba42234369eda, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 2524396703020600743, guid: 8c6dcd9482c51504e89ba42234369eda, type: 3} propertyPath: m_IsActive @@ -1243,18 +1275,18 @@ Transform: type: 3} m_PrefabInstance: {fileID: 6244917521789390651} m_PrefabAsset: {fileID: 0} ---- !u!4 &8476357289219494445 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 2524396703577414934, guid: 8c6dcd9482c51504e89ba42234369eda, - type: 3} - m_PrefabInstance: {fileID: 6244917521789390651} - m_PrefabAsset: {fileID: 0} --- !u!4 &8476357287308305102 stripped Transform: m_CorrespondingSourceObject: {fileID: 2524396702732955125, guid: 8c6dcd9482c51504e89ba42234369eda, type: 3} m_PrefabInstance: {fileID: 6244917521789390651} m_PrefabAsset: {fileID: 0} +--- !u!4 &8476357289219494445 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2524396703577414934, guid: 8c6dcd9482c51504e89ba42234369eda, + type: 3} + m_PrefabInstance: {fileID: 6244917521789390651} + m_PrefabAsset: {fileID: 0} --- !u!1001 &6601841578865518209 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/VipCustomerButtonView.cs b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/VipCustomerButtonView.cs index 4d41eefa..ccd7168f 100644 --- a/popcorn/Assets/MyGame/Scenes/marketing/Scripts/VipCustomerButtonView.cs +++ b/popcorn/Assets/MyGame/Scenes/marketing/Scripts/VipCustomerButtonView.cs @@ -1,5 +1,6 @@ using System; using UniRx; +using UniRx.Triggers; using UnityEngine; using UnityEngine.UI; @@ -9,11 +10,93 @@ namespace MyGame.Scenes.marketing.Scripts { [SerializeField] private Button vipButton; [SerializeField] private Animator buttonAnimator; - public IObservable VipButton => vipButton.OnClickAsObservable().TakeUntilDestroy(this); + [SerializeField] private Animator vipCustomerAnimator; + [SerializeField] private CustomerDirection customerDirection; + [SerializeField] private GameObject vipSpeechBubbleObject; + [SerializeField] private Transform vipStayPosTransform; + [SerializeField] private float vipMoveSpeed; + public IObservable VipButton { get; private set; } + private IDisposable timerDisposable; + private Vector3 initialPos; - public void ShowButton() + private void Awake() { - buttonAnimator.Play("Button_vip"); + vipButton.transform.SetLocalScale(0f); + vipCustomerAnimator.transform.SetLocalScale(0f); + initialPos = vipCustomerAnimator.transform.localPosition; + var eventTrigger = vipSpeechBubbleObject.AddComponent(); + VipButton = vipButton.OnClickAsObservable() + .Merge(eventTrigger.OnPointerClickAsObservable().AsUnitObservable()) + .TakeUntilDestroy(this); + } + + public void ShowButton(bool animated) + { + buttonAnimator.Play("Button_vip", 0, animated ? 0 : 1); + vipButton.transform.SetLocalScale(1f); + vipCustomerAnimator.transform.SetLocalScale(1f); + vipSpeechBubbleObject.SetActive(false); + customerDirection.SetDefaultSide(); + if (animated) + { + // 左から歩いてきて立ち止まってmovie_Vip再生 + vipCustomerAnimator.speed = 1f; + vipCustomerAnimator.Play("customer_nomal_walk_side"); + var vipTransform = vipCustomerAnimator.transform; + this.UpdateAsObservable() + .TakeWhile(_ => Vector2.Distance(vipTransform.localPosition, vipStayPosTransform.localPosition) > .01f) + .Subscribe(_ => + { + vipTransform.localPosition = Vector2.MoveTowards(vipTransform.localPosition, vipStayPosTransform.localPosition, vipMoveSpeed * Time.deltaTime); + }, () => + { + vipCustomerAnimator.speed = 0f; + vipCustomerAnimator.Play("customer_nomal"); + vipSpeechBubbleObject.SetActive(true); + }).AddTo(this); + } + else + { + vipCustomerAnimator.speed = 0f; + vipCustomerAnimator.Play("customer_nomal"); + vipSpeechBubbleObject.SetActive(true); + } + } + + private void CloseButton() + { + if (vipSpeechBubbleObject.TryGetComponent(out var target)) + { + target.enabled = false; + } + // vip左にはける + customerDirection.SetFlipSide(); + vipCustomerAnimator.speed = 1f; + vipCustomerAnimator.Play("customer_nomal_walk_side"); + vipButton.transform.SetLocalScale(0f); + var vipTransform = vipCustomerAnimator.transform; + this.UpdateAsObservable() + .TakeWhile(_ => Vector2.Distance(vipTransform.localPosition, initialPos) > .01f) + .Subscribe(_ => + { + vipTransform.localPosition = Vector2.MoveTowards(vipTransform.localPosition, initialPos, vipMoveSpeed * Time.deltaTime); + }, () => + { + vipCustomerAnimator.transform.SetLocalScale(0f); + }).AddTo(this); + } + + public void ResetTimer(int time) + { + // タイマーの更新処理 + timerDisposable?.Dispose(); + timerDisposable = Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1f)) + .Select(x => (int)(time - x)) + .TakeWhile(x => x > 0) + .Subscribe(x => { }, () => + { + CloseButton(); + }).AddTo(this); } } } \ No newline at end of file