Cuộn Box2D DebugDraw


7

Tôi đang phát triển một trò chơi bằng cách sử dụng Box2D (triển khai javascript - Box2DWeb) và tôi muốn biết làm thế nào tôi có thể xoay gỡ bản vẽ gỡ lỗi. Tôi biết câu trả lời thông thường là - không sử dụng bản vẽ gỡ lỗi, nó chỉ để gỡ lỗi. Tôi không, tuy nhiên không phải tất cả các đối tượng của tôi đều ở trên cùng một màn hình và tôi muốn xem chúng ở đâu trong biểu diễn vật lý.

Làm thế nào tôi có thể pan bản vẽ gỡ lỗi?

Như bạn có thể thấy các công cụ vẽ gỡ lỗi, được hiển thị ở trên cùng bên trái, nhưng nó chỉ hiển thị một phần nhỏ của thế giới.

Vẽ gỡ lỗi Box2D ở phía trên bên trái Dưới đây là một ví dụ về những gì tôi muốn nói:
http://encedayitwillmake.com/ChuClone/

Trò chơi là mã nguồn mở, Nếu bạn muốn chọc qua và lưu ý điều gì đó có lẽ tôi đang làm điều gì đó rõ ràng là sai:
https://github.com/encedayitwillmake/ChuClone

Đây là cách hacky của tôi mà tôi hiện đang sử dụng để cuộn chế độ xem b2DebugDraw, trong đó tôi đã thêm một thuộc tính offsetX và offsetY vào b2DebugDraw nhập mô tả hình ảnh ở đây


Tôi đã kết thúc việc thêm một thuộc tính offsetX / offsetY vào việc triển khai tôi đang sử dụng. Thông tin có thể được tìm thấy ở đây (ở phía dưới) github.com/encedayitwillmake/ChuClone/blob/master/js/lib/
trộm

Không có lý tưởng, do đó tiền thưởng!
onedayitwillmake

Tôi chỉ chơi xung quanh để giải quyết vấn đề tương tự. Đối với box2d, tôi đã gặp may mắn với mã ở đây: stackoverflow.com/questions/12340965/iêu
philipp

Câu trả lời:


1

Tôi đã tự hỏi câu hỏi này và câu trả lời khá đơn giản, chỉ cần dịch bối cảnh vẽ gỡ lỗi.

        debugDraw.SetDrawScale( camera.scaleWorldToScreen ); //My camera is doing the worldToScreen/screenToWorld conversion, so it has the scales.

        debugCtx.save();
        debugCtx.clearRect( 0, 0, debugCanvas.width, debugCanvas.height );
        debugCtx.translate( camera.position[0], camera.position[1] ); //translate it to the camera position
        debugCtx.scale( 1, -1 ); //invert the y coord.
        world.DrawDebugData();
        debugCtx.restore();

1

Tôi không chắc điều này có áp dụng cho trường hợp của bạn hay không, nhưng việc triển khai c2 của box2d yêu cầu một số lớp thực hiện các công việc rending. vì vậy bạn phải cung cấp cho box2d một số lớp cho anh ta biết cách vẽ các đối tượng. bạn có thể tự đệm tất cả dữ liệu box2d đã cho trong lớp gỡ lỗi của mình.


2
Hoặc bạn có thể chỉ cần glTranslate (hoặc tương đương) trước và sử dụng một DebugDrawer đơn giản (hoặc chứng khoán).
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.