9/09/2014

2D Platformer Bài 1 - Tiếp Đất




Rất hân hạnh và chào đón những ai muốn bước vào con đường lập trình game 2D với Unity game engine. Chuỗi bài viết này sẽ sử dụng đến những update mới nhất được thêm vào trong phiên bản Unity 4.3. Vâng, tất cả mọi thứ, platformer căn bản, parallax scrolling, trí tuệ nhân tạo, UI, đấu boss, khá hấp dẫn nhỉ?



Các bạn phải sử dụng Unity 3D phiên bản 4.3 hoặc mới nhất để thực hiện chuỗi bài viết này nhé.
Bạn có thể tải và dùng thử miễn phí 30 ngày phiên bản mới nhất của Unity trên trang chủ.

Trong chuỗi bài viết Lập trình game 2D này sử dụng ngôn ngữ lập trình C# là chính. Bạn nên đầu tư một xíu về ngôn ngữ này để có thể hiểu và đọc được code. Chúng ta sẽ không thảo luận về các vấn đề các cơ bản của C# như cách nó làm việc hay tại sao như vậy.
Nếu bạn không thể hiểu và đọc được code, không sao cả, cứ việc copy - paste và tiếp tục thực hiện cho đến khi chuỗi bài viết này hoàn thành.
Việc đầu tiên là bạn mở Unity lên và tạo một Project mới.

Đầu tiên, mở Unity lên và tạo project mới bằng cách vào File | New Project và thực hiện như sau:



Thế giới 2D của Unity

Unity thực chất là engine game 3D. Việc đầu tiên phải hiểu là khi làm game 2D với Unity thực chất là trêu trò với engine. Dĩ nhiên, bạn có thể biết cách để đưa đánh lừa engine theo đúng cách để làm một game chạy bộ trong lăng mộ, nhưng bạn có biết cách để làm một game 2D platformer cuộn màn hình chưa? Cả hai đều sử dụng kĩ thuật giống nhau.


Phối cảnh Camera


Nếu bạn đã từng đọc qua bài viết về Phối cảnh Camera trong chuỗi bài viết Cookbook, bạn sẽ biết được rằng có 2 chế độ Perspective (chiếu Bối cảnh) và Orthographic (chiếu Trực giao). Ở đây chúng ta sẽ dùng Orthographic là chính.


Nếu bạn chưa biết gì về sự khác biệt của 2 chế độ này, thực ra cũng khá đơn giản. Một camera với chế độ chiếu Perspective - chiếu Bối cảnh là camera mặc định của Unity, nó cho ta thấy vật thể giống như mắt người nhìn. Orthographic - chiếu Trực giao thì ngược lại, hoàn toàn loại bỏ đi chiều sâu của góc nhìn. Vì vậy, không vấn đề gì khi một vật thể ở xa camera. Mọi vật thể đều song song với camera. Camera Orthographic chỉ đơn giản là render đối tượng hoặc không. Tuy nhiên trục Z của vật thể đều không thay đổi. Trong các phiên bản cũ hơn của Unity, camera perspective đã làm tốt công việc hỗ trợ tùy chỉnh góc độ, càng xuất sắc hơn ở các phiên bản sau.

Trước khi có phiên bản Unity 4.3, chúng ta thực sự muốn một camera perspective để có thể sử dụng thông tin chiều sâu để dễ dàng cuộn góc độ (parallax scrolling) hoặc hiệu ứng giả lập giống như những thứ ở xa camera thì di chuyển chậm hơn trông như đời thực. Thậm chí phiên bản 4.3, nếu bạn dự định làm game 2.5D (game 2D sử dụng vật thể 3D), khi đó bạn có thể vẫn muốn sử dụng camera perspective. Trái lại, game 2D với Unity 4.3, hãy chắc rằng camera được thiết lập thành orthographic, đây là thiết lập mặc định cho project 2D.

Chúng ta sẽ nói về cuộn góc độ và trục chiều sâu Z ở bài viết sau.


Tiếp Đất

Việc đầu tiên chúng ta cần làm đó là tạo mặt nền cho game. Nếu không có mặt nền, nhân vật hay kẻ thù sẽ rơi vô hạn định vào không gian.

B1. Tại thẻ Project, nhấp chọn nút Create và chọn Folder, đổi tên folder này lại thành Textures, tiếp tục vào thư mục Textures và tạo thêm thư mục tên là Scenery như hình sau:



B2. Tải file ảnh Platform.png này về và kéo thả vào thư mục Scenery.




B3. Unity 4.3 giờ đã có thêm kiểu texture là Sprite. Bạn có thể chọn kiểu này bằng cách nhấp chọn Platform ở thẻ Project và nhìn qua thẻ Inspector. Nếu như khi bạn tạo Project để chế độ mặc định là 2D, nó sẽ tự đổi các file texture thành Sprite. Tiến hành điều chỉnh lại như sau rồi ấn Apply:


Khi tạo một bức ảnh 2D trong Unity hay bất kỳ game engine nào khác, không nên dùng chế độ true gradients. Bạn có thể sử dụng gradient khi thiết kế ảnh nhưng bạn nên chuyển nó sang chế độ True Color để máy render chính xác và ít tốn vùng nhớ đồ họa hơn.


B4. Kéo thả Platform.png vào thẻ Hierarchy và qua thẻ Inspector, điều chỉnh như sau:



Để chắc rằng nhân vật có thể bước đi trên vật thể, chúng ta phải gắn collider cho nó.

B5. Nhấp chọn Platform ở thẻ Hierarchy, vào Component | Physics 2D | Poligon Collider 2D


Khi nhấp chọn Platform và nhìn sang khung nhìn Scene, bạn sẽ thấy những đường viền màu xanh lá bao quanh lấy Platform. Đây là chức năng hỗ trợ 2D tuyệt vời nhất của Unity 4.3. Nó sẽ tự động tạo các tam giác colider bao quanh hình dáng của đối tượng dựa trên kênh Alpha của bức ảnh. Vì vậy hãy nhớ chú ý kênh Alpha khi bạn thiết kế bản thảo nhé. Rất tiện lợi cho việc xử lý các góc cạnh của các vật thể phức tạp.

Có nhiều platform sử dụng box collider hoạt động ổn. Tuy nhiên, hãy nhìn lại platform chúng ta đang làm, đối tượng platform này có rất nhiều góc cạnh và bề lõm. Nếu chỉ đặt box collider bao quanh toàn bộ từ góc trên xuống góc dưới. Thì nếu như có viên đạn nào bay qua va chạm với collider cũng đều biến mất. Điều này không đúng với những gì chúng ta muốn. Chúng ta muốn viên đạn chỉ biến mất khi va chạm với vật thể thực.


B6. Save scene của bạn lại bằng cách bấm Ctrl + S và đặt tên là BoBScene và nên đặt vào thư mục mới với tên Scenes.

6 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. This comment has been removed by a blog administrator.

    ReplyDelete
  3. This comment has been removed by a blog administrator.

    ReplyDelete
  4. BetMGM signs sportsbook in Michigan with FanDuel Sportsbook
    DraftKings and 전라남도 출장안마 FanDuel 춘천 출장마사지 Sportsbook 과천 출장안마 have signed a partnership that will 이천 출장마사지 provide BetMGM with access to BetMGM 밀양 출장샵 sportsbook information.

    ReplyDelete