ページ 11

RPGツクールで直線を引く方法を教えてください。

Posted: 2015年11月27日(金) 21:07
by ヱビ@名前が2文字
初めまして。海外のRPGMakerMVの体験版でプラグインを制作中のヱビと申します。

バトル画面で敵と味方を結ぶ線を引きたいと思い、色々調べものをしました。

・PIXI.Graphicsクラスは直線を引ける
・PIXI.GraphicsクラスはPIXI.StageにaddChildすると表示される
・RPGツクールMVのSceneはPIXI.Stageを継承している
・Scene_BattleはSpriteset_Battleを自分にaddChildしている
・PIXI.GraphicsはPIXI.SpriteにaddChildできる

ということがわかったので以下のようなコードを書きました。

コード: 全て選択

(function() {
   Spriteset_Battle_prototype_createLowerLayer = Spriteset_Battle.prototype.createLowerLayer;
   Spriteset_Battle.prototype.createLowerLayer = function() {
      Spriteset_Battle_prototype_createLowerLayer.call(this);
      var g = new PIXI.Graphics();
      g.lineStyle(6,0xffaaaa).moveTo(640,0).lineTo(640,600);
      this.addChild(g);
   }
})();


すると、画面の上と下の大部分が緑と赤の謎のグラデーションで覆い尽くされてしまいました。操作してみると下のグラデーションはどうやらコマンドなどを表示するウィンドウに色がついたもののようです。
デバッガーでエラーが起きたら止まるように設定しても止まりません。

どうしてこんなことになってしまうのでしょうか?
RPGツクールで直線を描くにはどうしたらいいのでしょうか?

わかる方、ご教授ください。

Re: RPGツクールで直線を引く方法を教えてください。

Posted: 2015年11月28日(土) 14:48
by ヱビ@名前が2文字
自己解決しました。
PIXI.Graphicsを使うのをやめ、線の画像を用意してSpriteを伸ばしたり回転させたりして実現しました。

Re: RPGツクールで直線を引く方法を教えてください。

Posted: 2015年11月29日(日) 00:03
by galanti
ウィンドウ上のグラデーションはポリゴンマスクのようです。PIXI.GraphicsのインスタンスをaddChildするとなぜかすべてのウィンドウにマスクがかかり、シーンが変わってもグラデーションが残り続けます。
WebGLでレンダリングした時のみ起こる現象で、Canvasレンダリングの時はグラデーションは起こらず、ちゃんと線だけ表示されます。
原因はrpg_core.jsの5888行目、WindowLayer.prototoype._webglMaskRectです。この関数でウィンドウ上にマスクをかけています。その結果ウィンドウが緑と赤に染まります。
もしウィンドウマスクを無効にしても問題ないなら、この関数を無効にしてもいいかもしれません。
なぜPIXI.Graphicsでウィンドウ全体にマスクがかかるのかはちょっとわかりませんでした。

Re: RPGツクールで直線を引く方法を教えてください。

Posted: 2015年11月30日(月) 08:13
by ヱビ@名前が2文字
詳しく解答してくださりありがとうございます。
勉強になりました。