Skip to content

Instantly share code, notes, and snippets.

# Godot 3.5.2
class_name Gravity
extends Node
export var gravity_constant := 10000.0
var _moving_masses : Array
@N-Carter
N-Carter / state_machine.gd
Created January 5, 2024 19:34
A simple state machine
@icon("res://editor/icons/state_machine.svg")
class_name StateMachine
extends Node
@export var _host_path : NodePath # If unset, the host is self
var _host : Node
enum Mode {
@N-Carter
N-Carter / ambulator.gd
Created January 5, 2024 19:21
A state machine for walking creatures
class_name Ambulator
extends StateMachine
@export var _speed := 16.0
@export var _jump_impulse := 200.0
@export var _max_speed := 50.0
@export var _gravity_multiplier := 0.1
@export var _snap_length := 20.0
@N-Carter
N-Carter / palette_remap.gdshader
Created August 8, 2023 11:48
A Godot 4 shader which reads the lowest four bits from the input's blue channel and uses them to pick a substitute colour from a palette texture.
// Reads the lowest four bits from the input's blue channel and uses them to
// pick a substitute colour from a palette texture.
//
// The palette texture should be 16 pixels wide and 1 pixel high, with the
// colours arranged with index 0 at the left and index 15 at the right.
//
// This version is for Godot 4.
shader_type canvas_item;
render_mode blend_disabled, unshaded, skip_vertex_transform;
extends Area2D
@export var _walk_speed := 50.0
@export var _jump_speed := 300.0
var _gravity : float = ProjectSettings.get_setting("physics/2d/default_gravity")
@onready var _tilemap := Global.tilemap
var _velocity : Vector2
@N-Carter
N-Carter / HoverChassis.cs
Created January 18, 2023 21:55
A self-levelling Rigidbody-based "vehicle" controller
using UnityEngine;
using System.Collections;
[AddComponentMenu("Chassis/Hover Chassis")]
public class HoverChassis : Chassis
{
[SerializeField] protected Transform m_CentreOfMass;
[SerializeField] protected Transform m_TurningForcePosition;
[SerializeField] protected Transform m_RaycastPoint;
extends Target
export var _bullet_scene : PackedScene
export var _firing_timer_path : NodePath
onready var _firing_timer := get_node(_firing_timer_path) as Timer
onready var _original_firing_time := _firing_timer.wait_time
export var _speed = 100.0
@N-Carter
N-Carter / palette_remap.gdshader
Last active August 8, 2023 11:46
A Godot shader which reads the lowest four bits from the input's blue channel and uses them to pick a substitute colour from a palette texture.
// Reads the lowest four bits from the input's blue channel and uses them to
// pick a substitute colour from a palette texture.
//
// The palette texture should be 16 pixels wide and 1 pixel high, with the
// colours arranged with index 0 at the left and index 15 at the right.
shader_type canvas_item;
render_mode blend_disabled, unshaded, skip_vertex_transform;
uniform sampler2D palette;
@N-Carter
N-Carter / pickup.gd
Created May 27, 2022 16:15
Pickup from Depths
class_name Pickup
extends RigidBody2D
export(Globals.PickupType) var type : int setget , get_type
export var sprite : NodePath
onready var sprite_node : AnimatedSprite = get_node(sprite) setget , get_sprite
# These should be translated strings, but let's keep it simple for now:
@N-Carter
N-Carter / inventory_panel.gd
Created May 27, 2022 16:14
Inventory from Depths
class_name InventoryPanel
extends PopupDialog
export var item_slot_scene : PackedScene
export var scroll : NodePath
onready var scroll_node : ScrollContainer = get_node(scroll)
export var grid : NodePath