本文へスキップ
Combat Design

Combat Telegraphs and Hit Feedback Basics

A beginner-friendly guide to attack wind-ups, dodge readability, and damage feedback that makes combat easier to understand without making it trivial.

公開日: 2026-06-28#Combat Design#Telegraphs#Hit Feedback#Beginner

Quick Start

Start with a tiny working version

Good combat feedback is not mainly about spectacle. It is about helping players understand what is happening quickly enough to learn from it.

Build it in small code pieces

1. 値を用意する

Inspectorで変更できる値と表示先を置きます。

HitTelegraphTutorial.cs
csharp
    [SerializeField] private TextMeshProUGUI statusText;
    [SerializeField] private float warningSeconds = 1f;
    [SerializeField] private float hitWindow = 2f;
    [SerializeField] private float flashStrength = 3f;

2. 状態を変える

ボタンを押した時に、1つだけ状態を進めます。

HitTelegraphTutorial.cs
csharp
    public void NextStep()
    {
        step = (step + 1) % 3;
        var label = step == 0 ? "予告を出す" : step == 1 ? "当たり判定を出す" : "被弾を伝える";
        if (statusText != null)
        {
            statusText.text = $"{label}\nwarningSeconds={warningSeconds:0.##}\nhitWindow={hitWindow:0.##}\nflashStrength={flashStrength:0.##}";
        }

3. 画面に表示する

変わった結果を画面に出して確認します。

HitTelegraphTutorial.cs
csharp
        if (statusText != null)
        {
            statusText.text = $"{label}\nwarningSeconds={warningSeconds:0.##}\nhitWindow={hitWindow:0.##}\nflashStrength={flashStrength:0.##}";
        }
        Debug.Log($"攻撃予告と被弾フィードバック: {label}");

Complete script

HitTelegraphTutorial.cs
csharp
using UnityEngine;
using TMPro;

public class HitTelegraphTutorial : MonoBehaviour
{
    [SerializeField] private TextMeshProUGUI statusText;
    [SerializeField] private float warningSeconds = 1f;
    [SerializeField] private float hitWindow = 2f;
    [SerializeField] private float flashStrength = 3f;

    private int step;

    public void NextStep()
    {
        step = (step + 1) % 3;
        var label = step == 0 ? "予告を出す" : step == 1 ? "当たり判定を出す" : "被弾を伝える";
        if (statusText != null)
        {
            statusText.text = $"{label}\nwarningSeconds={warningSeconds:0.##}\nhitWindow={hitWindow:0.##}\nflashStrength={flashStrength:0.##}";
        }
        Debug.Log($"攻撃予告と被弾フィードバック: {label}");
    }
}

Inspector

Connect the UI reference in the Inspector, then use the button to confirm each value changes.

Summary

What to take away

A beginner-friendly guide to attack wind-ups, dodge readability, and damage feedback that makes combat easier to understand without making it trivial.

The page is designed to help you move from reading to a small practical decision. Use the checklist above before jumping into the next related article.