以下のリファレンスを見て、サンプルコードを作成していますね。
https://dxlib.xsrv.jp/function/dxfunc_live2D_cubism4.html
私も昨日、初めてLive2D関連をインストールして動かしてみただけなので、
詳しいわけではないですが、意図したとおりに動いている模様。
マニュアルやSDKがきちんと整備されているはありがたい。
#include "DxLib.as"
#uselib "user32.dll"
#func SetProcessDPIAware "SetProcessDPIAware"
WINDOW_SIZE_W = 480
WINDOW_SIZE_H = 720
// 高DPI環境だと、先にSetProcessDPIAwareを実行しないとタイトルバーが描画されないケースあり
SetProcessDPIAware
screen 0, WINDOW_SIZE_W, WINDOW_SIZE_H
SetUserWindow hwnd
SetUserWindowMessageProcessDXLibFlag 0
ChangeWindowMode TRUE
Live2D_SetCubism4CoreDLLPath "Live2DCubismCore.dll"
if (stat == -1) {
dialog "Live2DCubismCore.dll が読み込めませんでした"
end
}
DxLib_Init
if (stat == -1) {
dialog "初期化エラー"
end
}
// Live2Dモデルの読み込み
Live2D_LoadModel "hiyori_free_jp/runtime/hiyori_free_t08.model3.json"
if (stat == -1) {
dialog "モデルロードエラー"
end
}
ModelHandle = stat
title "マウスカーソルを移動すると目線も移動します"
// 拡大
Live2D_Model_SetExtendRate ModelHandle, 3.0, 3.0
SetDrawScreen DX_SCREEN_BACK
cx = 0 : cy = 0
repeat
// 背景描画
GetColor 0, 0, 0
DrawBox 0 ,0, WINDOW_SIZE_W, WINDOW_SIZE_H, stat, 1
// モーション再生が終了していたらアイドリングモーションをランダムで再生
Live2D_Model_IsMotionFinished ModelHandle
if (stat == TRUE) {
GetRand 8
rndVal = stat
Live2D_Model_StartMotion ModelHandle, "Idle", rndVal
}
// マウスの座標
normalized_x = (1.0 * mousex - WINDOW_SIZE_W/2) / (1.0 * WINDOW_SIZE_W/2) * 10.0
normalized_y = (1.0 * WINDOW_SIZE_H/2 - mousey) / (1.0 * WINDOW_SIZE_H/2) * 10.0
// title strf("%2.2fx%2.2f", normalized_x, normalized_y)
Live2D_Model_SetParameterValue ModelHandle, "ParamAngleX", normalized_x // 角度X
Live2D_Model_SetParameterValue ModelHandle, "ParamEyeBallX", normalized_x // 目玉X
Live2D_Model_SetParameterValue ModelHandle, "ParamBodyAngleX", normalized_x // 体の回転X
Live2D_Model_SetParameterValue ModelHandle, "ParamAngleY", normalized_y // 角度Y
Live2D_Model_SetParameterValue ModelHandle, "ParamEyeBallY", normalized_y // 目玉Y
// モデルの状態を60分の1秒分進める
Live2D_Model_Update ModelHandle, 1.0 / 60.0
// Live2D描画の開始
Live2D_RenderBegin
// モデルの描画
Live2D_Model_Draw ModelHandle
// Live2D描画の終了
Live2D_RenderEnd
// 裏画面の内容を表画面に反映
ScreenFlip
// ESCキーで終了
CheckHitKey KEY_INPUT_ESCAPE
if (stat == TRUE) : break
ProcessMessage
if (stat < 0) : break
await 0
loop
goto *exit
stop
*exit
// Live2D モデルの削除
Live2D_DeleteModel ModelHandle
// DXライブラリ使用の終了処理
DxLib_End
end