2012-10-24 25 views

Trả lời

4

Không có đồng bộ hóa được tích hợp sẵn, do đó bạn phải thực hiện trên mỗi khung hình của riêng mình. Nhưng đừng lo lắng, nó rất dễ dàng.

Nếu bạn đặt cơ thể ở giữa hình dạng/hình dạng và hình ảnh có cùng kích thước thì có hai thứ bạn cần. Đầu tiên, đặt hình ảnh neo thành một nửa kích thước của nó. Sau đó, trong phương pháp cập nhật của bạn, bạn lặp lại các đối tượng bạn muốn đồng bộ hóa và đặt vị trí sprite thành vị trí cơ thể và xoay vòng xoay để xoay cơ thể được chuyển đổi thành độ. Bạn cũng có thể cần phải xoay nó 180 độ (trong trường hợp mô hình của bạn bị lật) và/hoặc đảo ngược vòng quay.

Trong mã

img = pyglet.image.load('img.png') 
img.anchor_x = img.width/2 
img.anchor_y = img.height/2 

sprite = pyglet.sprite.Sprite(img) 
sprite.body = body 

def update(dt): 

    sprite.rotation = math.degrees(-sprite.body.angle) 
    sprite.set_position(sprite.body.position.x, sprite.body.position.y) 

Đối với một ví dụ đầy đủ hãy nhìn vào ví dụ này tôi tạo: https://github.com/viblo/pymunk/blob/master/examples/using_sprites_pyglet.py

(Im tác giả của pymunk)

+0

nên các '+ 180' thực sự có mặt ở đó ? Tôi có kết quả tốt hơn nếu không có nó. – Flimm

+0

Chỉ khi mô hình của bạn bị lộn ngược. Trong ví dụ, sprite bị lộn ngược liên quan đến tam giác, vì vậy nó cần quay. Nhưng thông thường bạn không cần nó. Bây giờ tôi nhận ra rằng nó sẽ rõ ràng hơn nếu không có nó. – viblo

Các vấn đề liên quan