Sure! Here's the code formatted with proper indentation:

var immediate_geometry = $ImmediateGeometryNode
var camera_position = get_viewport().get_camera().get_global_transform().origin
var distance_to_camera = camera_position.distance_to(other_mesh_position)
var vertices = immediate_geometry.get_mesh().surface_get_arrays(0)[0]

for i in range(vertices.size()):
var vertex = vertices[i]
vertex.z = -distance_to_camera + 0.01 # 0.01 is a small value to ensure distance from camera
vertices[i] = vertex

immediate_geometry.get_mesh().surface_set_arrays(0, [vertices])

In this code, immediate_geometry is the ImmediateGeometry node you want to move, camera_position is the position of the camera, other_mesh_position is the position of the other mesh that is causing Z-fighting, and vertices is the vertex array of the ImmediateGeometry's mesh.

The for loop goes through each vertex in the array, calculates the new Z-coordinate based on the distance to the camera, and then sets the vertex's Z-coordinate to the new value. Finally, the modified vertex array is set back onto the ImmediateGeometry's mesh.

For more information on ImmediateGeometry nodes and manipulating their vertex arrays in Godot, you can refer to the Godot documentation [4] and a related Godot Q&A thread.

Note that this solution may not be the most efficient or optimal, and there may be other ways to prevent Z-fighting in your specific situation. Additionally, you may need to experiment with the value added to the distance to camera to achieve the desired effect.
แน่นอน! นี่คือโค้ดที่จัดรูปแบบด้วยการเยื้องที่เหมาะสม: varทันที_geometry = $ImmediateGeometryNode var camera_position = get_viewport().get_camera().get_global_transform().origin var Distance_to_camera = camera_position.distance_to(other_mesh_position) var vertices = Instant_geometry.get_mesh().surface_get_arrays(0 )[0] สำหรับ i อยู่ในช่วง(vertices.size()): var vertex = vertices[i] vertex.z = -distance_to_camer + 0.01 # 0.01 เป็นค่าเล็กน้อยเพื่อให้แน่ใจว่าระยะห่างจากจุดยอดของกล้อง[i] = vertex ทันที_เรขาคณิต get_mesh().surface_set_arrays(0, [vertices]) ในโค้ดนี้ Instant_geometry คือโหนด ImmediateGeometry ที่คุณต้องการย้าย, camera_position คือตำแหน่งของกล้อง, other_mesh_position คือตำแหน่งของ mesh อื่นที่ทำให้เกิดการชนกันของ Z และ จุดยอดคืออาร์เรย์จุดยอดของเมชของ ImmediateGeometry การวนซ้ำสำหรับจะผ่านแต่ละจุดยอดในอาร์เรย์ คำนวณพิกัด Z ใหม่ตามระยะห่างจากกล้อง จากนั้นตั้งค่าพิกัด Z ของจุดยอดเป็นค่าใหม่ สุดท้าย อาร์เรย์จุดยอดที่แก้ไขจะถูกตั้งค่ากลับลงบนเมชของ ImmediateGeometry สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโหนด ImmediateGeometry และการจัดการจุดสุดยอดอาร์เรย์ใน Godot คุณสามารถดูเอกสารประกอบของ Godot [4] และกระทู้ถามตอบของ Godot ที่เกี่ยวข้อง โปรดทราบว่าโซลูชันนี้อาจไม่มีประสิทธิภาพหรือเหมาะสมที่สุด และอาจมีวิธีอื่นในการป้องกันระนาบขัดแย้งในสถานการณ์เฉพาะของคุณ นอกจากนี้ คุณอาจต้องทดลองเพิ่มค่าระยะห่างจากกล้องเพื่อให้ได้เอฟเฟ็กต์ที่ต้องการ
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence