From 1e7df1f115d9e9aac21621f40581a74b9ab6a66f Mon Sep 17 00:00:00 2001 From: whosit Date: Sun, 23 May 2021 19:17:38 +0300 Subject: [PATCH] account for eye_offset when raycasting --- init.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/init.lua b/init.lua index 433fca1..7e89076 100644 --- a/init.lua +++ b/init.lua @@ -28,6 +28,11 @@ local function raycast_crosshair(player, range) local p_pos = player:get_pos() local p_eye_height = player:get_properties().eye_height local p_eye_pos = { x = p_pos.x, y = p_pos.y + p_eye_height, z = p_pos.z } + -- take eye_offset into account for camera position (when sitting, etc) + local p_eye_offset = vector.multiply(player:get_eye_offset(), 0.1) + local yaw = player:get_look_horizontal() + p_eye_pos = vector.add(p_eye_pos, vector.rotate_around_axis(p_eye_offset, {x=0,y=1,z=0}, yaw)) + local to = vector.add(p_eye_pos, vector.multiply(player:get_look_dir(), range)) local ray = minetest.raycast(p_eye_pos, to, point_to_objects, point_to_liquids) local pointed_thing = ray:next()