
RPGツクールMVの変数に1.5や2.5のような小数を代入する方法はあるの?

あるぞ。通常の変数代入では小数が切り下げられるが、
スクリプトを工夫すれば小数を保持できるぞ。
RPGツクールMVでは、通常の方法で変数に数値を代入すると、小数点以下が切り下げられます。
例えば、次のスクリプトを実行しても、変数10には1.5ではなく1が代入されます。
$gameVariables.setValue(10, 1.5);
この記事では、小数をそのまま変数に代入する方法を解説します。
1. 通常の方法では小数が切り下げられる
RPGツクールMVでは、$gameVariables.setValue() を使用して変数に数値を代入できます。
例えば、変数10に1.5を代入する場合は、次のように記述します。
$gameVariables.setValue(10, 1.5);
しかし、この方法では小数点以下が切り下げられるため、変数10には1が代入されます。
同様に、次のような場合も小数点以下が切り下げられます。
| 代入する数値 | 変数に保存される数値 |
|---|---|
| 1.5 | 1 |
| 2.8 | 2 |
| 3.14 | 3 |
| -1.5 | -2 |
このように、通常の変数代入では小数をそのまま保持できません。
2. 変数に小数を代入する
小数をそのまま保持したい場合は、変数の内部データに直接代入します。
例えば、変数10に1.5を代入する場合は、次のスクリプトを使用してください。
$gameVariables._data[10] = 1.5;
$gameVariables.onChange();
これにより、変数10に1.5を代入できます。
1行目で変数の内部データに数値を直接代入し、2行目で変数が変更されたことをゲーム側に通知しています。
$gameVariables.onChange() は、変数の変更に応じたマップの再確認を要求するための処理です。
3. 変数に保存した小数を取得する
変数に保存した小数は、通常どおり $gameVariables.value() で取得できます。
例えば、変数10に1.5が代入されている場合は、次のスクリプトで値を取得できます。
$gameVariables.value(10);
取得した値を計算に使用することもできます。
例えば、変数10の値を2倍して変数11に代入する場合は、次のように記述します。
$gameVariables._data[11] = $gameVariables.value(10) * 2;
$gameVariables.onChange();
変数10に1.5が入っていれば、変数11には3が代入されます。
小数を含む計算結果を別の変数に保存したい場合も、同じ方法を使用できます。
4. 使用する際の注意点
小数を変数に代入する場合は、次の点に注意してください。
$gameVariables.setValue()を使用すると、数値は通常どおり切り下げられます。- 小数を保持する場合は、
$gameVariables._data[変数番号]に直接代入してください。 - 代入後は
$gameVariables.onChange()を呼び出し、変数の変更を通知してください。 - その後にイベントコマンドの「変数の操作」などで同じ変数を更新すると、再び小数が切り下げられる場合があります。
_dataは内部データなので、プラグインなどによって動作が変更されている場合は注意してください。
小数を継続的に扱うゲームを制作する場合は、通常の変数操作でも小数を保持できるようにするプラグインがあるならば、そちらを使用すると良いかもしれません。

コメント