立ち絵について

立ち絵は character.jsonportraits で定義し、イベント内では portrait / custom_portrait_path / character_show などで表示します。

ページ概要

  • 対象ファイル: character.json, events/*.json
  • 役割: 立ち絵(portraits)を登録し、イベント側で portrait(ドット記法/季節マップ)や custom_portrait_path で表示します。
  • どこで使われるか: キャラクター表示、会話シーン、キャラクター固定表示(character_show
  • 最小構成: spring.casual.normal を1枚登録(このページの「必須立ち絵」)
  • よくあるミス: ドット記法の間違い、必須立ち絵未定義、effectsのキー誤り

必須立ち絵

必須: spring.casual.normal は必ず用意してください(ないとバリデーションエラーで選択不可になりやすい)。

portraits/
└── spring/
    └── casual/
        └── normal.png

character.jsonでの定義

"portraits": {
  "spring": {
    "casual": {
      "normal": "portraits/spring/casual/normal.png",
      "happy": "portraits/spring/casual/happy.png"
    }
  }
}

dialogueでの指定

portrait は以下の形式に対応します。

  • ドット記法: "casual.happy"
  • 季節マップ: {"spring":"casual.happy","default":"casual.normal"}
{
  "scene_id": "s01",
  "type": "dialogue",
  "character": "my_char",
  "portrait": "casual.happy",
  "text_ja": "こんにちは!",
  "text_en": "Hello!"
}

複数キャラクター表示(character_show / character_hide)

会話に加えて「画面上に立ち絵を固定で出す」用途に使います。

表示

{
  "scene_id": "s10",
  "type": "character_show",
  "character": "my_char",
  "portrait": "casual.normal",
  "position": "center"
}

非表示

{
  "scene_id": "s11",
  "type": "character_hide",
  "character": "my_char"
}

character を省略すると全キャラクター非表示になります。

表示位置

positionleft / center / right のいずれかです。

エフェクト(拡大・位置補正・色調など)

多くのシーンで effects を指定できます(立ち絵の見せ方を調整)。

{
  "scene_id": "s20",
  "type": "character_show",
  "character": "my_char",
  "portrait": "casual.happy",
  "position": "right",
  "effects": {
    "scale": 1.2,
    "offset_x": 50.0,
    "offset_y": -30.0,
    "brightness": 1.0,
    "opacity": 1.0
  }
}

調整のコツ

  • scale は小さく始める(例: 1.05〜1.2)
  • offset_y はマイナスで上に移動(顔が切れる/下に沈む対策)
  • 同じ立ち絵でも、ポーズや余白次第で補正値が変わります

直接パス指定(custom_portrait_path)

イベント専用の立ち絵など、定義ツリーに入れない場合は直接パス指定もできます。

{
  "scene_id": "s30",
  "type": "dialogue",
  "character": "my_char",
  "custom_portrait_path": "portraits/event/yukata_happy.png",
  "text_ja": "どう?似合う?",
  "text_en": "How do I look?"
}