Skip to content

Live2D / Spine Model

Firefly supports displaying Live2D or Spine mascot models on the page. Choose one of the two.

Config File

src/config/pioConfig.ts

Spine Model

Basic

PropertyTypeDefaultDescription
enablebooleanfalseEnable Spine mascot

Model

PropertyTypeDefaultDescription
model.pathstring-Spine model file path (.json)
model.scalenumber1.0Scale
model.xnumber0X offset
model.ynumber0Y offset

Position

PropertyTypeDefaultDescription
position.cornerstring"bottom-left"Position: "bottom-left" "bottom-right" "top-left" "top-right"
position.offsetXnumber0Horizontal offset
position.offsetYnumber0Vertical offset

Size

PropertyTypeDefaultDescription
size.widthnumber135Container width
size.heightnumber165Container height

Interaction

PropertyTypeDefaultDescription
interactive.enabledbooleantrueEnable interaction
interactive.clickAnimationsstring[]-Click animations
interactive.clickMessagesstring[]-Click messages
interactive.messageDisplayTimenumber3000Message display time (ms)
interactive.idleAnimationsstring[]-Idle animations
interactive.idleIntervalnumber8000Idle animation interval (ms)

Responsive

PropertyTypeDefaultDescription
responsive.hideOnMobilebooleantrueHide on mobile
responsive.mobileBreakpointnumber768Mobile breakpoint (px)

Other

PropertyTypeDefaultDescription
zIndexnumber1000Z-index
opacitynumber1.0Opacity (0-1)

Live2D Model

Basic

PropertyTypeDefaultDescription
enablebooleanfalseEnable Live2D mascot

Model

PropertyTypeDescription
model.pathstringLive2D model file path (model.json)

Position

PropertyTypeDefaultDescription
position.cornerstring"bottom-left"Display position
position.offsetXnumber0Horizontal offset
position.offsetYnumber0Vertical offset

Size

PropertyTypeDefaultDescription
size.widthnumber135Container width
size.heightnumber165Container height

Interaction

PropertyTypeDefaultDescription
interactive.enabledbooleantrueEnable interaction
interactive.clickMessagesstring[]-Click messages
interactive.messageDisplayTimenumber3000Message display time (ms)

INFO

Live2D model motions and expressions are automatically read from the model JSON file.

Responsive

PropertyTypeDefaultDescription
responsive.hideOnMobilebooleantrueHide on mobile
responsive.mobileBreakpointnumber768Mobile breakpoint (px)

Spine Full Example

ts
export const spineModelConfig: SpineModelConfig = {
  enable: true,
  model: {
    path: "/pio/models/spine/firefly/1310.json",
    scale: 1.0,
    x: 0,
    y: 0,
  },
  position: { corner: "bottom-left", offsetX: 0, offsetY: 0 },
  size: { width: 135, height: 165 },
  interactive: {
    enabled: true,
    clickAnimations: ["emoji_0", "emoji_1", "emoji_2"],
    clickMessages: ["Hello!", "Have a nice day!"],
    messageDisplayTime: 3000,
    idleAnimations: ["idle", "emoji_0"],
    idleInterval: 8000,
  },
  responsive: { hideOnMobile: true, mobileBreakpoint: 768 },
  zIndex: 1000,
  opacity: 1.0,
};

WARNING

Placing the model in the bottom-right corner may block the back-to-top button. Consider using "bottom-left".