スピードアップ対応
This commit is contained in:
parent
77b443f8e8
commit
0e4891a2d9
|
|
@ -1023,6 +1023,21 @@ PrefabInstance:
|
|||
propertyPath: fallAcceleration
|
||||
value: 30
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
|
||||
type: 3}
|
||||
propertyPath: hardSpeedMultiply
|
||||
value: 1.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
|
||||
type: 3}
|
||||
propertyPath: extraSpeedMultiply
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
|
||||
type: 3}
|
||||
propertyPath: normalSpeedMultiply
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
|
||||
type: 3}
|
||||
propertyPath: hitAnimationCurve.m_PostInfinity
|
||||
|
|
@ -1434,7 +1449,7 @@ MonoBehaviour:
|
|||
- {fileID: 2044773546}
|
||||
- {fileID: 184442867}
|
||||
- {fileID: 628830308}
|
||||
bgWidth: 17.66
|
||||
bgWidth: 17.6
|
||||
bgOffset: 0
|
||||
holeWidth: 0
|
||||
--- !u!114 &1657044091
|
||||
|
|
|
|||
|
|
@ -211,6 +211,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
|||
stageManager.Difficulty.SkipLatestValueOnSubscribe().Subscribe(x =>
|
||||
{
|
||||
bgManager.SetSky(x);
|
||||
player.SetSpeed(x);
|
||||
}).AddTo(this);
|
||||
|
||||
player.OnHitItem.Where(_ => state.Value == GameState.Play).Subscribe(x =>
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
|||
public class Player : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private float speed = 5f;
|
||||
[SerializeField] private float normalSpeedMultiply;
|
||||
[SerializeField] private float hardSpeedMultiply;
|
||||
[SerializeField] private float extraSpeedMultiply;
|
||||
[SerializeField] private float hitJumpTime = 1f;
|
||||
[SerializeField] private float hitTime = 1.5f;
|
||||
[SerializeField] private float hitWaitTime = 1f;
|
||||
|
|
@ -35,6 +38,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
|||
private bool isWall;
|
||||
private bool isResult;
|
||||
private float currentFallSpeed;
|
||||
private float currentSpeedMultiply;
|
||||
public bool IsHit => isHit;
|
||||
private readonly CompositeDisposable jumpCompositeDisposable = new CompositeDisposable();
|
||||
private readonly CompositeDisposable hitCompositeDisposable = new CompositeDisposable();
|
||||
|
|
@ -70,6 +74,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
|||
isHole = false;
|
||||
isWall = false;
|
||||
isResult = false;
|
||||
currentSpeedMultiply = 1f;
|
||||
}
|
||||
|
||||
private void Stay(bool force = false)
|
||||
|
|
@ -87,7 +92,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
|||
{
|
||||
return;
|
||||
}
|
||||
transform.AddPositionX(speed * Time.deltaTime);
|
||||
transform.AddPositionX(speed * Time.deltaTime * currentSpeedMultiply);
|
||||
if (isJump || isHit || isFall)
|
||||
{
|
||||
return;
|
||||
|
|
@ -108,7 +113,8 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
|||
isFall = false;
|
||||
var lastFrame = jumpAnimationCurve[jumpAnimationCurve.length - 1];
|
||||
// 最高点までのジャンプ
|
||||
var jumpCoroutine = MonoBehaviourExtensions.DoCallLerp(lastFrame.time, t =>
|
||||
var jumpTime = lastFrame.time / currentSpeedMultiply;
|
||||
var jumpCoroutine = MonoBehaviourExtensions.DoCallLerp(jumpTime, t =>
|
||||
{
|
||||
transform.SetLocalPositionY(basePos.y + jumpAnimationCurve.Evaluate(t * lastFrame.time));
|
||||
}, () =>
|
||||
|
|
@ -118,7 +124,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
|||
isFall = true;
|
||||
});
|
||||
// 通常落下
|
||||
var jumpFallCoroutine = MonoBehaviourExtensions.DoCallLerp(lastFrame.time, t =>
|
||||
var jumpFallCoroutine = MonoBehaviourExtensions.DoCallLerp(jumpTime, t =>
|
||||
{
|
||||
transform.SetLocalPositionY(basePos.y + jumpAnimationCurve.Evaluate((t + 1) * lastFrame.time));
|
||||
}, () =>
|
||||
|
|
@ -159,10 +165,10 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
|||
else
|
||||
{
|
||||
animator.Play("Brother_pink_Glideing_Cancel");
|
||||
currentFallSpeed -= fallAcceleration * Time.deltaTime;
|
||||
currentFallSpeed -= fallAcceleration * Time.deltaTime * currentSpeedMultiply;
|
||||
}
|
||||
|
||||
transform.AddLocalPositionY(currentFallSpeed * Time.deltaTime);
|
||||
transform.AddLocalPositionY(currentFallSpeed * Time.deltaTime * currentSpeedMultiply);
|
||||
}, () =>
|
||||
{
|
||||
currentFallSpeed = 0f;
|
||||
|
|
@ -201,17 +207,11 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
|||
// 落下時間不定によりアニメ再生停止
|
||||
animator.speed = 0f;
|
||||
currentFallSpeed = 0f;
|
||||
this.UpdateAsObservable()
|
||||
.TakeWhile(_ => transform.localPosition.y > basePos.y)
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
currentFallSpeed -= fallAcceleration * Time.deltaTime;
|
||||
transform.AddLocalPositionY(currentFallSpeed * Time.deltaTime);
|
||||
}, () =>
|
||||
FallDown(basePos.y, () =>
|
||||
{
|
||||
// 31フレームまでが落下32からズサー
|
||||
animator?.PlayInFixedTime("Brother_pink_FallDown", 0, .5f);
|
||||
animator.speed = 1f;
|
||||
animator.speed = currentSpeedMultiply;
|
||||
transform.SetLocalPositionY(groundPos);
|
||||
currentFallSpeed = 0f;
|
||||
isJump = false;
|
||||
|
|
@ -234,7 +234,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
|||
}
|
||||
}).AddTo(hitCompositeDisposable);
|
||||
}).AddTo(hitCompositeDisposable);
|
||||
}).AddTo(hitCompositeDisposable);
|
||||
}).AddTo(jumpCompositeDisposable);
|
||||
}).AddTo(hitCompositeDisposable);
|
||||
}
|
||||
|
||||
|
|
@ -249,13 +249,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
|||
|
||||
hitCompositeDisposable.Clear();
|
||||
jumpCompositeDisposable.Clear();
|
||||
this.UpdateAsObservable()
|
||||
.TakeWhile(_ => transform.localPosition.y > fallLimit)
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
currentFallSpeed -= fallAcceleration * Time.deltaTime;
|
||||
transform.AddLocalPositionY(currentFallSpeed * Time.deltaTime);
|
||||
}, () =>
|
||||
FallDown(fallLimit, () =>
|
||||
{
|
||||
isFall = false;
|
||||
currentFallSpeed = 0f;
|
||||
|
|
@ -266,11 +260,34 @@ namespace MyGame.Scenes.MiniGame.Scripts
|
|||
}).AddTo(jumpCompositeDisposable);
|
||||
}
|
||||
|
||||
private IDisposable FallDown(float baseYPos, Action onComplete)
|
||||
{
|
||||
return this.UpdateAsObservable()
|
||||
.TakeWhile(_ => transform.localPosition.y > baseYPos)
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
currentFallSpeed -= fallAcceleration * Time.deltaTime * currentSpeedMultiply;
|
||||
transform.AddLocalPositionY(currentFallSpeed * Time.deltaTime * currentSpeedMultiply);
|
||||
}, onComplete);
|
||||
}
|
||||
|
||||
public void Wall()
|
||||
{
|
||||
isWall = true;
|
||||
}
|
||||
|
||||
public void SetSpeed(ScrollGameDifficulty difficulty)
|
||||
{
|
||||
currentSpeedMultiply = difficulty switch
|
||||
{
|
||||
ScrollGameDifficulty.Easy => 1f,
|
||||
ScrollGameDifficulty.Normal => normalSpeedMultiply,
|
||||
ScrollGameDifficulty.Hard => hardSpeedMultiply,
|
||||
ScrollGameDifficulty.Extra => extraSpeedMultiply,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(difficulty), difficulty, null)
|
||||
};
|
||||
}
|
||||
|
||||
public void Result()
|
||||
{
|
||||
if (isJump || isHit || isFall)
|
||||
|
|
|
|||
Loading…
Reference in New Issue