Merge branch 'develop' of bitbucket.org:usaya/popcorn into develop

This commit is contained in:
koya_15 2021-11-29 15:58:49 +09:00
commit dd8e4bb2b6
15 changed files with 482 additions and 62 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -0,0 +1,92 @@
fileFormatVersion: 2
guid: eec1c209826c64ee992031fcf2063f7b
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -0,0 +1,92 @@
fileFormatVersion: 2
guid: 4717ef924abc849e18f0fa060a7420d3
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,92 @@
fileFormatVersion: 2
guid: 689a549b288e841bd8ccd6abedae2cf4
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,92 @@
fileFormatVersion: 2
guid: 86062d3d3af094019a8a3cb208366af5
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0.58631194, y: 0.515432}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -240,9 +240,10 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 3320409656134683753}
- component: {fileID: 680149628799017792}
- component: {fileID: 7815373139353427344}
- component: {fileID: 6660189001731691529}
- component: {fileID: 3170654326839881890}
- component: {fileID: 680149628799017792}
m_Layer: 0
m_Name: MarketManager
m_TagString: Untagged
@ -265,6 +266,37 @@ Transform:
m_Father: {fileID: 3667080857874733261}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &680149628799017792
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8739647597683206087}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 772e0346311a433fb714573f207813d2, type: 3}
m_Name:
m_EditorClassIdentifier:
walkerInterval: 10
adWalkerDuration: 60
adWalkerCount: 20
tastingCustomerInterval: 5
--- !u!114 &7815373139353427344
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8739647597683206087}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 573c945685b348baa1a1ba6aeeb38714, type: 3}
m_Name:
m_EditorClassIdentifier:
specialOrderCount: 5
walkerSpecialRate: 0.01
customerSpecialRate: 0.01
--- !u!114 &6660189001731691529
MonoBehaviour:
m_ObjectHideFlags: 0
@ -280,6 +312,7 @@ MonoBehaviour:
customerFlow: {fileID: 680149628799017792}
orderPosisionObject: {fileID: 8461447348824790522}
customerData: {fileID: 3170654326839881890}
customerSetting: {fileID: 7815373139353427344}
customerControllerPrefab: {fileID: 5715829407227760309, guid: 6fbb038c9aae840f2bea57bce30740f7,
type: 3}
--- !u!114 &3170654326839881890
@ -317,18 +350,6 @@ MonoBehaviour:
- {fileID: 1134751513859088931, guid: 09a4786fa1ab00e4b9c5bf9cebf256bc, type: 3}
specialCustomerList:
- {fileID: 5301193561386860206, guid: 72f4243f8f258bc48b42e3ae5e1ba2b5, type: 3}
--- !u!114 &680149628799017792
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8739647597683206087}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 772e0346311a433fb714573f207813d2, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &8914311020904666258
PrefabInstance:
m_ObjectHideFlags: 0

View File

@ -46,7 +46,7 @@ public class Title : MonoBehaviour
.Subscribe(t =>
{
// 一般客orセレブ
var (isSpecial, orderCount) = Market.GetCustomerData(false);
var (isSpecial, orderCount) = Market.Instance.GetCustomerData(false);
// 複数パターンある場合ChooseRandom
var prefab = isSpecial ? customerData.ChooseSpecialPrefab() : customerData.ChooseNormalPrefab();

View File

@ -11,10 +11,17 @@ public class CustomerFlow : MonoBehaviour
private readonly Subject<IObservable<Unit>> adStartObservable = new Subject<IObservable<Unit>>();
private IObservable<bool> tastingCustomerObservable;
private static readonly float checkHeartInterval = 1f;
// 歩行者の出現間隔
private static readonly float walkerInterval = 60f / 6;
// 試食で来るお客さん間隔
private static readonly float tastingCustomerInterval = 5f;
[Header("1分間あたりの歩行者数")]
[SerializeField] private float walkerInterval = 60f / 6;
[Header("宣伝時間(秒)")]
[SerializeField] private float adWalkerDuration = 60f;
[Header("宣伝で来るお客さんの数")]
[SerializeField] private int adWalkerCount = 20;
[Header("試食のお客さん出現間隔(秒)")]
[SerializeField] private float tastingCustomerInterval = 5f;
public IObservable<bool> Flow => walkerObservable.Merge(customerObservable, adWalkerObservable, tastingCustomerObservable);
@ -85,8 +92,8 @@ public class CustomerFlow : MonoBehaviour
private IObservable<Unit> AdWalkerTimer()
{
return Observable.Interval(TimeSpan.FromSeconds(3f))
.Take(TimeSpan.FromSeconds(60f))
return Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(adWalkerDuration/adWalkerCount))
.Take(TimeSpan.FromSeconds(adWalkerDuration))
.AsUnitObservable();
}
}

View File

@ -0,0 +1,45 @@
using System.Linq;
using UnityEngine;
namespace MyGame.Scenes.marketing.Scripts
{
public class CustomerSetting : MonoBehaviour
{
[SerializeField] private int specialOrderCount = 5;
[SerializeField] private float walkerSpecialRate = .01f;
[SerializeField] private float customerSpecialRate = .01f;
private static readonly (int want, float weight)[] CustomerWeightTable = {
(1, 75f),
(2, 15f),
(3, 3.5f),
(4, 1.25f),
(5, .25f),
(0, 5f),
};
public (bool isSpecial, int orderCount) GetCustomerData (bool isCustomer)
{
var specialRate = isCustomer ? walkerSpecialRate : customerSpecialRate;
var isSpecial = Random.value < specialRate;
// セレブは5個購入固定
return isSpecial ? (true, specialOrderCount) : (false, GetOrderCount());
}
// お客さん出現パターン確率計算と行動パターン計算
private static int GetOrderCount()
{
var randomPoint = Random.value * CustomerWeightTable.Sum(x => x.weight);
foreach (var value in CustomerWeightTable)
{
if (randomPoint < value.weight)
{
return value.want;
}
randomPoint -= value.weight;
}
return CustomerWeightTable.Last().want;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 573c945685b348baa1a1ba6aeeb38714
timeCreated: 1638163510

View File

@ -2,6 +2,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using MyGame.Scenes.marketing.Scripts;
using TMPro;
using UniRx;
using UniRx.Triggers;
@ -18,21 +19,15 @@ public enum ShopState
public class Market : SingletonMonoBehaviour<Market>
{
public static readonly int ShopStockCount = 20;
private static readonly int SpecialOrderCount = 5;
private static readonly (int want, float weight)[] CustomerWeightTable = {
(1, 75f),
(2, 15f),
(3, 3.5f),
(4, 1.25f),
(5, .25f),
(0, 5f),
};
private static readonly float walkerSpecialRate = .01f;
private static readonly float customerSpecialRate = .01f;
// 購入時アニメーションタイミング
private static readonly float waitSellTime = 1.5f;
private static readonly float waitRefillTime = 1f;
[SerializeField] private CustomerFlow customerFlow;
[SerializeField] private GameObject orderPosisionObject;
[SerializeField] private CustomerData customerData;
[SerializeField] private CustomerSetting customerSetting;
[SerializeField] private CustomerController customerControllerPrefab;
public List<ProductStockData> DisplayFlavors => displayFlavors;
@ -229,13 +224,13 @@ public class Market : SingletonMonoBehaviour<Market>
}
}
this.CallWaitForSeconds(1.5f, () =>
this.CallWaitForSeconds(waitSellTime, () =>
{
sellObservable.OnNext(coin);
sellOrderSubject.OnNext(orders);
CheckStock(gameData.ShopStock);
this.CallWaitForSeconds(1f, () =>
this.CallWaitForSeconds(waitRefillTime, () =>
{
refillSubject.OnNext((isReorder, refillList));
foreach (var controller in customers)
@ -341,28 +336,9 @@ public class Market : SingletonMonoBehaviour<Market>
}
public static (bool isSpecial, int orderCount) GetCustomerData (bool isCustomer)
public (bool isSpecial, int orderCount) GetCustomerData (bool isCustomer)
{
var specialRate = isCustomer ? walkerSpecialRate : customerSpecialRate;
var isSpecial = Random.value < specialRate;
// セレブは5個購入固定
return isSpecial ? (true, specialOrderCount: SpecialOrderCount) : (false, GetOrderCount());
}
// お客さん出現パターン確率計算と行動パターン計算
private static int GetOrderCount()
{
var randomPoint = Random.value * CustomerWeightTable.Sum(x => x.weight);
foreach (var value in CustomerWeightTable)
{
if (randomPoint < value.weight)
{
return value.want;
}
randomPoint -= value.weight;
}
return CustomerWeightTable.Last().want;
return customerSetting.GetCustomerData(isCustomer);
}
private CustomerController SpawnCustomer()

View File

@ -1760,7 +1760,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 438315598}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 3.72, y: -2.45, z: 0}
m_LocalPosition: {x: 3.68, y: -2.45, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 699827849}
@ -1809,7 +1809,7 @@ SpriteRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 4
m_Sprite: {fileID: 21300000, guid: 19e47aa2657cc1f47adfca0ad007a309, type: 3}
m_Sprite: {fileID: 21300000, guid: 86062d3d3af094019a8a3cb208366af5, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
@ -2072,7 +2072,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 456610254}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.32, y: 0.19, z: 0}
m_LocalPosition: {x: -0.22, y: 0.35, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 438315599}
@ -2117,7 +2117,7 @@ SpriteRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 2
m_Sprite: {fileID: 21300000, guid: 39338f73bd1e4f443958fdf6e03d345b, type: 3}
m_Sprite: {fileID: 21300000, guid: 689a549b288e841bd8ccd6abedae2cf4, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
@ -7395,7 +7395,7 @@ SpriteRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 5
m_Sprite: {fileID: 21300000, guid: 7dd324e32c7db624e8c74fea88f45ca7, type: 3}
m_Sprite: {fileID: 21300000, guid: 1c2a241c79997427ba36c3cb6e5e3eba, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
@ -13696,7 +13696,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1806801954}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.188, y: -0.97, z: 0}
m_LocalPosition: {x: -0.188, y: -1.039, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 438315599}
@ -19141,7 +19141,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1987982869}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.39, y: 3.05, z: 0}
m_LocalPosition: {x: -0.39, y: 3.08, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 1482901211}
@ -19186,7 +19186,7 @@ SpriteRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 6
m_Sprite: {fileID: 21300000, guid: cee29e082ddcf9743ab95cb745d03b2f, type: 3}
m_Sprite: {fileID: 21300000, guid: 4717ef924abc849e18f0fa060a7420d3, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0