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

RPGツクールMVのJavascriptまたはそれらに関連する言語や環境などの技術的な話題を扱います。
フォーラムルール
参加者または第三者に対する誹謗中傷は厳禁です。言葉遣いにも気をつけましょう。
不適切な発言、著作権を侵害する投稿があった場合は当該ポストを断りなく消去することがあります。
ヱビ@名前が2文字

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

投稿記事by ヱビ@名前が2文字 » 2015年11月27日(金) 21:07

初めまして。海外の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ツクールで直線を描くにはどうしたらいいのでしょうか?

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

ヱビ@名前が2文字

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

投稿記事by ヱビ@名前が2文字 » 2015年11月28日(土) 14:48

自己解決しました。
PIXI.Graphicsを使うのをやめ、線の画像を用意してSpriteを伸ばしたり回転させたりして実現しました。

galanti
Site Admin
記事: 16
登録日時: 2015年11月10日(火) 01:09

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

投稿記事by galanti » 2015年11月29日(日) 00:03

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

ヱビ@名前が2文字

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

投稿記事by ヱビ@名前が2文字 » 2015年11月30日(月) 08:13

詳しく解答してくださりありがとうございます。
勉強になりました。


“Javascript技術” へ戻る