2重ヒットストップ解決, 倍速時のSE鳴らないのを改善

This commit is contained in:
kimura 2022-07-26 09:33:36 +09:00
parent 1c3496c2e4
commit 5da9325298
2 changed files with 18 additions and 23 deletions

View File

@ -2967,18 +2967,4 @@ AnimationClip:
script: {fileID: 0}
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events:
- time: 0
functionName: OnPlaySE
data: se_minigame_Collide
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.33333334
functionName: OnPlaySE
data: se_minigame_FallDown
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
m_Events: []

View File

@ -193,12 +193,21 @@ namespace MyGame.Scenes.MiniGame.Scripts
// こける
public void Hit(Vector3 hitPos)
{
if (isHit)
if (isHit && !isHole)
{
return;
}
Instantiate(hitEffectPrefab, hitPos, Quaternion.identity, transform.parent);
if (isHit && isHole)
{
endHitSubject.OnNext(Unit.Default);
}
else
{
Instantiate(hitEffectPrefab, hitPos, Quaternion.identity, transform.parent);
SoundManager.Instance.PlaySE("se_minigame_Collide");
}
isHit = true;
isHitStop = true;
hitCompositeDisposable.Clear();
@ -207,7 +216,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
animator?.Play("Brother_pink_FallDown", 0, 0f);
animator.speed = 0f;
var hitStopTimer = Observable.Timer(TimeSpan.FromSeconds(hitStopTime)).Share();
var hitStopTimer = Observable.Timer(TimeSpan.FromSeconds(isHit && isHole ? 0f : hitStopTime)).Share();
hitStopTimer.Subscribe(_ =>
{
isHitStop = false;
@ -228,12 +237,12 @@ namespace MyGame.Scenes.MiniGame.Scripts
// 落下時間不定によりアニメ再生停止
animator.speed = 0f;
currentFallSpeed = 0f;
FallDown(basePos.y, () =>
FallDown(groundPos, () =>
{
// 31フレームまでが落下32からズサー
SoundManager.Instance.PlaySE("se_minigame_FallDown");
animator?.PlayInFixedTime("Brother_pink_FallDown", 0, .5f);
animator.speed = currentSpeedMultiply;
transform.SetLocalPositionY(groundPos);
currentFallSpeed = 0f;
isJump = false;
isFall = false;
@ -255,7 +264,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
}
}).AddTo(hitCompositeDisposable);
}).AddTo(hitCompositeDisposable);
}).AddTo(jumpCompositeDisposable);
}).AddTo(hitCompositeDisposable);
}).AddTo(hitCompositeDisposable);
}
@ -265,7 +274,6 @@ namespace MyGame.Scenes.MiniGame.Scripts
isHole = true;
isFall = true;
isJump = false;
isHit = false;
isHitStay = false;
hitCompositeDisposable.Clear();
@ -288,7 +296,8 @@ namespace MyGame.Scenes.MiniGame.Scripts
.Subscribe(_ =>
{
currentFallSpeed -= fallAcceleration * Time.deltaTime * currentSpeedMultiply;
transform.AddLocalPositionY(currentFallSpeed * Time.deltaTime * currentSpeedMultiply);
var newYPos = transform.localPosition.y + currentFallSpeed * Time.deltaTime * currentSpeedMultiply;
transform.SetLocalPositionY(Mathf.Max(baseYPos, newYPos));
}, onComplete);
}