Godot Version
Godot 4.6
Question
I’m trying to create a raycast to see when my player is looking at something but it never seems to detect any collisions
private float interactDistance = 10.0f;
private void InteractCast()
{
Camera3D camera = GetNode<Camera3D>("CameraPivot/CameraArm/Camera3D");
PhysicsDirectSpaceState3D spaceState = camera.GetWorld3D().DirectSpaceState;
Vector2 screenCenter = GetViewport().GetVisibleRect().Size / 2;
Vector3 origin = camera.ProjectRayOrigin(screenCenter);
Vector3 end = origin + camera.ProjectLocalRayNormal(screenCenter) * interactDistance;
PhysicsRayQueryParameters3D query = PhysicsRayQueryParameters3D.Create(origin, end);
query.CollideWithBodies = true;
query.CollideWithAreas = true;
var result = spaceState.IntersectRay(query);
if (result.ContainsKey("collider"))
{
var currentCastResult = result["collider"];
GD.Print(currentCastResult);
}
}