memo

ゲーム制作やデザインについての個人的メモ

【ティラノスクリプト】レイヤーモード改造

f:id:onigirimgmg:20170507223942p:plain

レイヤーモードで合成した画像って標準のままだとずらっとリピート表示されちゃうので、それを防ぐ&縦横位置を指定するパラメータを追加する改造をしました。自分用です。本体の改造は自己責任でお願いしますー。

tyrano>plugins>kag>kag.tag.js

tyrano.plugin.kag.tag.layermode = {
vital: [],
pm: {
name: "",
graphic: "",
color: "",
mode: "multiply",
folder: "",
opacity: "",
time: "500",
wait: "true", // カンマ忘れない
// 追加ここから
x: "0",
y: "0"
// 追加ここまで
},
start: function(pm) {
this.kag.ftag.hideNextImg();
var that = this;
var blend_layer = null;
blend_layer = $("<div class='layer_blend_mode blendlayer' style='display:none;position:absolute;width:100%;height:100%;z-index:10'></div>");
if (pm.name != "") blend_layer.addClass("layer_blend_" + pm.name);
if (pm.color != "") blend_layer.css("background-color", $.convertColor(pm.color));
if (pm.opacity !=
"") blend_layer.css("opacity", $.convertOpacity(pm.opacity));
if (pm.folder != "") folder = pm.folder;
else folder = "image";
var storage_url = "";
if (pm.graphic != "") {
storage_url = "./data/" + folder + "/" + pm.graphic;
blend_layer.css("background-image", "url(" + storage_url + ")"); // セミコロン忘れない
// 追加ここから
blend_layer.css("background-repeat", "no-repeat");
blend_layer.css("background-position", pm.x + "px " + pm.y + "px");
// 追加ここまで
}
blend_layer.css("mix-blend-mode", pm.mode);
$("#tyrano_base").append(blend_layer);
if (pm.graphic != "") this.kag.preload(storage_url, function() {
blend_layer.fadeIn(parseInt(pm.time), function() {
if (pm.wait == "true") that.kag.ftag.nextOrder()
})
});
else blend_layer.fadeIn(parseInt(pm.time),
function() {
if (pm.wait == "true") that.kag.ftag.nextOrder()
});
if (pm.wait == "false") this.kag.ftag.nextOrder()
}
};

赤字が追記部分です。

使うときはこんな感じ。

[layermode name="akane" graphic="chara/akane/normal.png" folder=fgimage mode=overlay time=100 x=280 y=40]

実行結果

f:id:onigirimgmg:20170507224103p:plain

画像がリピートされなくなり、指定した位置に表示されるようになりました。