数値
数値は、コンピュータプログラムにおいて重要なデータ型です。GDScriptでは、整数と浮動小数点数をサポートしており、どちらも正または負の値を取ることができます。
数値は変数に代入できます。この値はプログラム内で利用され、変更されることがあります。しかし、変更されるべきでない場合は定数に代入するべきです。
以下は数値を変数や定数に代入する例です。コメントは
#
記号で始まります。# 整数var a = 1var b = -23var c = 0var d = 0xA1Fe316 # 16進数
# 浮動小数点数var x = 1.0var y = -43.01var z = 1.3e6
# 定数const THE_ANSWER = 42
あらかじめ定義された定数には次のようなものがあります:
PI
, TAU
, INF
(無限大)
練習
コードを書いて、エディタの出力ウィンドウに数値を表示してみましょう。
遊び心のあるアイデア:
定数の値を変更しようとするとどうなるか?
指数表記を使った浮動小数点数(例:
3e6
(300万))を試してみるとてつもなく大きな数値を入力したらどうなるか?
16進数の数字で大文字と小文字を使い分けた場合はどうなるか?
組み込みの定数を使ってその出力値を確認する
以下のコードテンプレートを使って始めてみましょう:
extends Node2D
const SPEED = 75var number = SPEED
# ノードがシーンツリーに初めて入るときに呼び出される。func _ready(): # エディタの出力ウィンドウに値を表示 print(number) number = 86 print(number)
列挙型(Enums)
列挙型は、エンジンによって自動的に割り当てられる値を気にせず、関連する複数の定数を定義するのに便利です。例:
enum {COLD, WARM, HOT}
数値のバイナリ表現
コンピュータチップは、1と0の列としてデータをバイナリで保存します。各値はビット(bit)です。整数は64ビットとして保存され、このため整数値の範囲に制限があります。
整数に1を加え続けると、最大の正の値(63ビットの1)に達します。その後、さらに1を加えると符号ビット(64ビット目)が反転し、新たな1がバイナリ演算で前のすべての1を繰り上げ、最小の負の値になります。そして、0に戻り、再び最大の正の値までカウントが進みます。
このように数値は「ラップアラウンド」します。エラーが発生するよりは、このような動作の方が良いと思いますか?
数値のラップアラウンド
ゲームでは、数値がラップアラウンドするのが便利な場合があります。たとえば、繰り返す地形上の位置座標などです。x座標が整数でラップアラウンドする場合、ゲームがどれだけ続いても、エラーが発生する心配はありません。
浮動小数点数
浮動小数点数は、量、角度、長さなどに多用されます。ただし、整数と比べて精度に誤差があるため、「Aがゼロに等しい」といった正確な比較には向いていません。たとえば、
0.0001
はゼロに非常に近いですが、コード上ではゼロより大きい値です。
まとめ
計算や代入で異なる型の数値を混在させると、キャスト(型変換)が行われます。これにより予期しない結果が生じる場合があるので、注意が必要です。この興味深いトピックについては、今後のチュートリアルでさらに掘り下げていきます。