ページ 11

【解決済】操作キャラの周りを他のキャラが回り続けるプラグインはありますか?

Posted: 2021年2月06日(土) 08:18
by 亜季色
マス目移動をするのではなく、対象の周りを滑らかな円を描くように回転し続けるプラグインを探しています。

ところでこのような質問はプラグイン素材のリクエストの方が良いのでしょうか?

Re: 操作キャラの周りを他のキャラが回り続けるプラグインはありますか?

Posted: 2021年2月06日(土) 12:23
by WTR
とりあえず質問カテゴリでいいんじゃないですかね。
プラグインではない実現手段もあるかも、というところも含めて整理が必要な気がします。

まず所望の動作についてもう少し踏み込んだイメージが欲しいです。
なんとなくナビゲーション妖精とか火の玉バリアとか
そういったものがプレイヤーの周りを回っている絵面が浮かびましたが
そうじゃなくて村人がぐるぐるまとわりついてくる?

当たり判定を持ったキャラクターが必要なのか
ピクチャやアニメーションでも代用可能な…つまりビジュアルが回転してればなんでもいいのか…

Re: 操作キャラの周りを他のキャラが回り続けるプラグインはありますか?

Posted: 2021年2月06日(土) 12:47
by 亜季色
周りを回るグラフィック自体は何でも良いのですが、当たり判定は無い方が良いです。

例えば操作キャラの周りにハエがたかっている感じで、操作キャラにまとわりつきながら公転運動をさせたいです。
また、固定されたイベントに対しても同様に公転運動をさせたいです。
イベントとして一時的に公転させるのではなく、キャラクターの操作中に継続して公転させたいです。

charactersフォルダに入っている歩行グラ等から好きなように選んで公転させられると楽ですね。

Re: 操作キャラの周りを他のキャラが回り続けるプラグインはありますか?

Posted: 2021年2月06日(土) 13:30
by くろうど
こんにちは。

WTRさんが質問してくれたので、
イベントコマンドで簡単なものを作ってみました。

ピクチャの回転を使っているので、たぶん回り方はイメージとは違うと思いますが、お試しください。

↓このピクチャ(例)を
star.png
star.png (526 バイト) 閲覧された回数 3708 回
↓表示させて、
WS000004.png
WS000004.png (5.7 KiB) 閲覧された回数 3708 回
↓並列処理で移動と回転をさせると、
WS000005.png
↓このように表示されます。
WS000006.png
WS000006.png (6.01 KiB) 閲覧された回数 3708 回

Re: 操作キャラの周りを他のキャラが回り続けるプラグインはありますか?

Posted: 2021年2月06日(土) 14:37
by WTR
私もピクチャの移動でいいんじゃないかなぁ、と感じました。
例としてハエがたかっている、ということだったので円運動が妥当かどうかちょっと疑問もあり
円運動以外にも以前試したことがあるサンプルをいくつか出してみます。
スクリプトでちょっと複雑な軌道リサジュー曲線というヤツを作っています。

くろうどさんのと同様、ピクチャID1に何か表示したうえで並列処理で以下のスクリプトを実行します。

コード: 全て選択

//円軌道
const x = $gamePlayer.screenX() + 48 * Math.cos(                                  2 * Math.PI * (Graphics.frameCount % 120) / 120);
const y = $gamePlayer.screenY() + 48 * Math.cos((1/2) * Math.PI + 2 * Math.PI * (Graphics.frameCount % 120) / 120);

$gameScreen.movePicture(1,1,x,y,100,100,255,0,1)

コード: 全て選択

//楕円軌道
const x = $gamePlayer.screenX() + 48 * Math.cos(                                  2 * Math.PI * (Graphics.frameCount % 120) / 120);
const y = $gamePlayer.screenY() + 48 * Math.cos((1/4) * Math.PI + 2 * Math.PI * (Graphics.frameCount % 120) / 120);

$gameScreen.movePicture(1,1,x,y,100,100,255,0,1)

コード: 全て選択

//∞軌道
const x = $gamePlayer.screenX() + 48 * Math.cos(                                  2 * Math.PI * (Graphics.frameCount % 120) / 120);
const y = $gamePlayer.screenY() + 48 * Math.cos((1/2) * Math.PI + 4 * Math.PI * (Graphics.frameCount % 120) / 120);

$gameScreen.movePicture(1,1,x,y,100,100,255,0,1)

コード: 全て選択

//よくわからない軌道1
const x = $gamePlayer.screenX() + 48 * Math.cos(                                  2 * Math.PI * (Graphics.frameCount % 120) / 120);
const y = $gamePlayer.screenY() + 48 * Math.cos((1/2) * Math.PI + 6 * Math.PI * (Graphics.frameCount % 120) / 120);

$gameScreen.movePicture(1,1,x,y,100,100,255,0,1)

コード: 全て選択

//よくわからない軌道2
const x = $gamePlayer.screenX() + 48 * Math.cos(                                  4 * Math.PI * (Graphics.frameCount % 120) / 120);
const y = $gamePlayer.screenY() + 48 * Math.cos((1/4) * Math.PI + 6 * Math.PI * (Graphics.frameCount % 120) / 120);

$gameScreen.movePicture(1,1,x,y,100,100,255,0,1)
ちなみに
$gamePlayer.screenX() + 48 の 48 は円の半径です。大きくすると大きく回転する。
Graphics.frameCount % 120) / 120) は 120フレーム つまり2秒で1回転を意味します。120 を小さくすると高速移動します。

Re: 操作キャラの周りを他のキャラが回り続けるプラグインはありますか?

Posted: 2021年2月06日(土) 19:50
by 亜季色
お二方どうもありがとうございます!

WTRさんの楕円軌道が理想形に近かったのですが、この軌道を斜め方向の楕円ではなく真横方向への楕円にし
公転の中心をもう少し上の方にして頭上で公転させる感じにするにはどう弄れば良いのでしょうか?

Re: 操作キャラの周りを他のキャラが回り続けるプラグインはありますか?

Posted: 2021年2月06日(土) 20:15
by WTR
円軌道をベースにY方向の変位を小さくすれば横長の楕円になります。
48 * Math.cos ...
24 * Math.cos ...
この 比率が1:1なら円、2:1 なら半分に潰れた楕円になります。
位置を変えるのは単純にY方向に足し引きすればよいです。頭上に、ということなのでマイナスです。

コード: 全て選択

//横長楕円
const x = $gamePlayer.screenX()         + 48 * Math.cos(                                  2 * Math.PI * (Graphics.frameCount % 120) / 120);
const y = $gamePlayer.screenY() - 48 + 24 * Math.cos((1/2) * Math.PI + 2 * Math.PI * (Graphics.frameCount % 120) / 120);

$gameScreen.movePicture(1,1,x,y,100,100,255,0,1)

Re: 操作キャラの周りを他のキャラが回り続けるプラグインはありますか?

Posted: 2021年2月06日(土) 20:19
by 亜季色
理想通りの動きになりました!
これでハエをぶんぶんさせられます!

ありがとうございました!

Re: 【解決済】操作キャラの周りを他のキャラが回り続けるプラグインはありますか?

Posted: 2021年2月06日(土) 20:21
by WTR
ちなみにイベントの位置を指定するなら
$gamePlayer.screenX() --> $gameMap.event(イベントId).screenX()
$gamePlayer.screenY() --> $gameMap.event(イベントId).screenY()

に置き換えてください。

Re: 【解決済】操作キャラの周りを他のキャラが回り続けるプラグインはありますか?

Posted: 2021年2月07日(日) 07:57
by 亜季色
ありがとうございます!
色々弄ってみて色んな表現が出来るようにしてみようと思います