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

This commit is contained in:
koya_15 2022-07-21 17:54:48 +09:00
commit d519bc9d74
4 changed files with 277 additions and 104 deletions

View File

@ -336,6 +336,80 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &2116348896259355144
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1534764298133588176}
- component: {fileID: 1099241547759812047}
- component: {fileID: 7579635455155827063}
m_Layer: 0
m_Name: WallCollider
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1534764298133588176
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2116348896259355144}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6547169326961555051}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1099241547759812047
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2116348896259355144}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b62a13975f3446e1b15bf182305ce742, type: 3}
m_Name:
m_EditorClassIdentifier:
itemType: 3
point: 0
effect: {fileID: 0}
--- !u!61 &7579635455155827063
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2116348896259355144}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IsTrigger: 1
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: 2.464157, y: -0.29294157}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0.5, y: 0.5}
oldSize: {x: 0.56, y: 0.56}
newSize: {x: 1.5, y: 1.5}
adaptiveTilingThreshold: 0.5
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 1.7018661, y: 6.5957174}
m_EdgeRadius: 0
--- !u!1 &3506260383647136063
GameObject:
m_ObjectHideFlags: 0
@ -1596,6 +1670,80 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &9202194284233474589
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2593939739011402922}
- component: {fileID: 5868678615845785858}
- component: {fileID: 6483093989930334763}
m_Layer: 0
m_Name: HoleCollider
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2593939739011402922
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9202194284233474589}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6547169326961555051}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &5868678615845785858
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9202194284233474589}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b62a13975f3446e1b15bf182305ce742, type: 3}
m_Name:
m_EditorClassIdentifier:
itemType: 2
point: 0
effect: {fileID: 0}
--- !u!61 &6483093989930334763
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9202194284233474589}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IsTrigger: 1
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: -0.30281544, y: 3.0435905}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0.5, y: 0.5}
oldSize: {x: 0.56, y: 0.56}
newSize: {x: 1.5, y: 1.5}
adaptiveTilingThreshold: 0.5
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 3.8188686, y: 0.64767385}
m_EdgeRadius: 0
--- !u!1001 &4896317741957177885
PrefabInstance:
m_ObjectHideFlags: 0
@ -1613,20 +1761,35 @@ PrefabInstance:
propertyPath: m_Name
value: Obstacle hole
objectReference: {fileID: 0}
- target: {fileID: 4498234376221693369, guid: b82d5b841abe54f95aee9a8a5a023f6a,
type: 3}
propertyPath: m_Name
value: HitCollider
objectReference: {fileID: 0}
- target: {fileID: 4498234376221693374, guid: b82d5b841abe54f95aee9a8a5a023f6a,
type: 3}
propertyPath: m_Size.x
value: 3
value: 4.9299707
objectReference: {fileID: 0}
- target: {fileID: 4498234376221693374, guid: b82d5b841abe54f95aee9a8a5a023f6a,
type: 3}
propertyPath: m_Size.y
value: 3
value: 1.2895794
objectReference: {fileID: 0}
- target: {fileID: 4498234376221693374, guid: b82d5b841abe54f95aee9a8a5a023f6a,
type: 3}
propertyPath: m_Enabled
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4498234376221693374, guid: b82d5b841abe54f95aee9a8a5a023f6a,
type: 3}
propertyPath: m_Offset.x
value: -0.022976398
objectReference: {fileID: 0}
- target: {fileID: 4498234376221693374, guid: b82d5b841abe54f95aee9a8a5a023f6a,
type: 3}
propertyPath: m_Offset.y
value: -3.2332087
objectReference: {fileID: 0}
- target: {fileID: 4888696605717816911, guid: b82d5b841abe54f95aee9a8a5a023f6a,
type: 3}
@ -1732,61 +1895,9 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 4896317741957177885}
m_PrefabAsset: {fileID: 0}
--- !u!1 &9052172984657770404 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 4498234376221693369, guid: b82d5b841abe54f95aee9a8a5a023f6a,
--- !u!4 &6547169326961555051 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1814670119296341110, guid: b82d5b841abe54f95aee9a8a5a023f6a,
type: 3}
m_PrefabInstance: {fileID: 4896317741957177885}
m_PrefabAsset: {fileID: 0}
--- !u!61 &5895574189566282252
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9052172984657770404}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: -0.03, y: -0.67}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
oldSize: {x: 0, y: 0}
newSize: {x: 0, y: 0}
adaptiveTilingThreshold: 0
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 3, y: 1.66}
m_EdgeRadius: 0
--- !u!61 &8766766892135053376
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9052172984657770404}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: -0.04, y: 0.83}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
oldSize: {x: 0, y: 0}
newSize: {x: 0, y: 0}
adaptiveTilingThreshold: 0
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 2.12, y: 1.31}
m_EdgeRadius: 0

View File

@ -263,14 +263,26 @@ namespace MyGame.Scenes.MiniGame.Scripts
// }
}
#endif
if (player.IsHit)
switch (item.ItemType)
{
return;
}
if (item.ItemType == StageItem.Type.Obstacle)
{
player.Hit(x.ClosestPoint(playerTransform.position));
x.enabled = false;
case StageItem.Type.Obstacle:
if (player.IsHit)
{
return;
}
player.Hit(x.ClosestPoint(playerTransform.position));
x.enabled = false;
break;
case StageItem.Type.Item1:
break;
case StageItem.Type.Hole:
player.Hole();
break;
case StageItem.Type.Wall:
player.Wall();
break;
default:
throw new ArgumentOutOfRangeException();
}
}).AddTo(this);
}
@ -280,8 +292,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
SoundManager.Instance.ChangeVolumeUniqueBGM(1f);
stageManager.ResetStage();
player.transform.position = characterBeginPos;
player.Stay();
player.ResetCount();
player.ResetPlayer();
scoreCount.Value = 0;
headerView.ChangeTimeCount(timeLimit);
resultManager.Reset();

View File

@ -31,25 +31,51 @@ namespace MyGame.Scenes.MiniGame.Scripts
private bool isFlying;
private bool isResult;
private bool isHit;
private bool isHole;
private bool isWall;
private float currentFallSpeed;
public bool IsHit => isHit;
private readonly BoolReactiveProperty isHitStay = new BoolReactiveProperty();
private IDisposable hitDisposable;
private readonly CompositeDisposable hitCompositeDisposable = new CompositeDisposable();
private IDisposable jumpHoldDisposable;
private Coroutine jumpCoroutine;
private Coroutine jumpFallCoroutine;
private Vector3 basePos;
private int count;
private readonly ReactiveProperty<int> count = new ReactiveProperty<int>();
public IObservable<Collider2D> OnHitItem => itemHitCollider.OnTriggerEnter2DAsObservable().TakeUntilDestroy(this);
public IObservable<Collider2D> OnHitObstacle => obstacleHitCollider.OnTriggerEnter2DAsObservable().TakeUntilDestroy(this);
private void Start()
{
isHitStay.AddTo(this);
count.AddTo(this);
hitCompositeDisposable.AddTo(this);
animator = GetComponent<Animator>();
basePos = transform.localPosition;
count.Subscribe(x =>
{
level1.SetActive(x >= level1Value);
level2.SetActive(x >= level2Value);
level3.SetActive(x >= level3Value);
}).AddTo(this);
}
public void Stay(bool force = false)
public void ResetPlayer()
{
Stay();
ResetCount();
isJump = false;
isFall = false;
isFlying = false;
isHit = false;
isHitStay.Value = false;
isHole = false;
isWall = false;
isResult = false;
}
private void Stay(bool force = false)
{
if (!force && isHit)
{
@ -60,7 +86,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
public void Move()
{
if (isHitStay.Value)
if (isHitStay.Value || isWall)
{
return;
}
@ -74,12 +100,11 @@ namespace MyGame.Scenes.MiniGame.Scripts
public void Jump()
{
if (isJump || isHit)
if (isJump || isHit || isHole)
{
return;
}
SoundManager.Instance.PlaySE("se_minigame_Jump");
animator?.Play("Brother_pink_jump", 0, 0);
isJump = true;
isFall = false;
@ -124,7 +149,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
if (isFall && active && !isFlying)
{
isFlying = true;
var currentSpeed = 0f;
currentFallSpeed = 0f;
this.SafeStopCoroutine(jumpFallCoroutine);
jumpHoldDisposable?.Dispose();
jumpHoldDisposable = this.UpdateAsObservable()
@ -134,16 +159,17 @@ namespace MyGame.Scenes.MiniGame.Scripts
// 滑空or落下切り替え
if (isButtonHold)
{
currentSpeed = -flyingFallSpeed;
currentFallSpeed = -flyingFallSpeed;
}
else
{
currentSpeed -= fallAcceleration * Time.deltaTime;
currentFallSpeed -= fallAcceleration * Time.deltaTime;
}
transform.AddLocalPositionY(currentSpeed * Time.deltaTime);
transform.AddLocalPositionY(currentFallSpeed * Time.deltaTime);
}, () =>
{
currentFallSpeed = 0f;
isJump = false;
isFall = false;
isFlying = false;
@ -164,9 +190,9 @@ namespace MyGame.Scenes.MiniGame.Scripts
}
Instantiate(hitEffectPrefab, hitPos, Quaternion.identity, transform.parent);
animator?.Play("Brother_pink_FallDown");
animator?.Play("Brother_pink_FallDown", 0, 0f);
isHit = true;
hitDisposable?.Dispose();
hitCompositeDisposable?.Clear();
// ヒット以外動作停止
this.SafeStopCoroutine(jumpCoroutine);
@ -175,33 +201,35 @@ namespace MyGame.Scenes.MiniGame.Scripts
var cachePosY = transform.localPosition.y;
var diffHeight = cachePosY - basePos.y;
jumpCoroutine = this.CallLerp(diffHeight == 0f ? 0f : hitJumpTime, t =>
var groundPos = isHole ? cachePosY : basePos.y;
jumpCoroutine = this.CallLerp(diffHeight <= 0f ? 0f : hitJumpTime, t =>
{
transform.SetLocalPositionY(cachePosY + hitAnimationCurve.Evaluate(t));
}, () =>
{
// 落下時間不定によりアニメ再生停止
animator.speed = 0f;
var currentSpeed = 0f;
currentFallSpeed = 0f;
this.UpdateAsObservable()
.TakeWhile(_ => transform.localPosition.y > basePos.y)
.TakeWhile(_ => transform.localPosition.y > groundPos)
.Subscribe(_ =>
{
currentSpeed -= fallAcceleration * Time.deltaTime;
transform.AddLocalPositionY(currentSpeed * Time.deltaTime);
currentFallSpeed -= fallAcceleration * Time.deltaTime;
transform.AddLocalPositionY(currentFallSpeed * Time.deltaTime);
}, () =>
{
// 31フレームまでが落下32からズサー
animator?.PlayInFixedTime("Brother_pink_FallDown", 0, .5f);
animator.speed = 1f;
transform.SetLocalPositionY(basePos.y);
transform.SetLocalPositionY(groundPos);
currentFallSpeed = 0f;
isJump = false;
isFall = false;
isFlying = false;
this.CallWaitForSeconds(hitTime, () =>
Observable.Timer(TimeSpan.FromSeconds(hitTime)).Subscribe(_ => { }, () =>
{
isHitStay.Value = true;
this.CallWaitForSeconds(hitWaitTime, () =>
Observable.Timer(TimeSpan.FromSeconds(hitWaitTime)).Subscribe(_ => { }, () =>
{
isHit = false;
isHitStay.Value = false;
@ -213,12 +241,41 @@ namespace MyGame.Scenes.MiniGame.Scripts
{
Stay();
}
});
});
}).AddTo(this);
}).AddTo(hitCompositeDisposable);
}).AddTo(hitCompositeDisposable);
}).AddTo(hitCompositeDisposable);
});
}
public void Hole()
{
// 落下開始
isHole = true;
// animator?.Play("Brother_pink_main_stay");
isJump = false;
isFall = false;
isFlying = false;
isHit = false;
isHitStay.Value = false;
hitCompositeDisposable?.Clear();
jumpHoldDisposable?.Dispose();
jumpHoldDisposable = this.UpdateAsObservable()
// .TakeWhile(_ => transform.localPosition.y > basePos.y)
.Subscribe(_ =>
{
currentFallSpeed -= fallAcceleration * Time.deltaTime;
transform.AddLocalPositionY(currentFallSpeed * Time.deltaTime);
}, () =>
{
}).AddTo(this);
}
public void Wall()
{
isWall = true;
}
public void Result()
{
if (isJump || isHit)
@ -233,21 +290,12 @@ namespace MyGame.Scenes.MiniGame.Scripts
public void AddCount()
{
SoundManager.Instance.PlaySE("se_minigame_ItemGet");
count++;
UpdateCount();
count.Value++;
}
private void UpdateCount()
private void ResetCount()
{
level1.SetActive(count >= level1Value);
level2.SetActive(count >= level2Value);
level3.SetActive(count >= level3Value);
}
public void ResetCount()
{
count = 0;
UpdateCount();
count.Value = 0;
}
}
}

View File

@ -11,6 +11,8 @@ namespace MyGame.Scenes.MiniGame.Scripts
{
Item1,
Obstacle,
Hole,
Wall,
}
[SerializeField] private Type itemType;
@ -30,7 +32,8 @@ namespace MyGame.Scenes.MiniGame.Scripts
if (effect != null) effect.SetActive(true);
break;
case Type.Obstacle:
break;
case Type.Hole:
case Type.Wall:
default:
throw new ArgumentOutOfRangeException();
}