46 lines
1.4 KiB
GDScript
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()
|