movePictureでpictureフォルダの画像の表示できない

咲坂優摩2018-02-09に開始した「素材集/プラグイン」の中の討論

  1. 咲坂優摩

    咲坂優摩 ユーザー

    初めての投稿失礼致します。

    movePictureメソッドにてpictureフォルダ内に自分で追加した画像を表示する方法が分かりません。
    pictureIdをどうやって指定すれば良いのかも分からず、originではファイル形式を記述すれば良いのかしてはいけないのかもわかりません。
    どなたかご教授頂けたら幸いです。
     
    #1
    神無月サスケ がいいね!しました
  2. 神無月サスケ

    神無月サスケ ユーザー

    どうも、咲坂優摩さん、こん**は。
    ツクールMVの話ですね。
    結論から言うと、「最初に Game_Screen.prototype.showPicture メソッドを呼び出して下さい」となります。

    ツクールMVのスクリプトは、イベントコマンドに準じて書かれているので、
    まず、「ピクチャの表示」にあたる showPicture を行って、それから該当するピクチャの移動なり消去なりを行っています。

    よって、イベントコマンドで「ピクチャの表示」→「ピクチャの移動」をやると同様に、
    showPicture → movePicture と実行すれば、うまくいきます。

    なお、これらの関数、引数が多くて分かりづらいので、せっかくだから、紹介しておきます。
    ■showPicture の引数
    pictureId : ピクチャID (1~100)
    name : ピクチャのファイル名
    origin : 原点とする座標。左上なら 0 、中心なら1。
    x, y : 原点とする座標
    scaleX, scaleY : 表示拡大率(100で等倍表示。つまり50なら50%に縮小、200なら200%に拡大)
    opacity : 不透明度。通常は255、完全な透明は0、半透明は128など。
    blendMode : 通常なら0、加算なら1、など。通常は0で問題なし。
    ■movePicture の引数
    duration : 元の画像からその画像に変換するまでのフレーム数。(60フレームは1秒)

    以上、健闘を祈ります。
     
    #2
    咲坂優摩 がいいね!しました
  3. 咲坂優摩

    咲坂優摩 ユーザー

    返信ありがとうございます。
    言われた通り、イベントコマンドからスクリプトで

    変数の操作:#0041 主人公のx座標 = プレイヤーのマップX
    変数の操作:#0042 主人公のy座標 = プレイヤーのマップY
    条件分岐:スクリプト: Input.isTriggered('ok')
    スクリプト:$gameScreen.showPicture(1,'scope',0,$gameVariables.value(41) * 48,$gameVariables.value(42) * 48,100,100,255,0)

    と記述して実行したのですが、画像が表示されません。

    pictureフォルダには[scope.png]が確かに入っています。

    ピクチャの表示で表示するときちんと表示されるのですが、スクリプトで実行しようとしても
    表示してくれません。

    どうして実行されないのか分からず困っています。
    すいませんが、宜しかったらご教授下さい。
     
    #3
    神無月サスケ がいいね!しました
  4. 神無月サスケ

    神無月サスケ ユーザー

    どうも、ずばりお答えします。
    座標のx, yというのは、「画面上の座標」であって、「プレイヤーキャラのマップ上の相対位置」ではありません。
    プレイヤーのマップX * 48 、といった指定では、「マップ座標(0,0)からの相対位置」であって、
    画面上の座標にはならず、おそらく、画面の遥か右下にピクチャが表示されてしまっているはずです。

    以下のようにすれば、きっとお望みの動作になると思います。

    コード:
    変数の操作:#0041 主人公のx座標 = プレイヤーの画面X
    変数の操作:#0042 主人公のy座標 = プレイヤーの画面Y
    条件分岐:スクリプト: Input.isTriggered('ok')
    スクリプト:$gameScreen.showPicture(1,'scope',0,$gameVariables.value(41) ,
    $gameVariables.value(42) ,100,100,255,0)
    それでは、ご健闘を祈ります。Good Luck. まだ問題があったら、またご相談ください。
     
    #4
    咲坂優摩 がいいね!しました
  5. 咲坂優摩

    咲坂優摩 ユーザー

    返信ありがとうございます。
    いえ、一応以下のように記述すれば画像は表示されるんです。
    ピクチャの表示はメソッドshowPicture()と同じ原理ですよね。
    なぜ表示されないのでしょう???
    もちろん、トリガーは並列処理になっています。

    条件分岐: スクリプト: Input.isTriggered('ok')
     変数の操作: #0041 主人公のx座標 = プレイヤーのマップX
     変数の操作: #0042 主人公のy座標 = プレイヤーのマップY
     変数の操作: #0043 map上のx座標 = 主人公のx座標
     変数の操作: #0043 map上のx座標 *= 48
     変数の操作: #0044 map上のy座標 = 主人公のy座標
     変数の操作: #0044 map上のy座標 *= 48
     ピクチャの表示:#1, scope,左上({map上のx座標},{map上のy座標}), (100%,100%),255,通常

    試しに言われた通りに記述して実行しても右下にも左上にもましてやキャラの上には表示されませんでした。
    どうすれば表示されるのでしょうか?
    宜しければご教授下さい。
     
    最後に編集: 2018-02-14
    #5
    神無月サスケ がいいね!しました
  6. 神無月サスケ

    神無月サスケ ユーザー

    どうも。僕の方で実際に実行して検証してみましたが、
    僕の先ほどのイベントコマンドも作動しましたし、
    咲坂優摩さんのイベントコマンドもきちんと動作いたしました(ちょっと座標が画面外になることもありましたが)。
    そういうわけで、こちらでは動いたので、別の所に原因があるかと思われます。

    F9でデバッグ画面を出して、きちんと変数の値がセットされているかなどをご確認ください。
     
    #6
    咲坂優摩 がいいね!しました
  7. 咲坂優摩

    咲坂優摩 ユーザー

    返信ありがとうございます。
    F9で変数を見てみた所、上手くイベントが動作していない事が分かりました。
    改めて別のイベントを新しく作り、そこで記述してみると、きちんと動作してくれました。
    何がいけなかったのかは分からないのですが、イベントのページを、バックアップ用に後ろの方に色々と残しておいたのが良くなかったのかも知れないです。

    神無月サスケさん
    相談に乗ってくださってありがとうございました!
     
    #7
    神無月サスケ がいいね!しました

このページを共有