ヒット動作修正

This commit is contained in:
kimura 2022-07-21 14:51:21 +09:00
parent ed0586a6c2
commit bfda466583
2 changed files with 120 additions and 66 deletions

View File

@ -417,7 +417,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: bedef2aeaac8da04faa9a07b7241d0ad, type: 3} m_Script: {fileID: 11500000, guid: bedef2aeaac8da04faa9a07b7241d0ad, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
mTarget: {fileID: 4559813503860727176} mTarget: {fileID: 0}
--- !u!224 &475061233 stripped --- !u!224 &475061233 stripped
RectTransform: RectTransform:
m_CorrespondingSourceObject: {fileID: 7328251774731631637, guid: b46e011db918bbe42a91795497f90b9c, m_CorrespondingSourceObject: {fileID: 7328251774731631637, guid: b46e011db918bbe42a91795497f90b9c,
@ -1392,16 +1392,91 @@ PrefabInstance:
propertyPath: fallSpeed propertyPath: fallSpeed
value: 0.07 value: 0.07
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitJumpTime
value: 0.3
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028, - target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3} type: 3}
propertyPath: fallAcceleration propertyPath: fallAcceleration
value: 30 value: 30
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_PostInfinity
value: 2
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.size
value: 2
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.data[0].time
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.data[1].time
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.data[0].value
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.data[1].value
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028, - target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3} type: 3}
propertyPath: jumpAnimationCurve.m_Curve.Array.data[1].value propertyPath: jumpAnimationCurve.m_Curve.Array.data[1].value
value: 6.5 value: 6.5
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.data[0].inSlope
value: 2.4237015
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.data[1].inSlope
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.data[0].outSlope
value: 2.4237015
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.data[1].inWeight
value: 0.33333334
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.data[1].outSlope
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.data[0].outWeight
value: 0.04351728
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.data[0].tangentMode
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2607884839347368726, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3}
propertyPath: hitAnimationCurve.m_Curve.Array.data[1].tangentMode
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4931350312200274921, guid: acd6e6365b5fe4863aedc684a50b8028, - target: {fileID: 4931350312200274921, guid: acd6e6365b5fe4863aedc684a50b8028,
type: 3} type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
@ -1826,7 +1901,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: bedef2aeaac8da04faa9a07b7241d0ad, type: 3} m_Script: {fileID: 11500000, guid: bedef2aeaac8da04faa9a07b7241d0ad, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
mTarget: {fileID: 4559813503860727175} mTarget: {fileID: 0}
--- !u!1 &1450368325 --- !u!1 &1450368325
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2176,7 +2251,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: bedef2aeaac8da04faa9a07b7241d0ad, type: 3} m_Script: {fileID: 11500000, guid: bedef2aeaac8da04faa9a07b7241d0ad, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
mTarget: {fileID: 4559813503860727174} mTarget: {fileID: 0}
--- !u!1001 &1862591111 --- !u!1001 &1862591111
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2723,7 +2798,7 @@ PrefabInstance:
- target: {fileID: 2233378810729895866, guid: 4700f2d6cab15484295a1f9b42d78ec9, - target: {fileID: 2233378810729895866, guid: 4700f2d6cab15484295a1f9b42d78ec9,
type: 3} type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 1 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2233378810729895866, guid: 4700f2d6cab15484295a1f9b42d78ec9, - target: {fileID: 2233378810729895866, guid: 4700f2d6cab15484295a1f9b42d78ec9,
type: 3} type: 3}
@ -3111,42 +3186,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
--- !u!114 &4559813503860727174 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4559813505704525543, guid: 041c0f3d96c90d64094cc76c5c87c26f,
type: 3}
m_PrefabInstance: {fileID: 4559813503860727169}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &4559813503860727175 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4559813504388152431, guid: 041c0f3d96c90d64094cc76c5c87c26f,
type: 3}
m_PrefabInstance: {fileID: 4559813503860727169}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &4559813503860727176 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4559813505652122421, guid: 041c0f3d96c90d64094cc76c5c87c26f,
type: 3}
m_PrefabInstance: {fileID: 4559813503860727169}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &5034752974072861411 --- !u!1001 &5034752974072861411
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -8,7 +8,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
public class Player : MonoBehaviour public class Player : MonoBehaviour
{ {
[SerializeField] private float speed = 5f; [SerializeField] private float speed = 5f;
[SerializeField] private float fallTime = 1f; [SerializeField] private float hitJumpTime = 1f;
[SerializeField] private float hitTime = 1.5f; [SerializeField] private float hitTime = 1.5f;
[SerializeField] private float hitWaitTime = 1f; [SerializeField] private float hitWaitTime = 1f;
[SerializeField] private AnimationCurve jumpAnimationCurve; [SerializeField] private AnimationCurve jumpAnimationCurve;
@ -164,43 +164,58 @@ namespace MyGame.Scenes.MiniGame.Scripts
} }
Instantiate(hitEffectPrefab, hitPos, Quaternion.identity, transform.parent); Instantiate(hitEffectPrefab, hitPos, Quaternion.identity, transform.parent);
SoundManager.Instance.PlaySE("se_minigame_Collide");
animator?.Play("Brother_pink_FallDown"); animator?.Play("Brother_pink_FallDown");
isHit = true; isHit = true;
hitDisposable?.Dispose(); hitDisposable?.Dispose();
// ヒット以外動作停止
this.SafeStopCoroutine(jumpCoroutine); this.SafeStopCoroutine(jumpCoroutine);
this.SafeStopCoroutine(jumpFallCoroutine); this.SafeStopCoroutine(jumpFallCoroutine);
jumpHoldDisposable?.Dispose(); jumpHoldDisposable?.Dispose();
var diffHeight = transform.localPosition.y - basePos.y;
jumpCoroutine = this.CallLerp(diffHeight == 0f ? 0f : fallTime, t => var cachePosY = transform.localPosition.y;
var diffHeight = cachePosY - basePos.y;
jumpCoroutine = this.CallLerp(diffHeight == 0f ? 0f : hitJumpTime, t =>
{ {
transform.SetLocalPositionY(basePos.y + hitAnimationCurve.Evaluate(t) * diffHeight); transform.SetLocalPositionY(cachePosY + hitAnimationCurve.Evaluate(t));
}, () => }, () =>
{ {
isJump = false; // 落下時間不定によりアニメ再生停止
isFall = false; animator.speed = 0f;
isFlying = false; var currentSpeed = 0f;
SoundManager.Instance.PlaySE("se_minigame_FallDown"); this.UpdateAsObservable()
this.CallLerp(hitTime, t => .TakeWhile(_ => transform.localPosition.y > basePos.y)
{ .Subscribe(_ =>
}, () =>
{
isHitStay.Value = true;
this.CallWaitForSeconds(hitWaitTime, () =>
{ {
isHit = false; currentSpeed -= fallAcceleration * Time.deltaTime;
isHitStay.Value = false; transform.AddLocalPositionY(currentSpeed * Time.deltaTime);
if (isResult) }, () =>
{
// 31フレームまでが落下32からズサー
animator?.PlayInFixedTime("Brother_pink_FallDown", 0, .5f);
animator.speed = 1f;
transform.SetLocalPositionY(basePos.y);
isJump = false;
isFall = false;
isFlying = false;
this.CallWaitForSeconds(hitTime, () =>
{ {
Result(); isHitStay.Value = true;
} this.CallWaitForSeconds(hitWaitTime, () =>
else {
{ isHit = false;
Stay(); isHitStay.Value = false;
} if (isResult)
}); {
}); Result();
}
else
{
Stay();
}
});
});
}).AddTo(this);
}); });
} }