2010-02-08 38 views
5

Tôi có ý tưởng về cách tôi muốn tiếp cận điều này nhưng tôi không chắc liệu nó có lý tưởng hay không. Theo sự kiện, ví dụ, nếu người chơi thắng, một loạt các tia lửa bay trong 1 giây. Tôi đã nghĩ đến việc tạo lớp công cụ trò chơi của mình, sau đó tạo lớp cơ sở sự kiện trò chơi có 3 chức năng trống, cập nhật, vẽ, kết xuất. Có thể có ví dụ như fireforks để thu 100 đồng tiền trong 3 giây. Cách tôi muốn thực hiện nó là bằng cách có một vector sự kiện trong công cụ trò chơi của tôi, nơi tôi có thể đẩy hoạt hình fireforks vào. Một khi một cái gì đó được đẩy trong véc tơ, trò chơi có sự kiện [i] .render() vv ... loại bỏ nó Tôi nghĩ rằng mỗi sự kiện có thể có một chiều dài sự kiện trong khung hình, và mỗi khung một uint được tăng lên, nếu uint phù hợp với chiều dài, nó xuất hiện từ vectơ. Tôi chỉ không chắc chắn nếu làm như thế này là cách tốt nhất.Độ dài sự kiện trò chơi được xử lý như thế nào trong các trò chơi 2D

Cảm ơn

Trả lời

1

Tôi sẽ có từng cá thể sự kiện có một phương thức được gọi là isDone hoặc một cái gì đó tương tự. Sau đó, đối với mỗi khung, lặp qua các sự kiện của bạn và:

if (event.isDone()) { 
    //remove the event 
} else { 
    event.update(); 
} 

Làm theo cách này cho phép thay đổi dễ dàng hơn trong tương lai. Không phải tất cả các sự kiện sẽ kéo dài trong một khoảng thời gian cố định (điều này có thể không đúng đối với trò chơi của bạn), một số thậm chí có thể phụ thuộc vào những thứ khác với khung hiện tại.

Nhưng trong eventBaseClass của bạn, bạn có thể xác định isDone như:

return this.endFrame >= game.currentFrame; 

và ghi đè lên nó trong bất kỳ sự kiện mà bạn cần.

+0

Tôi thực sự thích điều này! Cảm ơn bạn !, Nhưng tăng các khung hình tất cả các thời gian có thể dẫn đến tràn? – jmasterx

+1

Giả sử kiến ​​trúc 32 bit và 60 khung hình/giây, nó sẽ tràn sau 828,5 ngày: (2 ** 32)/60/60/60/24 – Ponkadoodle

+0

Ah, tôi cần đánh dấu vào toán học của tôi :-p, Cảm ơn, Ill thực hiện nó theo cách này, nhưng tôi vẫn nghĩ rằng tôi nên thực hiện một nếu như vậy mà sau 828.5 ngày nó reset 0 ;-) – jmasterx

1

Có rất nhiều cách khác nhau để da mèo này. Ví dụ, một trong những thói quen của bạn có thể trả về một bool cho biết liệu hoạt ảnh này có được bật ra khỏi hàng đợi hoạt ảnh hay không. Tôi không chắc sự khác nhau giữa bản cập nhật, bản vẽ và kết xuất là gì, nhưng tất cả những gì ngoài điểm ...

Đề xuất của tôi sẽ được đọc. Tìm hiểu về những công cụ hoạt hình khác đang làm gì, hãy tìm một cuốn sách đá quý lập trình đồ họa tốt, và thu thập các ý tưởng và kỹ thuật từ các triển khai từ trước và được thiết lập. Một giải pháp thậm chí tốt hơn sẽ là sử dụng một trong số đó, giúp bạn tiết kiệm rất nhiều đau đớn và đau đớn.

+0

Trừ khi tất nhiên, họ là một masochist. – ChaosPandion

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