Merge branch 'develop' of bitbucket.org:usaya/popcorn into develop
This commit is contained in:
commit
9a8a01346c
|
|
@ -2671,7 +2671,7 @@ Material:
|
|||
- _ColorMask: 15
|
||||
- _CullMode: 0
|
||||
- _Diffuse: 0.5
|
||||
- _FaceDilate: 1
|
||||
- _FaceDilate: 0.5
|
||||
- _FaceUVSpeedX: 0
|
||||
- _FaceUVSpeedY: 0
|
||||
- _GlowInner: 0.05
|
||||
|
|
@ -2688,9 +2688,9 @@ Material:
|
|||
- _OutlineWidth: 1
|
||||
- _PerspectiveFilter: 0.875
|
||||
- _Reflectivity: 10
|
||||
- _ScaleRatioA: 0.41142857
|
||||
- _ScaleRatioB: 0
|
||||
- _ScaleRatioC: 0
|
||||
- _ScaleRatioA: 0.53333336
|
||||
- _ScaleRatioB: 0.28125
|
||||
- _ScaleRatioC: 0.28125
|
||||
- _ScaleX: 1
|
||||
- _ScaleY: 1
|
||||
- _ShaderFlags: 0
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 3.6 KiB |
|
|
@ -0,0 +1,92 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d663be892806fa34aa7c02d60229aba5
|
||||
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: 40, y: 136, z: 237, w: 71}
|
||||
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: 8.3 KiB |
|
|
@ -0,0 +1,92 @@
|
|||
fileFormatVersion: 2
|
||||
guid: c7b0a686aead508458a3655665cf4abd
|
||||
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:
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,91 @@
|
|||
using System;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class CookingResult : MonoBehaviour
|
||||
{
|
||||
private static readonly string RarityTextFormat = "売値 +{0}% UP";
|
||||
[SerializeField] private GameObject smokeEffect;
|
||||
[SerializeField] private GameObject glitterEffect;
|
||||
[SerializeField] private Button centerOkButton;
|
||||
[SerializeField] private Button perfectButton;
|
||||
[SerializeField] private Button leftOkButton;
|
||||
[SerializeField] private Button destructionButton;
|
||||
[SerializeField] private Image popcornImage;
|
||||
[SerializeField] private Text popcornText;
|
||||
[SerializeField] private Text popcornTextPerfect;
|
||||
[SerializeField] private Text rarityText;
|
||||
[SerializeField] private RarityView rarityView;
|
||||
[SerializeField] private GameObject detailObject;
|
||||
[SerializeField] private GameObject explainObject;
|
||||
[SerializeField] private GameObject explainWithRarityObject;
|
||||
[SerializeField] private GameObject perfectResultObject;
|
||||
[SerializeField] private GameObject goodResultObject;
|
||||
[SerializeField] private GameObject failureResultObject;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
var data = LocalCacheManager.Load<RecipeData>(PopcornGameManager.CookingDataTag);
|
||||
var result = CornResult.Good;
|
||||
SetResult(result);
|
||||
SetUI(result);
|
||||
|
||||
// 各種ボタン押下後、獲得処理
|
||||
centerOkButton.OnClickAsObservable().Subscribe(_ =>
|
||||
{
|
||||
// 獲得、遷移
|
||||
TransitionManager.Instance.LoadScene(GameScenes.Main);
|
||||
}).AddTo(this);
|
||||
perfectButton.OnClickAsObservable().Subscribe(_ =>
|
||||
{
|
||||
// 広告視聴後、Perfect表示
|
||||
TransitionManager.Instance.UnloadScene(GameScenes.CookingResults, () =>
|
||||
{
|
||||
// UIリセットでもええかも
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.CookingResults);
|
||||
});
|
||||
}).AddTo(this);
|
||||
leftOkButton.OnClickAsObservable().Subscribe(_ =>
|
||||
{
|
||||
// 獲得、遷移
|
||||
TransitionManager.Instance.LoadScene(GameScenes.Main);
|
||||
}).AddTo(this);
|
||||
destructionButton.OnClickAsObservable().Subscribe(_ =>
|
||||
{
|
||||
// 遷移
|
||||
TransitionManager.Instance.LoadScene(GameScenes.Main);
|
||||
}).AddTo(this);
|
||||
|
||||
}
|
||||
|
||||
private void SetData(RecipeData recipe, RarityData rarity)
|
||||
{
|
||||
// popcornImage
|
||||
popcornText.text = recipe.Name;
|
||||
popcornTextPerfect.text = recipe.Name;
|
||||
rarityText.text = string.Format(RarityTextFormat, rarity.rate - 100);
|
||||
rarityView.SetRarity(rarity.Rarity);
|
||||
}
|
||||
|
||||
private void SetResult(CornResult result)
|
||||
{
|
||||
perfectResultObject.SetActive(result == CornResult.Perfect);
|
||||
goodResultObject.SetActive(result == CornResult.Good);
|
||||
failureResultObject.SetActive(result == CornResult.Failure);
|
||||
}
|
||||
|
||||
private void SetUI(CornResult result)
|
||||
{
|
||||
smokeEffect.SetActive(result == CornResult.Failure);
|
||||
glitterEffect.SetActive(result == CornResult.Perfect);
|
||||
centerOkButton.gameObject.SetActive(result == CornResult.Perfect);
|
||||
perfectButton.gameObject.SetActive(result != CornResult.Perfect);
|
||||
leftOkButton.gameObject.SetActive(result == CornResult.Good);
|
||||
destructionButton.gameObject.SetActive(result == CornResult.Failure);
|
||||
detailObject.SetActive(result != CornResult.Failure);
|
||||
explainObject.SetActive(result == CornResult.Good);
|
||||
explainWithRarityObject.SetActive(result == CornResult.Perfect);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 12f6d67a3ba04d5189bf823db2dfb8e1
|
||||
timeCreated: 1631883651
|
||||
|
|
@ -15,12 +15,10 @@ public enum GameState
|
|||
|
||||
public class PopcornGameManager : MonoBehaviour
|
||||
{
|
||||
public static readonly string CookingDataTag = "CookingData";
|
||||
// View
|
||||
[SerializeField] private PopcornGameView gameView;
|
||||
[SerializeField] private GameObject perfectResultObject;
|
||||
[SerializeField] private GameObject goodResultObject;
|
||||
[SerializeField] private GameObject failureResultObject;
|
||||
|
||||
|
||||
[SerializeField] private ThermalControl thermalControl;
|
||||
[SerializeField] private ThermoMeter thermoMeter;
|
||||
[SerializeField] private CornManager cornManager;
|
||||
|
|
@ -29,7 +27,6 @@ public class PopcornGameManager : MonoBehaviour
|
|||
[SerializeField] private Button resetButton;
|
||||
#endif
|
||||
|
||||
public IReadOnlyReactiveProperty<GameState> State => state;
|
||||
private readonly ReactiveProperty<GameState> state = new ReactiveProperty<GameState>(GameState.Guide);
|
||||
private readonly CompositeDisposable compositeDisposable = new CompositeDisposable();
|
||||
|
||||
|
|
@ -37,14 +34,36 @@ public class PopcornGameManager : MonoBehaviour
|
|||
void Start()
|
||||
{
|
||||
compositeDisposable.AddTo(this);
|
||||
state.AddTo(this);
|
||||
|
||||
thermalControl.Condition.Subscribe(x =>
|
||||
{
|
||||
cornManager.ChangeGrowSpeed(x);
|
||||
gameView.ChangeCharactorState(x);
|
||||
gameView.ChangeCharacterState(x);
|
||||
}).AddTo(this);
|
||||
|
||||
state.Subscribe(x => cornManager.GameState.Value = x);
|
||||
state.Subscribe(x =>
|
||||
{
|
||||
cornManager.GameState.Value = x;
|
||||
gameView.ChangeUI(x);
|
||||
switch (x)
|
||||
{
|
||||
case GameState.Guide:
|
||||
thermalControl.ResetMeter();
|
||||
cornManager.RespawnCorn();
|
||||
thermoMeter.gameObject.SetActive(false);
|
||||
break;
|
||||
case GameState.Playing:
|
||||
thermoMeter.gameObject.SetActive(true);
|
||||
thermalControl.StartMeter();
|
||||
break;
|
||||
case GameState.Result:
|
||||
thermalControl.StopMeter();
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(x), x, null);
|
||||
}
|
||||
});
|
||||
|
||||
ResetGame();
|
||||
|
||||
|
|
@ -87,33 +106,22 @@ public class PopcornGameManager : MonoBehaviour
|
|||
.Subscribe(x =>
|
||||
{
|
||||
state.Value = GameState.Result;
|
||||
thermalControl.StopMeter();
|
||||
gameView.ChangeCharactorState(ThermalCondition.Cold);
|
||||
gameView.ChangeFireState(false);
|
||||
gameView.ChangeStreamState(true);
|
||||
// リザルト表示遅延
|
||||
this.CallWaitForSeconds(1.2f, () =>
|
||||
{
|
||||
SetResult(x);
|
||||
// popup
|
||||
// CornResult
|
||||
// 動画を見たあと、大成功にするための処理・・・?
|
||||
// というか1つのシーンにしてしまうか
|
||||
if (x != CornResult.Failure)
|
||||
{
|
||||
AddStock();
|
||||
var recipe = LocalCacheManager.Load<RecipeData>(CookingDataTag);
|
||||
AddStock(recipe);
|
||||
}
|
||||
// 画面タップで次へ
|
||||
this.UpdateAsObservable()
|
||||
.Select(_ => Input.GetMouseButton(0))
|
||||
.DistinctUntilChanged()
|
||||
.Skip(1)
|
||||
.FirstOrDefault(b => b)
|
||||
.DelaySubscription(TimeSpan.FromSeconds(1f))
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
// ResetGame();
|
||||
TransitionManager.Instance.LoadScene(GameScenes.Main);
|
||||
}).AddTo(compositeDisposable);
|
||||
});
|
||||
}).AddTo(compositeDisposable);
|
||||
|
||||
// 画面タップでスタート
|
||||
this.UpdateAsObservable()
|
||||
.Select(_ => Input.GetMouseButton(0))
|
||||
.DistinctUntilChanged()
|
||||
|
|
@ -121,56 +129,14 @@ public class PopcornGameManager : MonoBehaviour
|
|||
.FirstOrDefault(b => b)
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
StartGame();
|
||||
state.Value = GameState.Playing;
|
||||
}).AddTo(compositeDisposable);
|
||||
|
||||
ResetUI();
|
||||
thermalControl.ResetMeter();
|
||||
cornManager.RespawnCorn();
|
||||
state.Value = GameState.Guide;
|
||||
}
|
||||
|
||||
private void ResetUI()
|
||||
{
|
||||
gameView.ResetUI();
|
||||
perfectResultObject.SetActive(false);
|
||||
goodResultObject.SetActive(false);
|
||||
failureResultObject.SetActive(false);
|
||||
|
||||
thermalControl.StopMeter();
|
||||
thermoMeter.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
private void StartGame()
|
||||
private void AddStock(RecipeData recipe)
|
||||
{
|
||||
gameView.ChangeGuideState(false);
|
||||
gameView.ChangeFireState(true);
|
||||
thermoMeter.gameObject.SetActive(true);
|
||||
thermalControl.StartMeter();
|
||||
state.Value = GameState.Playing;
|
||||
}
|
||||
|
||||
private void SetResult(CornResult result)
|
||||
{
|
||||
switch (result)
|
||||
{
|
||||
case CornResult.Perfect:
|
||||
perfectResultObject.SetActive(true);
|
||||
break;
|
||||
case CornResult.Good:
|
||||
goodResultObject.SetActive(true);
|
||||
break;
|
||||
case CornResult.Failure:
|
||||
failureResultObject.SetActive(true);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(result), result, null);
|
||||
}
|
||||
}
|
||||
|
||||
private void AddStock()
|
||||
{
|
||||
var recipe = LocalCacheManager.Load<RecipeData>(RecipeDetailView.DetailRecipeTag);
|
||||
var gameData = GameDataManager.GameData;
|
||||
// 店頭の空きに追加
|
||||
var remain = recipe.Volume;
|
||||
|
|
|
|||
|
|
@ -10,31 +10,47 @@ public class PopcornGameView : MonoBehaviour
|
|||
[SerializeField] private GameObject characterSweat;
|
||||
[SerializeField] private GameObject characterFlower;
|
||||
|
||||
public void ResetUI()
|
||||
public void ChangeUI(GameState state)
|
||||
{
|
||||
ChangeGuideState(true);
|
||||
ChangeFireState(false);
|
||||
ChangeCharactorState(ThermalCondition.Cold);
|
||||
ChangeStreamState(false);
|
||||
switch (state)
|
||||
{
|
||||
case GameState.Guide:
|
||||
ChangeGuideState(true);
|
||||
ChangeFireState(false);
|
||||
ChangeStreamState(false);
|
||||
ChangeCharacterState(ThermalCondition.Cold);
|
||||
break;
|
||||
case GameState.Playing:
|
||||
ChangeGuideState(false);
|
||||
ChangeFireState(true);
|
||||
break;
|
||||
case GameState.Result:
|
||||
ChangeFireState(false);
|
||||
ChangeStreamState(true);
|
||||
ChangeCharacterState(ThermalCondition.Cold);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(state), state, null);
|
||||
}
|
||||
}
|
||||
|
||||
public void ChangeGuideState(bool isActive)
|
||||
|
||||
private void ChangeGuideState(bool isActive)
|
||||
{
|
||||
startingGuide.SetActive(isActive);
|
||||
}
|
||||
|
||||
public void ChangeFireState(bool isActive)
|
||||
private void ChangeFireState(bool isActive)
|
||||
{
|
||||
fire.SetActive(isActive);
|
||||
oilEffect.SetActive(isActive);
|
||||
}
|
||||
|
||||
public void ChangeStreamState(bool isActive)
|
||||
private void ChangeStreamState(bool isActive)
|
||||
{
|
||||
streamEffect.SetActive(isActive);
|
||||
}
|
||||
|
||||
public void ChangeCharactorState(ThermalCondition condition)
|
||||
public void ChangeCharacterState(ThermalCondition condition)
|
||||
{
|
||||
switch (condition)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
using UnityEngine;
|
||||
|
||||
public class RarityView : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private GameObject normalObject;
|
||||
[SerializeField] private GameObject yellowObject;
|
||||
[SerializeField] private GameObject copperObject;
|
||||
[SerializeField] private GameObject silverObject;
|
||||
[SerializeField] private GameObject goldObject;
|
||||
[SerializeField] private GameObject rainbowObject;
|
||||
|
||||
public void SetRarity(ProductRarity rarity)
|
||||
{
|
||||
normalObject?.SetActive(rarity == ProductRarity.Normal);
|
||||
yellowObject?.SetActive(rarity == ProductRarity.Yellow);
|
||||
copperObject?.SetActive(rarity == ProductRarity.Copper);
|
||||
silverObject?.SetActive(rarity == ProductRarity.Silver);
|
||||
goldObject?.SetActive(rarity == ProductRarity.Gold);
|
||||
rainbowObject?.SetActive(rarity == ProductRarity.Rainbow);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 01738374a494495b82539c6ff39c1a3a
|
||||
timeCreated: 1632196580
|
||||
|
|
@ -156,9 +156,10 @@ public class ThermalControl : MonoBehaviour
|
|||
|
||||
public void ResetMeter()
|
||||
{
|
||||
isMove = false;
|
||||
temperatureSpeed = 0f;
|
||||
temperature = 0f;
|
||||
thermoMeter.SetValue(temperature);
|
||||
temperatureSpeed = 0f;
|
||||
SetMeterValue();
|
||||
thermoMeter.SetScale(coldValue, hotValue);
|
||||
panController.ResetTargetPosition();
|
||||
|
|
|
|||
|
|
@ -76,20 +76,18 @@ public class CornField : MonoBehaviour
|
|||
}
|
||||
GameDataManager.SaveGameData();
|
||||
|
||||
// 収穫カウンター
|
||||
var currentHarvestedCount = 0;
|
||||
// 収穫カウンター+吸収演出
|
||||
cornHarvester.FinishHarvested
|
||||
.Scan((list, newList) => list.Concat(newList).ToList())
|
||||
.Scan((list, newList) => (newList.count, list.colliders.Concat(newList.colliders).ToList()))
|
||||
.Throttle(TimeSpan.FromSeconds(countThrottle))
|
||||
.Take(1)
|
||||
.RepeatUntilDestroy(this)
|
||||
.Subscribe(x =>
|
||||
{
|
||||
|
||||
var count = currentHarvestedCount;
|
||||
var colliders = x.colliders;
|
||||
// カゴ外のやつ分ける
|
||||
var destroyList = x.Where(c => c.enabled == false).ToList();
|
||||
var stayList = x.Except(destroyList).ToList();
|
||||
var destroyList = colliders.Where(c => c.enabled == false).ToList();
|
||||
var stayList = colliders.Except(destroyList).ToList();
|
||||
// 間引く
|
||||
var animationList = stayList.RandomChoose(animationLimit);
|
||||
// 間引かれた分は破棄
|
||||
|
|
@ -117,7 +115,7 @@ public class CornField : MonoBehaviour
|
|||
});
|
||||
this.CallWaitForSeconds(animationDuration, () =>
|
||||
{
|
||||
counterView.SetHarvestedCount(count);
|
||||
counterView.SetHarvestedCount(x.count);
|
||||
});
|
||||
}).AddTo(this);
|
||||
// 株設定
|
||||
|
|
@ -137,34 +135,33 @@ public class CornField : MonoBehaviour
|
|||
seedling.SetSeedlingGene(lineData.Seedlings[index].FirstTime, lineData.Seedlings[index].Period / 3, lineData.Seedlings[index].Level);
|
||||
}
|
||||
#endif
|
||||
// 収穫通知
|
||||
seedling.Harvested.Subscribe(_ =>
|
||||
{
|
||||
// 収穫
|
||||
VibrationManager.Instance.PlayVibrationOnce();
|
||||
var harvestCount = GetHarvestCount(lineData.Seedlings[index].Level);
|
||||
var harvestedCorn = GetHarvestedCornCount(gameData.MachineLevel);
|
||||
gameData.cornSeed += harvestedCorn * harvestCount;
|
||||
currentHarvestedCount += harvestedCorn * harvestCount;
|
||||
var seedlingTransform = seedling.transform;
|
||||
for (int j = 0; j < harvestCount; j++)
|
||||
{
|
||||
// 株の位置調整
|
||||
var pos = seedlingTransform.position;
|
||||
if (harvestCount > 1)
|
||||
{
|
||||
pos += Vector3.right * (j - 1) * harvestedDistance + Vector3.forward * (j - 1);
|
||||
}
|
||||
// 複数株
|
||||
this.CallWaitForFrame(harvestedFrameInterval * j, () =>
|
||||
{
|
||||
var harvestAnimation = Instantiate(harvestPrefab, pos, Quaternion.identity, seedlingTransform);
|
||||
var beginPos = harvestAnimation.transform.position;
|
||||
this.CallWaitForSeconds(.5f, () =>
|
||||
{
|
||||
this.CallLerp(.4f, f =>
|
||||
{
|
||||
harvestAnimation.transform.position = Vector3.Lerp(beginPos, harvestInsertPosition.position, f.EaseInQuadratic());
|
||||
harvestAnimation.transform.position = Vector3.Lerp(pos, harvestInsertPosition.position, f.EaseInQuadratic());
|
||||
}, () =>
|
||||
{
|
||||
// コーン排出
|
||||
cornHarvester.AddCount(harvestedCorn);
|
||||
Destroy(harvestAnimation);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ public class CornHarvester : MonoBehaviour
|
|||
private int maxCorn = 100; // 収穫演出で出るコーンの数を制限
|
||||
|
||||
private readonly ReactiveProperty<int> count = new ReactiveProperty<int>(0);
|
||||
private readonly Subject<List<Collider2D>> finishHarvested = new Subject<List<Collider2D>>();
|
||||
public Subject<List<Collider2D>> FinishHarvested => finishHarvested;
|
||||
private readonly Subject<(int count, List<Collider2D> colliders)> finishHarvested = new Subject<(int count, List<Collider2D> colliders)>();
|
||||
public Subject<(int count, List<Collider2D> colliders)> FinishHarvested => finishHarvested;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
|
|
@ -27,11 +27,14 @@ public class CornHarvester : MonoBehaviour
|
|||
.Pairwise()
|
||||
.Subscribe(x =>
|
||||
{
|
||||
StartCoroutine(Harvested(Mathf.Min(maxCorn, x.Current - x.Previous)));
|
||||
StartCoroutine(Harvested(Mathf.Min(maxCorn, x.Current - x.Previous), (list) =>
|
||||
{
|
||||
finishHarvested.OnNext((x.Current, list));
|
||||
}));
|
||||
}).AddTo(this);
|
||||
}
|
||||
|
||||
private IEnumerator Harvested(int cnt)
|
||||
private IEnumerator Harvested(int cnt, Action<List<Collider2D>> callback = null)
|
||||
{
|
||||
var finishedList = new List<Collider2D>();
|
||||
for (int i = 0; i < cnt; i++)
|
||||
|
|
@ -41,7 +44,7 @@ public class CornHarvester : MonoBehaviour
|
|||
finishedList.Add(corn.GetComponent<Collider2D>());
|
||||
yield return null;
|
||||
}
|
||||
finishHarvested.OnNext(finishedList);
|
||||
callback?.Invoke(finishedList);
|
||||
}
|
||||
|
||||
public void AddCount(int value)
|
||||
|
|
|
|||
|
|
@ -121,6 +121,80 @@ NavMeshSettings:
|
|||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1 &25014320
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 25014321}
|
||||
- component: {fileID: 25014323}
|
||||
- component: {fileID: 25014322}
|
||||
m_Layer: 5
|
||||
m_Name: frame
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &25014321
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 25014320}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1464412874}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: -1.0000129, y: -6.9999743}
|
||||
m_SizeDelta: {x: 700, y: 242}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &25014322
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 25014320}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: d663be892806fa34aa7c02d60229aba5, type: 3}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!222 &25014323
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 25014320}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!1 &138926717
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -234,6 +308,84 @@ RectTransform:
|
|||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!1 &255490368
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 255490369}
|
||||
- component: {fileID: 255490371}
|
||||
- component: {fileID: 255490370}
|
||||
m_Layer: 5
|
||||
m_Name: Text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &255490369
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 255490368}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1464412874}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 5}
|
||||
m_SizeDelta: {x: 650, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &255490370
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 255490368}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.43137258, g: 0.29803923, b: 0.19215688, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: b5532e9ce15694f55a0893a76a98cd78, type: 3}
|
||||
m_FontSize: 28
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 0
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 1
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1.3
|
||||
m_Text: "\u30BF\u30F3\u30AF\u304C\u3044\u3063\u3071\u3044\u3067\u4F5C\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u2026\r\n\u3059\u3050\u306B\u7A7A\u304D\u3092\u4F5C\u308A\u305F\u3044\u5834\u5408\u306F\u8A66\u98DF\u3092\u4F7F\u3063\u3066\u307F\u3088\u3046\uFF01"
|
||||
--- !u!222 &255490371
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 255490368}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!1 &269597408
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -1678,6 +1830,7 @@ RectTransform:
|
|||
- {fileID: 1626721124}
|
||||
- {fileID: 2135558976}
|
||||
- {fileID: 1160535647}
|
||||
- {fileID: 1464412874}
|
||||
m_Father: {fileID: 1036314251}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
|
|
@ -1955,6 +2108,80 @@ CanvasRenderer:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1109202677}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!1 &1125711447
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1125711448}
|
||||
- component: {fileID: 1125711450}
|
||||
- component: {fileID: 1125711449}
|
||||
m_Layer: 5
|
||||
m_Name: title
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1125711448
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1125711447}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1464412874}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: -1, y: 105}
|
||||
m_SizeDelta: {x: 406, y: 52}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1125711449
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1125711447}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: c7b0a686aead508458a3655665cf4abd, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!222 &1125711450
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1125711447}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!1 &1157984678
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -2407,6 +2634,44 @@ GameObject:
|
|||
type: 3}
|
||||
m_PrefabInstance: {fileID: 1408233925}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &1464412873
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1464412874}
|
||||
m_Layer: 5
|
||||
m_Name: FlameCaution
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
--- !u!224 &1464412874
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1464412873}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 25014321}
|
||||
- {fileID: 1125711448}
|
||||
- {fileID: 255490369}
|
||||
m_Father: {fileID: 1001521034}
|
||||
m_RootOrder: 7
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: -7.600019, y: -212.99998}
|
||||
m_SizeDelta: {x: 710, y: 270}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!1 &1484296443
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ using UnityEngine.UI;
|
|||
|
||||
public class RecipeDetailView : MonoBehaviour
|
||||
{
|
||||
public static readonly string DetailRecipeTag = "RecipeData";
|
||||
private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger");
|
||||
private static readonly int CloseTrigger = Animator.StringToHash("CloseTrigger");
|
||||
|
||||
|
|
@ -28,7 +27,7 @@ public class RecipeDetailView : MonoBehaviour
|
|||
|
||||
private void Start()
|
||||
{
|
||||
var data = LocalCacheManager.Load<RecipeData>(DetailRecipeTag);
|
||||
var data = LocalCacheManager.Load<RecipeData>(PopcornGameManager.CookingDataTag);
|
||||
|
||||
cancelButton.OnClickAsObservable().Subscribe(_ =>
|
||||
{
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public class RecipeSelectDialog : MonoBehaviour
|
|||
view.SetLockPanel(false);
|
||||
view.RecipeClickObservable.Subscribe(_ =>
|
||||
{
|
||||
LocalCacheManager.Save(RecipeDetailView.DetailRecipeTag, recipeData);
|
||||
LocalCacheManager.Save(PopcornGameManager.CookingDataTag, recipeData);
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.RecipeChoice);
|
||||
}).AddTo(this);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ public enum GameScenes
|
|||
{
|
||||
Main,
|
||||
Cooking,
|
||||
CookingResults,
|
||||
CornField,
|
||||
Recipe,
|
||||
RecipeChoice,
|
||||
|
|
|
|||
|
|
@ -17,6 +17,9 @@ EditorBuildSettings:
|
|||
- enabled: 1
|
||||
path: Assets/MyGame/Scenes/Cooking/Cooking.unity
|
||||
guid: 505f6fca18c0c4a769e89c86a9a1f5b5
|
||||
- enabled: 1
|
||||
path: Assets/MyGame/Scenes/Cooking/CookingResults.unity
|
||||
guid: c3b63388aa238ca4cbe0de288bdbfa9c
|
||||
- enabled: 1
|
||||
path: Assets/MyGame/Scenes/CornField/CornField.unity
|
||||
guid: 7ee833196453c8045b9ec713662ccf4e
|
||||
|
|
|
|||
Loading…
Reference in New Issue