diff --git a/osu.Game.Rulesets.Taiko/Mods/TaikoModClassic.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoModClassic.cs
index 5a6f57bc36..d18b88761d 100644
--- a/osu.Game.Rulesets.Taiko/Mods/TaikoModClassic.cs
+++ b/osu.Game.Rulesets.Taiko/Mods/TaikoModClassic.cs
@@ -16,6 +16,9 @@ namespace osu.Game.Rulesets.Taiko.Mods
{
drawableTaikoRuleset = (DrawableTaikoRuleset)drawableRuleset;
drawableTaikoRuleset.LockPlayfieldAspect.Value = false;
+
+ var playfield = (TaikoPlayfield)drawableRuleset.Playfield;
+ playfield.ClassicHitTargetPosition.Value = true;
}
public void Update(Playfield playfield)
diff --git a/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs b/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs
index 504b10e9bc..f2fa63c99e 100644
--- a/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs
+++ b/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs
@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using osu.Framework.Allocation;
+using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Pooling;
@@ -31,6 +32,11 @@ namespace osu.Game.Rulesets.Taiko.UI
///
public const float DEFAULT_HEIGHT = 200;
+ ///
+ /// Whether the hit target should be nudged further towards the left area, matching the stable "classic" position.
+ ///
+ public Bindable ClassicHitTargetPosition = new BindableBool();
+
private Container hitExplosionContainer;
private Container kiaiExplosionContainer;
private JudgementContainer judgementContainer;
@@ -190,7 +196,7 @@ namespace osu.Game.Rulesets.Taiko.UI
// Padding is required to be updated for elements which are based on "absolute" X sized elements.
// This is basically allowing for correct alignment as relative pieces move around them.
- rightArea.Padding = new MarginPadding { Left = leftArea.DrawWidth };
+ rightArea.Padding = new MarginPadding { Left = leftArea.DrawWidth - (ClassicHitTargetPosition.Value ? 45 : 0) };
hitTargetOffsetContent.Padding = new MarginPadding { Left = HitTarget.DrawWidth / 2 };
mascot.Scale = new Vector2(DrawHeight / DEFAULT_HEIGHT);