using Godot; using System; public partial class Floor : StaticBody3D { public override void _Input(InputEvent @event) { base._Input(@event); if (@event is InputEventMouseButton ev && ev.Pressed) { switch (ev.ButtonIndex) { case MouseButton.Left: { var camera = Global.camera; if (camera != null) { var mousePos = GetViewport().GetMousePosition(); var rayOrigin = camera.ProjectRayOrigin(mousePos); var rayEnd = rayOrigin + camera.ProjectRayNormal(mousePos) * 1000f; var query = PhysicsRayQueryParameters3D.Create(rayOrigin, rayEnd); if (Global.player != null) query.Exclude = new Godot.Collections.Array { ((CollisionObject3D)Global.player).GetRid() }; var result = GetWorld3D().DirectSpaceState.IntersectRay(query); if (result.Count > 0 && (GodotObject)result["collider"] == this) { var hitPos = (Vector3)result["position"]; GD.Print("Floor hit at: " + hitPos); } } break; } case MouseButton.Right: GD.Print("Right Click"); break; } } } }