浏览代码

Merge pull request #54369 from S0yKaf/fix-hardcoded-ray-distance

Fix hardcoded raycast distance in viewport object picking
Rémi Verschelde 3 年之前
父节点
当前提交
96ce806b2f
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      scene/main/viewport.cpp

+ 2 - 1
scene/main/viewport.cpp

@@ -715,10 +715,11 @@ void Viewport::_process_picking() {
 			if (camera_3d) {
 			if (camera_3d) {
 				Vector3 from = camera_3d->project_ray_origin(pos);
 				Vector3 from = camera_3d->project_ray_origin(pos);
 				Vector3 dir = camera_3d->project_ray_normal(pos);
 				Vector3 dir = camera_3d->project_ray_normal(pos);
+				real_t far = camera_3d->far;
 
 
 				PhysicsDirectSpaceState3D *space = PhysicsServer3D::get_singleton()->space_get_direct_state(find_world_3d()->get_space());
 				PhysicsDirectSpaceState3D *space = PhysicsServer3D::get_singleton()->space_get_direct_state(find_world_3d()->get_space());
 				if (space) {
 				if (space) {
-					bool col = space->intersect_ray(from, from + dir * 10000, result, Set<RID>(), 0xFFFFFFFF, true, true, true);
+					bool col = space->intersect_ray(from, from + dir * far, result, Set<RID>(), 0xFFFFFFFF, true, true, true);
 					ObjectID new_collider;
 					ObjectID new_collider;
 					if (col) {
 					if (col) {
 						CollisionObject3D *co = Object::cast_to<CollisionObject3D>(result.collider);
 						CollisionObject3D *co = Object::cast_to<CollisionObject3D>(result.collider);