Cách tốt nhất để tạo hình ảnh động khi phát triển Android là gì?


10

Tôi đang cố gắng tạo trò chơi Android đầu tiên của mình và hiện tôi đang cố gắng tìm ra (với ai đó sẽ thực hiện các bản vẽ và một lập trình viên khác) cách tốt nhất để tạo hoạt hình là gì. (Ảnh động như nhân vật đang di chuyển, v.v.)

Đầu tiên, nhà thiết kế nói rằng cô ấy có thể vẽ các vật thể / nhân vật và làm động chúng bằng đèn flash để cô ấy không phải vẽ từng khung hình của một hành động. Lập trình viên khác và tôi không biết Flash quá nhiều nên tôi đã đề xuất trích xuất tất cả các hình ảnh từ hoạt hình Flash và làm cho chúng xuất hiện lần lượt khi hoạt hình bắt đầu.

Anh ấy nói rằng cuối cùng sẽ lấy quá nhiều tài nguyên trên CPU và tôi có xu hướng đồng ý, nhưng tôi không thực sự thấy chúng ta phải làm thế nào để tạo hiệu ứng mượt mà mà không quá khó với phần cứng và, nếu có thể, không có nhà thiết kế vẽ từng khung hình duy nhất trên Adobe Illustrator.

Một nhà phát triển trò chơi Android có kinh nghiệm có thể giúp tôi cân bằng điều này để chúng tôi có thể chuyển sang các phần khác của trò chơi vì tôi không biết cách tốt nhất để tạo hoạt hình là gì.

Câu trả lời:


12

Nếu bạn đang xem xét hoạt hình 2D, việc hiển thị một sprite và sau đó sẽ không phải là vấn đề đối với thiết bị (trừ khi các sprite của bạn rất lớn).

Dưới đây là một sprite hoạt hình điển hình là cái đầu tiên tôi tìm thấy với một chút tìm kiếm. Đây là một kỹ thuật thường được sử dụng và có rất nhiều trang web cung cấp spritesheets miễn phí (và nếu không, luôn luôn kiểm tra giấy phép).

Nguồn hình ảnh: [tại đây] (http://gaminggroundzero.com/?page_id=31)

Hình ảnh + nguồn tác giả: tại đây

Màu xanh lá cây được đặt làm màu trong suốt của hình ảnh để bạn không có bất kỳ vùng màu không mong muốn nào. Bạn sẽ cần phải biết tọa độ của từng hoạt hình trong chuỗi hoạt hình trong spritesheet để phát chúng.

Đối với Android, chúng ta có thể xem qua một công cụ trò chơi mã nguồn mở của Chris Pruett (trước đây thuộc Google) có tên là Đảo bản sao . Các mã nguồn có sẵn, và chúng ta có thể nhìn vào mình SpriteAnimation.javaSpriteComponent.java .

A SpriteAnimationđược tạo đơn giản với số khung và ID duy nhất và mỗi diễn viên trong trò chơi có thể có nhiều hình động. Có SpriteAnimationthể được cho một số AnimationFrames, mỗi s có thời lượng tính bằng mili giây. Điều này có nghĩa là các hình ảnh động khác nhau có thể được hoán đổi vào và ra tùy thuộc vào việc nhân vật di chuyển hay tấn công, v.v. (xem trong AnimationComponent.playAnimation(int id)).

Mỗi lần lặp của vòng lặp trò chơi, AnimationFrame's getFrame(float time)được gọi, và nó kiểm tra bao nhiêu thời gian đã trôi qua kể từ lần lặp chính cuối cùng và quyết định những khung hình để chơi tiếp theo, sau đó trả về khung để gửi đến hệ thống render. Điều này cho phép nó bỏ qua các khung hình động nếu hoạt hình diễn ra quá chậm.

Tôi hy vọng ví dụ này hoạt động và bạn có thể thấy nó đang được sử dụng trong trò chơi thực tế trên Android Marketplace tại đây .


Cảm ơn rất nhiều cho câu trả lời cũng được giải thích và chi tiết! Tôi sẽ xem làm thế nào tôi có thể thích ứng điều này với trò chơi của tôi. Điều này rất hữu ích!
Adam Smith

@AdamSmith: Sử dụng sprite-sheet như thế là cách tốt nhất cho hoạt hình 2D. Không thành vấn đề nếu nghệ sĩ của bạn tạo hoạt hình trong flash hoặc chương trình khác, miễn là anh ta có thể xuất hình ảnh động thành hình ảnh mà sau đó bạn có thể đóng gói thành một tấm sprite
bummzack

@bummzack Đó là loại câu trả lời tôi hy vọng, cảm ơn!
Adam Smith

@AdamSmith cũng cần lưu ý (để tránh nhầm lẫn) rằng Đảo bản sao không thực sự sử dụng các trang sprite, nó sử dụng các tệp duy nhất. Thảo luận về lý do tại sao spritesheets hữu ích có thể được tìm thấy ở đây và (với chi tiết hơn) ở đây .
Martin Foot

@Martin Foot, Bạn đã đưa ra một lời giải thích rất hay. Nhưng tôi vẫn nhầm lẫn, tôi đang có 10-15 loại hoạt hình và tôi có các khung hình của mỗi loại với kích thước 320x480 mà bạn có thể nói là hoạt hình toàn màn hình. Vì vậy, những gì bạn đề nghị tôi nên có cho SpriteSheet hoặc tập tin nguồn hoạt hình đơn? Tôi quá bối rối trong những gì để sử dụng. Xin vui lòng gợi ý cho tôi cách tốt nhất .. Cảm ơn rất nhiều ....
Scorpion
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.