ゲーム開発において、乱数はプレイヤーの体験をより豊かにしてくれます。
例えば、敵の出現場所をランダムにしたり、アイテムの効果を変えたりすることで、ゲーム性が向上します。
今回は、Godotでの乱数の基本的な使い方やサンプルコードを使って、初心者の方にも分かりやすく解説します。
【Godot】乱数を扱う方法について基本から使い方まで徹底解説!
乱数の基本
乱数とは、予測ができないように見えるランダムな数値のことです。ゲーム開発では、乱数を使ってイベントやオブジェクトの動きをランダムに設定し、予測できない面白さを演出するのに使われます。
Godotには、乱数を扱うための便利な関数がいくつか用意されていますので、以下で基本的な関数を見ていきましょう。
乱数を生成する関数
Godotでは、randf()やrandi()などの乱数生成関数が提供されています。それぞれの使い方と特徴を確認していきましょう。
1. randf(): 0〜1の小数を生成
randf()関数は、0から1の間のランダムな小数(浮動小数点数)を返します。例えば、敵の行動や色の透明度など、0から1の範囲でランダムな値を使いたいときに役立ちます。
適当なシーンを作成して、そこにテスト用のスクリプトをアタッチします。
1 2 3 4 5 6 |
extends Node2D func _ready(): var random_value = randf() print("ランダムな小数:", random_value) |
このスクリプトを作成して実行してみると・・・。
こんな感じで、ランダムな少数がコンソールに出力されると思います。
2. randi(): 0〜4294967295(2^32-1)の整数を生成
randi()関数はランダムな整数を返します。比較的広い範囲で乱数を使いたい場合に適しています。
1 2 3 4 5 6 |
extends Node2D func _ready(): var random_int = randi() print("ランダムな整数:", random_int) |
こちらも同様に、ランダムな整数を出力します。
3. ランダムな範囲で数値を取得する方法
乱数の範囲を指定して生成したいときには、rand_range()やrandi_range()が便利です。
1. randf_range(): 任意の範囲で小数を生成
randf_range(min, max)は、指定した範囲の小数をランダムに生成します。たとえば、0.5〜2.5の間でランダムな値を取得する場合には次のように書きます。
1 2 3 4 5 |
extends Node2D func _ready(): var random_value = randf_range(0.5, 2.5) print("0.5から2.5の間のランダムな小数:", random_value) |
2. randi_range(): 任意の範囲で整数を生成
randi_range(min, max)は、指定した範囲の整数をランダムに生成します。キャラクターの移動やオブジェクトの出現場所など、整数で表現したい範囲があるときに使うと便利です。
1 2 3 4 5 |
extends Node2D func _ready(): var random_int = randi_range(1, 10) print("1から10の間のランダムな整数:", random_int) |
4. 応用編:乱数を使った実装例
乱数を使うと、ゲーム内でさまざまなランダム要素を実装できます。以下に、Godotで乱数を使った簡単な例をいくつか紹介します。
例:ランダムな位置にオブジェクトを配置
乱数を使って、キャラクターやアイテムがランダムな場所に出現する処理を実装します。
まずは、シーンにSprite2Dノードを追加します。
続いて、適当な画像を用意してファイルシステムにインポートしましょう。
Sprite2Dノードを選択して「Texture」に設定したい画像をドラッグ&ドロップします。
私は、土管の画像を使用することにします。
Sprite2Dノードを選択してスクリプトをアタッチします。
1 2 3 4 5 6 7 8 |
extends Sprite2D func _ready(): # 画面内のランダムな位置に配置 position.x = randf_range(0, 1024) position.y = randf_range(0, 600) print("ランダムな位置に配置されました:", position) |
実行すると、設定した範囲内にてランダムな位置に画像が表示されると思います。