Skip to content
Arkueid edited this page Mar 27, 2025 · 5 revisions

播放动作的函数有:LAppModel.StartRandomMotionLAppModel.StartMotion

点击触发

鼠标点击时调用 LAppModelHitTest 方法检测 model3.json 中定义的 HitArea 是否被点击,如果被点击则播放对应的动作或设置表情。传入的参数为鼠标点击位置在窗口坐标系的坐标,即以绘图窗口左上角为原点,右和下为正方向的坐标系。

# 如果鼠标点击位置是可触发动作区域,且对应动作被触发,
# 则会在动作开始播放前调用该函数
x, y = pygame.mouse.get_pos()
if model.HitTest("Body", x, y):  # hit area 检测
    model.StartRandomMotion("TapBody")
elif model.HitTest("Head", x, y):  # hit area 检测
    model.SetRandomExpression()
elif "Part01" in model.HitPart(x, y):  # 部件检测
    model.StartRandomMotion("other motion group name")

直接播放

# 动作开始播放前调用该函数
def onStartCallback(group: str, no: int):
    print(f"touched and motion [{group}_{no}] is started")

# 动作播放结束后会调用该函数
def onFinishCallback():
    print("motion finished")

# 播放名称为 Idle 的动作组中第一个动作
model.StartMotion("Idle", 0, MotionPriority.FORCE, onStartCallback, onFinishCallback)
Clone this wiki locally