vip宣伝view処理追加

This commit is contained in:
kimura 2022-02-04 17:11:15 +09:00
parent b1de1c2514
commit 48dce0fcfc
2 changed files with 124 additions and 9 deletions

View File

@ -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

View File

@ -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<Unit> 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<Unit> 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<ObservableEventTrigger>();
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<Collider2D>(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);
}
}
}