Godot / GDScript scratchpad

Physicalized objects

MeshInstance
-> StaticBody
-> CollisionShape

Select Mesh, select Mesh button in upper left corner ([\]) -> Create Trimesh static body

Import mesh and create collision:


var terrains = [
	preload("res://terrain/terrain1.obj"),
	preload("res://terrain/terrain2.obj"),
	preload("res://terrain/terrain3.obj"),
	preload("res://terrain/terrain4.obj"),
	]

func gen_terrain():
    # choose a random terrain mesh
    choice = round(rand_range(0, terrains.size()-1))
    var terrain_mesh = terrains[choice].instance()
    for child in terrain_mesh.get_children():
        if typeof(child) == 17: #MeshInstance
            child.create_trimesh_collision()

    # add terrain to parent
    add_child(terrain_mesh)

func _ready():
	gen_terrain()

apply a custom material:

var MAT = preload("res://mat/vertex_color.tres")
# assuming child is MeshInstance:
child.set_material_override(MAT)