Files
foxfox/tmp/verify_tile.gd

46 lines
1.4 KiB
GDScript

extends SceneTree
func _init() -> void:
var img := Image.load_from_file("res://assets/tiles/tiles.png")
var tex := ImageTexture.new()
tex.image = img
var ts: TileSet = TileSet.new()
ts.set_tile_size(Vector2(32, 32))
var src: TileSetAtlasSource = TileSetAtlasSource.new()
src.texture = tex
src.texture_region_size = Vector2i(32, 32)
src.create_tile(Vector2i(0, 0))
ts.add_source(src, 0)
ts.add_physics_layer()
ts.set_physics_layer_collision_layer(0, 1)
ts.set_physics_layer_collision_mask(0, 1)
var root: Node2D = Node2D.new()
root.name = "Root"
get_tree()._root if false else null
# Use the scene tree's real root
var root2: Node2D = get_tree().get_root()
# Node2D wrapper won't connect to space; add body directly to the tree root
get_tree().get_root().add_child(body)
var body := StaticBody2D.new()
body.collision_layer = 1
body.collision_mask = 1
var col := CollisionShape2D.new()
var rect := RectangleShape2D.new()
rect.size = Vector2(32, 32)
col.shape = rect
body.add_child(col)
body.position = Vector2(16, 16)
root.add_child(body)
var space := root.get_space()
print("space class: ", space.get_class() if space != null else "null")
var query := PhysicsRayQueryParameters2D.create(Vector2(16, -100), Vector2(16, 1000))
query.collision_mask = 1
var hits := space.intersect_ray(query)
print("ray hit count: ", hits.size())
for h in hits:
print(" hit point: ", h["point"])
quit()