スクリプト小ネタ
毎日数時間はゲーム作って順調に進んでるはずなのに
未だにチュートリアル的なエリアすら完成してません。
やはりイベントで作ってるだけあって制作に時間かかります。
おそらく今まで作ったところをプレイしても30分くらいでクリアできてしまうでしょう。
初見でも1時間といったところか・・・
なので上げられる情報もないです。
気長に作るしかありませんね。
ゲーム制作中に思いついたスクリプト小ネタです。
以前紹介した[移動ルートの設定]のスクリプトにて、
this._x = 10
といった感じで変数に直接座標入れると移動を簡略化できますよ、といった小ネタの応用です。
これを使って小数点以下の数値を変数に入れると、1マス以下の移動をさせることができます。

こんな感じに0.5を足して0.5を引くと、半歩前に進んで戻るといった動きをします。
移動速度を上げているので、この場合は目の前のキャラをどつくといった表現になります。

さらにはこのように、非常に小さい値を足したり引いたりを繰り返すことで
キャラクターを小刻みに震えさせたりもできます。
これを使えば、イベントシーンでの表現の幅が広がることでしょう。
ゲーム制作に時間かかること間違いなし!
ただし、この小ネタを使う際に注意点があります。
それは小数点以下で移動させた後は、this._xやthis._yといった変数に整数を入れてください。

こんな感じに。
もしくは[場所移動]や[イベントの位置設定]なんかを使ってもよいです。
なぜ整数を入れる必要があるのかというと、2進数を知っている方ならわかると思いますが
機械が扱う小数点以下の数値というのは正確な値ではありません。
0.1を足して0.1を引いたら±0になるとは限りません。
(たぶん大丈夫ですけど、万が一だめだと後の動作がおかしくなります)
なのでイベントが終了するまでに、変数には整数を入れるということを忘れないでください。
未だにチュートリアル的なエリアすら完成してません。
やはりイベントで作ってるだけあって制作に時間かかります。
おそらく今まで作ったところをプレイしても30分くらいでクリアできてしまうでしょう。
初見でも1時間といったところか・・・
なので上げられる情報もないです。
気長に作るしかありませんね。
ゲーム制作中に思いついたスクリプト小ネタです。
以前紹介した[移動ルートの設定]のスクリプトにて、
this._x = 10
といった感じで変数に直接座標入れると移動を簡略化できますよ、といった小ネタの応用です。
これを使って小数点以下の数値を変数に入れると、1マス以下の移動をさせることができます。

こんな感じに0.5を足して0.5を引くと、半歩前に進んで戻るといった動きをします。
移動速度を上げているので、この場合は目の前のキャラをどつくといった表現になります。

さらにはこのように、非常に小さい値を足したり引いたりを繰り返すことで
キャラクターを小刻みに震えさせたりもできます。
これを使えば、イベントシーンでの表現の幅が広がることでしょう。
ゲーム制作に時間かかること間違いなし!
ただし、この小ネタを使う際に注意点があります。
それは小数点以下で移動させた後は、this._xやthis._yといった変数に整数を入れてください。

こんな感じに。
もしくは[場所移動]や[イベントの位置設定]なんかを使ってもよいです。
なぜ整数を入れる必要があるのかというと、2進数を知っている方ならわかると思いますが
機械が扱う小数点以下の数値というのは正確な値ではありません。
0.1を足して0.1を引いたら±0になるとは限りません。
(たぶん大丈夫ですけど、万が一だめだと後の動作がおかしくなります)
なのでイベントが終了するまでに、変数には整数を入れるということを忘れないでください。
スポンサーサイト
スクリプト小ネタとATBの中途報告
最近スクリプトばかりいじっていたので、
RPGツクールMVプレビューのコミュニティの方を数日見ていなかったわけですが・・・。
先日見てみたら、以前私が書いた『移動ルート設定の簡略化』をMVではどうやるのか
という質問があってびっくりしました。
こちらの日記です。
http://woodpenguin.blog.fc2.com/blog-entry-98.html
私が気付いた時には既に他の方が回答してくださっていたのですが、
一応またここでも紹介しておこうと思います。
RPGツクールMVプレビューのコミュニティの方を数日見ていなかったわけですが・・・。
先日見てみたら、以前私が書いた『移動ルート設定の簡略化』をMVではどうやるのか
という質問があってびっくりしました。
こちらの日記です。
http://woodpenguin.blog.fc2.com/blog-entry-98.html
私が気付いた時には既に他の方が回答してくださっていたのですが、
一応またここでも紹介しておこうと思います。
ピクチャの座標入力を簡略化
小ネタが思いついたので書き込み。
ゲーム中に操作説明とかする際、わかりやすいようにピクチャの表示とか使って画像も表示したりします。
「箱庭の勇者たち」で、まさにその作業してたわけですが。
ただ、ピクチャの表示を使っただけでは、パッと表示されてパッと消えるだけです。
それじゃ味気ないのでピクチャの移動を使ってフェードインフェードアウトをさせるのですが、
これが一々座標を入力しないといけないのでめんどくさい。
しかもテストプレイをしてみて、表示位置が気に入らないときの修正はさらにめんどくさい。
ピクチャの標示から移動まで、全てで座標を入力しなおさないといけないから。
・・・たぶん、同じ思いをしたことのある人ならわかると思います。
何とかならないかと思ったのなら、何とかすればいいじゃないかと気づいたのがつい最近。
(なぜ、いままでやらなかったのか・・・)
で、作ってみたのが以下のスクリプト
class Game_Picture
#--------------------------------------------------------------------------
# ○ ピクチャの移動
#--------------------------------------------------------------------------
alias _wdtk_simppic_move move
def move(origin, x, y, zx, zy, o, t, d)
x = @target_x if x == -1
y = @target_y if y == -1
_wdtk_simppic_move(origin, x, y, zx, zy, o, t, d)
end
end
移動先の座標である X または Y が -1 のとき、前回の移動座標を使うという感じです。
-1 なんて使うこと無いですよね?
もし使う方は別の数値にしてください。
X と Y はそれぞれ別で判定されているので、
X 軸は前回の座標使って Y 軸だけ移動させるってことも可能です。
ピクチャの移動を良く使う方は、だいぶ作業がはかどるのではないでしょうか?
そういえばメールアドレス変更したってこと、書いてなかった気がします。
とはいっても、→のメールフォームから送ればいいだけのことですが。
ですが、配信したゲームの readme とかに記載されてるアドレスは違うので注意してください。
新しいアドレスは wood_penguin@yahoo.co.jp です。
以下、コメントお返事です。
> ななしさん
プレイしていただきありがとうございます。
実況プレイももちろんOKです!
ゲーム中に操作説明とかする際、わかりやすいようにピクチャの表示とか使って画像も表示したりします。
「箱庭の勇者たち」で、まさにその作業してたわけですが。
ただ、ピクチャの表示を使っただけでは、パッと表示されてパッと消えるだけです。
それじゃ味気ないのでピクチャの移動を使ってフェードインフェードアウトをさせるのですが、
これが一々座標を入力しないといけないのでめんどくさい。
しかもテストプレイをしてみて、表示位置が気に入らないときの修正はさらにめんどくさい。
ピクチャの標示から移動まで、全てで座標を入力しなおさないといけないから。
・・・たぶん、同じ思いをしたことのある人ならわかると思います。
何とかならないかと思ったのなら、何とかすればいいじゃないかと気づいたのがつい最近。
(なぜ、いままでやらなかったのか・・・)
で、作ってみたのが以下のスクリプト
class Game_Picture
#--------------------------------------------------------------------------
# ○ ピクチャの移動
#--------------------------------------------------------------------------
alias _wdtk_simppic_move move
def move(origin, x, y, zx, zy, o, t, d)
x = @target_x if x == -1
y = @target_y if y == -1
_wdtk_simppic_move(origin, x, y, zx, zy, o, t, d)
end
end
移動先の座標である X または Y が -1 のとき、前回の移動座標を使うという感じです。
-1 なんて使うこと無いですよね?
もし使う方は別の数値にしてください。
X と Y はそれぞれ別で判定されているので、
X 軸は前回の座標使って Y 軸だけ移動させるってことも可能です。
ピクチャの移動を良く使う方は、だいぶ作業がはかどるのではないでしょうか?
そういえばメールアドレス変更したってこと、書いてなかった気がします。
とはいっても、→のメールフォームから送ればいいだけのことですが。
ですが、配信したゲームの readme とかに記載されてるアドレスは違うので注意してください。
新しいアドレスは wood_penguin@yahoo.co.jp です。
以下、コメントお返事です。
> ななしさん
プレイしていただきありがとうございます。
実況プレイももちろんOKです!
数値入力をキャンセル
特に書くネタも無いので、ちょっとした小ネタ。
タイトルのとおり、数値入力でキャンセルを可能にするスクリプトです。
数値入力ってなぜかキャンセルできないようになっています。
ゲーム作るほうとしては関係ないことですが、
プレイするほうとしては特に入力したくないのにキャンセルできないって
ちょっとイラっとするんですよね。
拒否したいのに、わざと失敗しなくちゃいけないってところが。
class Window_NumberInput
#--------------------------------------------------------------------------
# ☆ キャンセルボタンが押されたときの処理
#--------------------------------------------------------------------------
def process_cancel
Sound.play_cancel
$game_variables[$game_message.num_input_variable_id] = -1
deactivate
close
end
end
これでキャンセルできるようになります。
$game_variables[$game_message.num_input_variable_id] = -1
って部分が、キャンセルされたとき変数に数値を入れる処理です。
とりあえず、-1を入れるようにしてみました。
別の数値にしたいときは、ここを変更してください。
以下、お返事です。
タイトルのとおり、数値入力でキャンセルを可能にするスクリプトです。
数値入力ってなぜかキャンセルできないようになっています。
ゲーム作るほうとしては関係ないことですが、
プレイするほうとしては特に入力したくないのにキャンセルできないって
ちょっとイラっとするんですよね。
拒否したいのに、わざと失敗しなくちゃいけないってところが。
class Window_NumberInput
#--------------------------------------------------------------------------
# ☆ キャンセルボタンが押されたときの処理
#--------------------------------------------------------------------------
def process_cancel
Sound.play_cancel
$game_variables[$game_message.num_input_variable_id] = -1
deactivate
close
end
end
これでキャンセルできるようになります。
$game_variables[$game_message.num_input_variable_id] = -1
って部分が、キャンセルされたとき変数に数値を入れる処理です。
とりあえず、-1を入れるようにしてみました。
別の数値にしたいときは、ここを変更してください。
以下、お返事です。
「移動ルートの設定」の簡略化
久しぶりの小ネタです。
イベントなどを作るとき、キャラを移動させるのに「移動ルートの設定」が使われます。
で、その移動ルートを設定しているとき、こんな風になったことは無いでしょうか?

移動させる距離が長いと、その分同じ移動コマンドが何度も続いてしまいます。
歩数を数えなければならないし、そのうちキャラの位置関係とかわからなくなってしまいます。
でも実はこれ、スクリプトを使えば簡略化できちゃいます。
例えば、X座標 12 まで移動したい場合

と、移動ルートのスクリプトで @x に 12 を入れれば、
座標軸で移動先を設定することが出来ちゃいます。
そうではなく、左に5歩進みたいって場合は、@x -= 5 と入力すればOK。

こんな感じで簡略化可能です。
ただし、気をつける点がいくつかあります。
まずは、これを使うとキャラが移動方向に向きを変えません。
向きを変えてから移動させる必要があります。
それから、衝突判定も行われません。
指定した座標に全てすり抜けて移動します。
あとついでに、マップのループ移動にも対応していません。
まあ、どれも大したものではないです。
思ったとおりに動けばいいんですよ!
ちなみに、これを使って移動先の座標を画面の外に設定すると、
なんと通常では移動させられない画面外に、イベントを移動させることが可能です。
これもちょっと使えるテクニックです。
ぜひ試してみてね!
以下、コメントお返事。
イベントなどを作るとき、キャラを移動させるのに「移動ルートの設定」が使われます。
で、その移動ルートを設定しているとき、こんな風になったことは無いでしょうか?

移動させる距離が長いと、その分同じ移動コマンドが何度も続いてしまいます。
歩数を数えなければならないし、そのうちキャラの位置関係とかわからなくなってしまいます。
でも実はこれ、スクリプトを使えば簡略化できちゃいます。
例えば、X座標 12 まで移動したい場合

と、移動ルートのスクリプトで @x に 12 を入れれば、
座標軸で移動先を設定することが出来ちゃいます。
そうではなく、左に5歩進みたいって場合は、@x -= 5 と入力すればOK。

こんな感じで簡略化可能です。
ただし、気をつける点がいくつかあります。
まずは、これを使うとキャラが移動方向に向きを変えません。
向きを変えてから移動させる必要があります。
それから、衝突判定も行われません。
指定した座標に全てすり抜けて移動します。
あとついでに、マップのループ移動にも対応していません。
まあ、どれも大したものではないです。
思ったとおりに動けばいいんですよ!
ちなみに、これを使って移動先の座標を画面の外に設定すると、
なんと通常では移動させられない画面外に、イベントを移動させることが可能です。
これもちょっと使えるテクニックです。
ぜひ試してみてね!
以下、コメントお返事。