CODE ON RMAKEでの画像の動かし方(CoR質問掲示板

投稿: Material 7186 1 mini ikosami 投稿:2014/01/14 13:12:14(最新:2014/01/16 21:19:16)
https://core.rmake.jp/projects/79
などで、いろいろ調べたのですが、
一マス一マス動かす感じの画像の動かし方が
よくわかりません・・・

一度、最初に指定した場所に動かすことはできるのですが、
(前に言われた気がしますが)変数で指定しても
最初に指定された場所にしか動かなかったりします・・・


動かないのが、ただの勘違いならいいのですが、
変数で指定して一マス一マスキャラを動かしたりする場合に
どうすればいいのか説明をお願いします。


スクリプトそのものは、既に上記リンク先などで
みているので、それを出されてもわかりません・・・

どなたか、詳しくわかる方
よろしくおねがいします。

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Zararu128x128 mini dycoon(投稿日:2014/01/15 21:25, 履歴)
Rmakeのご利用ありがとうございます。
難しい範囲の話になるかと思いますが
ちょっと説明してみようと思います。

aoihikawaさんが説明しているとおり
  commands.move_to 100, 50, 20

のような書き方をした場合
motionやanimationの引数はスプライトテンプレートが
定義された時の値が使用されます。

実行時に値を変更したい場合は、
たとえば以下のように書きます。
...

x = 10
y = 10

...

  commands.move_to(lambda do |s| x end, 
    lambda do |s| y end, 20)

...


コードの全体はこちらで確認できます。
https://core.rmake.jp/projects/184

リファレンスでもこちらに少し書いてあります。
https://core.rmake.jp/doc/reference/rmake_common_sprite_template/motion_proxy#3_5

さらに少し説明しますと

move_toなどのcommand_list用のメソッドは
引数に処理(lambdaメソッドの返り値などのProcオブジェクト)を渡すことができます。
処理を渡した場合、処理の実行はモーションなどの処理がおこなわれているときで、
その返り値(処理の最後に書いた値を評価したもの(xの中身など))をもとに
command_listを実行します。
この場合だと変数xの座標の位置に移動するようになります。

ご参考になれば幸いです。

Material 7186 1 mini ikosami(投稿日:2014/01/15 23:03, 履歴)
ありがとうございます(^^)

なんだか難しいですね(^^;)
Cdv30200 aoi icon mini aoihikawa(投稿日:2014/01/15 23:54, 履歴)
感覚としては、
テンプレートの内部にlambda関数を仕込むことで
常時変化する値をテンプレートにすることも可能
というところでしょうか(曖昧解釈
Material 7186 1 mini ikosami(投稿日:2014/01/16 16:08, 履歴)
文字数制限とやらで書ききれなかったため、
製作中ゲームの宣伝も兼ねて
http://blog.rmake.jp/ikosami/5268
に書きました。
Zararu128x128 mini dycoon(投稿日:2014/01/16 21:19, 履歴)
> aoihikawaさん

lambdaも
proc_callやマウスイベントなどのブロックとかと同じで、
処理を関数の引数が評価されるタイミングと
違うタイミングで評価したい場合などに使うのですが、
rubyでは複数のブロックをメソッドの引数に渡せないようになっているため、
そのばあいlambdaなどの書き方をしたりします。
Cdv30200 aoi icon mini aoihikawa(投稿日:2014/01/14 19:00, 履歴)
RmakeCommonSpriteクラス
set_positionメソッドで可能です

テンプレートを使用する方法は
初期通過時で内容が固定となりますので
コンストラクタ用として使用します

そのため、常時値を変更する必要がある場合は
イベントの発生時に直接メソッドを呼び出して
動作を指定します
Material 7186 1 mini ikosami(投稿日:2014/01/14 21:03, 履歴)
できました!
ありがとうございます(^^)


ただ、とりかさんのRPGテンプレ実験(上記リンク)で
set_positionメソッドが一度も使われていないのに
動いているのが謎です・・・
Cdv30200 aoi icon mini aoihikawa(投稿日:2014/01/15 09:04, 履歴)
とりかさんの例の場合、
RmakeCommonSpriteTemplateクラス
motionメソッド内、
move_by_vで移動を実装していますね

座標の指定ではなく、
1回辺りの変化値で移動処理を行っているため
テンプレートの形で定義しても
正常に動作しています
Material 7186 1 mini ikosami(投稿日:2014/01/15 22:35, 履歴)
なるほど・・・
1回の変化量ならテンプレートの中でも正常に動くのですね。