The fundamental hit object in taiko - a single drum hit at a specific time.Source:osu.Game.Rulesets.Taiko/Objects/Hit.cs:14
public class Hit : TaikoStrongableHitObject, IHasDisplayColour{ public HitType Type { get; set; } // Centre or Rim public Bindable<Color4> DisplayColour { get; } = new Bindable<Color4>(COLOUR_CENTRE); public static readonly Color4 COLOUR_CENTRE = Color4Extensions.FromHex(@"bb1177"); // Red/Pink public static readonly Color4 COLOUR_RIM = Color4Extensions.FromHex(@"2299bb"); // Blue}
Sustained objects that generate ticks to be hit rapidly.Source:osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs:16
public class DrumRoll : TaikoStrongableHitObject, IHasPath{ public double Duration { get; set; } public double Velocity { get; private set; } public int TickRate = 1; // Ticks per beat private double tickSpacing = 100; // Time between ticks}
public override IEnumerable<HitResult> GetValidHitResults(){ return new[] { HitResult.Great, // Perfect hit (within great window) HitResult.Ok, // Good hit (within ok window) HitResult.Miss, // Missed or hit too early/late HitResult.SmallBonus, // Drum roll tick hit HitResult.LargeBonus, // Strong hit bonus HitResult.IgnoreHit, HitResult.IgnoreMiss, };}
Taiko is a scrolling mode - objects move from right to left:
yield return new RulesetBeatmapAttribute("Scroll Speed", @"SS", 1f, (float)(effectiveDifficulty.SliderMultiplier / originalDifficulty.SliderMultiplier), 4){ Description = "Multiplier applied to the baseline scroll speed of the playfield when no mods are active."};
public override IEnumerable<KeyBinding> GetDefaultKeyBindings(int variant = 0) => new[]{ new KeyBinding(InputKey.MouseRight, TaikoAction.LeftRim), new KeyBinding(InputKey.D, TaikoAction.LeftRim), new KeyBinding(InputKey.MouseLeft, TaikoAction.LeftCentre), new KeyBinding(InputKey.F, TaikoAction.LeftCentre), new KeyBinding(InputKey.J, TaikoAction.RightCentre), new KeyBinding(InputKey.K, TaikoAction.RightRim),};
Strong hits require simultaneous input from both drum sides:
public class StrongNestedHit : StrongNestedHitObject{ // The strong hit of the drum roll doesn't provide score public override Judgement CreateJudgement() => new IgnoreJudgement(); public StrongNestedHit(TaikoHitObject parent) : base(parent) { }}