0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[ GODOT 4 ] 乱数(ランダム)を生成する方法(グローバルスコープ編)

0
Posted at

Godot Engineで2Dゲームを制作するための備忘録です。

この記事はGeminiを活用して作成しました。


1. はじめに

ゲーム開発では「サイコロを振る」「クリティカルヒットの確率判定」「敵をランダムな位置に出現させる」など 多くの場面でランダムな値が必要になります

GDScriptには標準で使いやすい乱数生成用の関数(メソッド)が用意されており これらを使うことで簡単にゲームへランダム要素を組み込むことができます
用途に合わせて適切な関数を使い分けるのがポイントです

主な用途

  • 1から6までのサイコロの目をランダムに決める
  • ダメージ数値を「100〜120」の間でばらつかせる
  • 2D画面内のランダムな座標(X, Y)にアイテムを出現させる
  • ガチャやドロップ率の確率判定(例: 5%の確率でレアアイテム)

2. 代表的な乱数関数(プロパティ・メソッド)

GDScriptで最もよく使われる 代表的な乱数生成の関数(グローバル関数)です

関数(メソッド) 得られる値 主な使いどころ
randi() 0 から 4,294,967,295 までの整数(int) 完全なランダム整数が欲しいとき
randi_range(from, to) 指定した範囲(from 〜 to)の整数(int) サイコロの目(1〜6)やダメージの幅など
randf() 0.0 から 1.0 までの小数(float) 確率の判定(0.05 = 5%など)
randf_range(from, to) 指定した範囲(from 〜 to)の小数(float) キャラクターの大きさや速度を微調整するとき
randfn(mean, deviation) 正規分布(平均値の近くが出やすい)に基づいた小数 リアルなステータスのばらつきなど

3. 超重要:乱数の初期化(シード値のリセット)

Godot 4では明示的な初期化(randomize() の呼び出し)は原則として不要です。
Godot 4以降、エンジンの起動時に自動的にランダムなシード値が設定されるため、何もしなくても毎回異なる乱数が生成されます。

明示的に初期化を行いたい場合

ゲームの起動時(メインシーンの _ready() など)で randomize() 関数を一度だけ実行します

func _ready():
	# 起動するたびに異なる乱数パターン(シード値)を時間ベースで生成する
	randomize()
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?