A built-in boolean type. A [bool] is always one of two values: [code]true[/code] or [code]false[/code], similar to a switch that is either on or off. Booleans are used in programming for logic in condition statements. Booleans can be directly used in [code]if[/code] and [code]elif[/code] statements. You don't need to add [code]== true[/code] or [code]== false[/code]: [codeblocks] [gdscript] if can_shoot: launch_bullet() [/gdscript] [csharp] if (canShoot) { launchBullet(); } [/csharp] [/codeblocks] Many common methods and operations return [bool]s, for example, [code]shooting_cooldown <= 0.0[/code] may evaluate to [code]true[/code] or [code]false[/code] depending on the number's value. [bool]s are usually used with the logical operators [code]and[/code], [code]or[/code], and [code]not[/code] to create complex conditions: [codeblocks] [gdscript] if bullets > 0 and not is_reloading: launch_bullet() if bullets == 0 or is_reloading: play_clack_sound() [/gdscript] [csharp] if (bullets > 0 && !isReloading) { launchBullet(); } if (bullets == 0 || isReloading) { playClackSound(); } [/csharp] [/codeblocks] Constructs a default-initialized [bool] set to [code]false[/code]. Constructs a [bool] as a copy of the given [bool]. Cast a [float] value to a boolean value. This method will return [code]false[/code] if [code]0.0[/code] is passed in, and [code]true[/code] for all other values. Cast an [int] value to a boolean value. This method will return [code]false[/code] if [code]0[/code] is passed in, and [code]true[/code] for all other values. Returns [code]true[/code] if two bools are different, i.e. one is [code]true[/code] and the other is [code]false[/code]. Returns [code]true[/code] if the left operand is [code]false[/code] and the right operand is [code]true[/code]. Returns [code]true[/code] if two bools are equal, i.e. both are [code]true[/code] or both are [code]false[/code]. Returns [code]true[/code] if the left operand is [code]true[/code] and the right operand is [code]false[/code].