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

返信する
アバター
亜季色
記事: 44
登録日時: 2019年9月16日(月) 12:54

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

投稿記事 by 亜季色 »

マス目移動をするのではなく、対象の周りを滑らかな円を描くように回転し続けるプラグインを探しています。

ところでこのような質問はプラグイン素材のリクエストの方が良いのでしょうか?
最後に編集したユーザー 亜季色 [ 2021年2月06日(土) 20:19 ], 累計 1 回
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

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

投稿記事 by WTR »

とりあえず質問カテゴリでいいんじゃないですかね。
プラグインではない実現手段もあるかも、というところも含めて整理が必要な気がします。

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

当たり判定を持ったキャラクターが必要なのか
ピクチャやアニメーションでも代用可能な…つまりビジュアルが回転してればなんでもいいのか…
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
亜季色
記事: 44
登録日時: 2019年9月16日(月) 12:54

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

投稿記事 by 亜季色 »

周りを回るグラフィック自体は何でも良いのですが、当たり判定は無い方が良いです。

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

charactersフォルダに入っている歩行グラ等から好きなように選んで公転させられると楽ですね。
アバター
くろうど
記事: 318
登録日時: 2016年1月22日(金) 20:52
お住まい: 東京都
連絡する:

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

投稿記事 by くろうど »

こんにちは。

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

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

↓このピクチャ(例)を
star.png
star.png (526 バイト) 閲覧された回数 3704 回
↓表示させて、
WS000004.png
WS000004.png (5.7 KiB) 閲覧された回数 3704 回
↓並列処理で移動と回転をさせると、
WS000005.png
↓このように表示されます。
WS000006.png
WS000006.png (6.01 KiB) 閲覧された回数 3704 回
▼だいたいTwitterにいます。たぶん。
https://twitter.com/kuroudo119
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

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

投稿記事 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 を小さくすると高速移動します。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
亜季色
記事: 44
登録日時: 2019年9月16日(月) 12:54

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

投稿記事 by 亜季色 »

お二方どうもありがとうございます!

WTRさんの楕円軌道が理想形に近かったのですが、この軌道を斜め方向の楕円ではなく真横方向への楕円にし
公転の中心をもう少し上の方にして頭上で公転させる感じにするにはどう弄れば良いのでしょうか?
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

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

投稿記事 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)
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
亜季色
記事: 44
登録日時: 2019年9月16日(月) 12:54

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

投稿記事 by 亜季色 »

理想通りの動きになりました!
これでハエをぶんぶんさせられます!

ありがとうございました!
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

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

投稿記事 by WTR »

ちなみにイベントの位置を指定するなら
$gamePlayer.screenX() --> $gameMap.event(イベントId).screenX()
$gamePlayer.screenY() --> $gameMap.event(イベントId).screenY()

に置き換えてください。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
亜季色
記事: 44
登録日時: 2019年9月16日(月) 12:54

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

投稿記事 by 亜季色 »

ありがとうございます!
色々弄ってみて色んな表現が出来るようにしてみようと思います
返信する

“MV:質問”に戻る