-
Notifications
You must be signed in to change notification settings - Fork 37
动作播放
Arkueid edited this page Mar 27, 2025
·
5 revisions
播放动作的函数有:LAppModel.StartRandomMotion
,LAppModel.StartMotion
鼠标点击时调用 LAppModel
的 HitTest
方法检测 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)