Browse Source

Fix pick block in Voxel demo

Aaron Franke 4 months ago
parent
commit
f7a1433739
1 changed files with 4 additions and 2 deletions
  1. 4 2
      3d/voxel/player/player.gd

+ 4 - 2
3d/voxel/player/player.gd

@@ -37,8 +37,10 @@ func _process(_delta: float) -> void:
 	var ray_normal := raycast.get_collision_normal()
 	if Input.is_action_just_pressed(&"pick_block"):
 		# Block picking.
-		var block_global_position := Vector3i((ray_position - ray_normal / 2).floor())
-		_selected_block = voxel_world.get_block_global_position(block_global_position)
+		var block_global_position: Vector3 = (ray_position - ray_normal / 2).floor()
+		var block_sub_position: Vector3 = block_global_position.posmod(16)
+		var chunk_position: Vector3 = (block_global_position - block_sub_position) / 16
+		_selected_block = voxel_world.get_block_in_chunk(chunk_position, block_sub_position)
 	else:
 		# Block prev/next keys.
 		if Input.is_action_just_pressed(&"prev_block"):