[解決済み]RGSS3のピクチャの移動で移動が終わるまでウェイトの指示方法は

aiueo
記事: 50
登録日時: 2016年5月09日(月) 23:33

[解決済み]RGSS3のピクチャの移動で移動が終わるまでウェイトの指示方法は

投稿記事by aiueo » 2017年2月04日(土) 18:36

RGSS3のピクチャの移動で移動が終わるまでウェイトの指示方法は

スクリプトで画像を移動させたかったので
スクリプトエディタの Game_Interpreter の 941行以降を見に行くと、

● ピクチャの移動

screen.pictures[@params[0]].move(@params[2], x, y, @params[6], @params[7], @params[8], @params[9], params[10])
wait(@params[10]) if @params[11]

とあります。
ツクールで表示されるダイアログボックスから考えると
@params[0]:ピクチャ番号1~100
@params[2]:原点 0左上 1中心
@params[6]:拡大パーセント横X0~2000(見えない~20倍)
@params[7]:拡大パーセント縦Y0~2000(見えない~20倍)
@params[8]:不透明度 0~255(透明~完全表示)
@params[9]:合成方法 0通常 1加算 2減算
@params[10]:フレーム数 1~
@params[11]:移動が終わるまでウェイト

であると思いますが@params[11]の指示方法が分かりません。

試しに適当な画像をピクチャ番号1に表示して、
以下のようにイベントコマンド「スクリプト」で

a = screen.pictures[1]
a.move(0, 50, 150, 100, 100, 255, 0, 30)

とやるとピクチャがX50Y150に30フレームで移動の終了前に別の操作を受け付けます。
別の操作の処理が終了すると、途中までだったピクチャの移動が実行されます。
移動が終わるまでウェイト が効いていないようです。

エディタでチェックが付くのは0かなあと思い
@params[11]を0にして

a = screen.pictures[1]
a.move(0, 50, 150, 100, 100, 255, 0, 30)
wait(30) if 0

とやってみると移動が終わるまでウェイト が効いているようです。
0を1にしても効いているみたいです。
これは正しくはどうするのでしょうか。
またこういうのはどうやって調べればいいのでしょうか。
ネットでツクールのイベントコマンドをスクリプトで行う関係を調べましたが分かりませんでした。

以上よろしくお願いいたします。
最後に編集したユーザー aiueo on 2017年2月06日(月) 22:39 [ 編集 1 回目 ]

faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: RGSS3のピクチャの移動で移動が終わるまでウェイトの指示方法は

投稿記事by faida » 2017年2月04日(土) 19:47

あなたのしたいことを端的に書くならば、
「『移動が終わるまでウェイト』をつけたいときは

コード: 全て選択

a = screen.pictures[1]
a.move(0, 50, 150, 100, 100, 255, 0, 30)
wait(30)
いらないなら

コード: 全て選択

a = screen.pictures[1]
a.move(0, 50, 150, 100, 100, 255, 0, 30)
ってやる」
です。

これを説明するにはまずif文の説明をしなければなりません。
if文というのは、「条件を満たせばその処理を行う」ということです。
条件を満たす、というのは、「真」「偽」の二つの内、「真」である、ということです。
真であるというのは、Rubyにおいては「0」「1」などの数値や、「true」という文字通り「真であるモノ」などが該当します。
逆に偽というのは、Rubyにおいては「false」という「偽であるモノ」、「nil」という「無」の二種類のみです。
つまり「wait(30) if 0」と書くのは、(0は常に真であるから)「wait(30)」ということです。
逆に「wait(30) if false」と書くのは、(falseは常に偽であるから)何も書かないのと一緒です。
まあこの表記にメリットがないというわけじゃないんですが。コメントアウトすれば一緒だし使わないけど。

じゃあなんでif文があるのか。簡単です、「@params[11]が真か偽かわからないから」です。
もちろんイベントコマンドでピクチャの移動をするときは、チェックボックスにチェックを入れるか入れないかで判別します。
でもスクリプト側ではそんなのどっちになるか予測がつかないわけです。
なのでif文が入っているわけです。スクリプトを直接書くならこいつはいらないわけです。

ちなみにツクールのヘルプの「スクリプト入門」の「条件分岐」に載ってたりします。
興味があれば「スクリプト入門」「RGSSリファレンス」を読むのもいいでしょう。


※超絶蛇足なので気にしなくていいんですけど、

コード: 全て選択

a = screen.pictures[1]
a.move(0, 50, 150, 100, 100, 255, 0, 30)
wait(20)
とかみたいに移動時間とウェイトの数値をバラバラにできたりします。これで表現の幅が広がるかも。
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
aiueo
記事: 50
登録日時: 2016年5月09日(月) 23:33

Re: RGSS3のピクチャの移動で移動が終わるまでウェイトの指示方法は

投稿記事by aiueo » 2017年2月04日(土) 21:19

faida様ありがとうございます。

スクリプトエディタやヘルプを@params[11]や@params[や11で検索したりして
@params[数字]の中はどこで分かるのか?って探していましたが
そういう事ではないんですね。

ネットでscreen.pictures[?].move~の記事があっても、
なぜかif以降の部分が無い訳も分かりました。
if文について一歩理解が深まりました。

また、同じparams[10]でフレーム数とウェイト数が別に行けるとは。
wait以降を追加するなら同じ記述にしなさいという形式だと思ってました。

勉強になりました。
ありがとうございました。

“VX / Ace:質問” へ戻る