Tôi đưa ra một câu hỏi khác về kéo chuột (tôi đang sử dụng Unity với C #), nhưng với một chi tiết cụ thể ít phổ biến hơn: sự tồn tại của các chướng ngại vật ở giữa máng kéo xảy ra (không gian 3D, không phải 2D) .
Hãy để tôi giải thích. Giả sử tôi có một mặt phẳng mà tôi muốn kéo một khối gọi là "obj". Điều đó thật dễ dàng. Đây là cách thực hiện đơn giản của tôi cho điều đó:
void Update () {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray, out hit, 1000000))
obj.transform.position = new Vector3(hit.point.x,0.25F,hit.point.z);
}
Nó hoạt động. Tuy nhiên, giả sử rằng tôi cũng có một vài hình khối khác trên máy bay, đó là những chướng ngại vật. Rõ ràng, khi người chơi di chuyển "obj" trên máy bay, chuyển động như vậy sẽ bị chặn bởi các chướng ngại vật. Và sau đó, trong khi va chạm với các chướng ngại vật, "obj" chỉ nên di chuyển bắn tỉa sang hai bên của chướng ngại vật đó. Nếu chuột được di chuyển và "obj" dừng va chạm với chướng ngại vật, chuyển động kiểu kéo tự do lại tiếp tục.
Để làm cho thử thách khó hơn, tôi đang cố gắng hết sức để đạt được điều đó mà không cần sử dụng các thành phần RigidBody tại các chướng ngại vật (đối tượng bị kéo có thể có nó). Bất kỳ ý tưởng về cách hiệu quả nhất để đạt được điều đó là gì? Cảm ơn nhiều!
EDIT: Các nhà bình luận đã chú ý rằng tôi nên đề cập rằng các đối tượng được phép xoay khi chụp.
EDIT 2: Xem xét độ khó của công thức ban đầu, tôi đã thay đổi câu hỏi cho phép sử dụng các thành phần Rigidbody tại các đối tượng được kéo. Giải pháp không thể sử dụng các thành phần Rigidbody tại các chướng ngại vật.