-->

  • Learning Construct 2 - Chương 5 - Phần 1



    Chương 5. Làm platformer game

    Chào mừng đến với chương này. Chúng ta đã đề cập rất nhiều từ chương trước: object mới, hành vi mới, sự kiện phụ, và biểu thức. Những điều mới này là một trong những tính năng phổ biến nhất mà bạn sử dụng trong dự án của mình cho dù bạn muốn làm game như thế nào. Những Solid object được sử dụng khi bạn muốn gây trở ngại trong game và những sự kiện phụ cùng biểu thức được sử dụng khi bạn làm game với cơ chế phức tạp.

    Tôi sẽ dạy bạn cách sử dụng những kiến thức từ trước tới giờ ở cấp độ mới, làm thế nào để tạo ra một trò chơi phức tạp hơn, một thể loại mà cực kì phổ biến bây giờ, đó chính là platformer. Chúng ta sẽ sử dụng solid object để thiết kế các level; và chúng ta sẽ tạo ra một phong cách Mario và những yếu tố câu đố. Tôi sẽ dạy bạn cách sử dụng vật lí học (phát hiện và đáp ứng các va chạm) trong C2.

    Trong chương này ta sẽ học:

    • Cách chuẩn bị một cấp độ.
    • Cách sử dụng vật lí học.
    • Cách kết hợp hai đối tượng.

    Bài 1. Chuẩn bị cấp độ

    Bắt đầu ở chương này, tôi sẽ bỏ qua phần thiết kế game và chuyển xuống phần các bit kĩ thuật. Bằng cách này tôi có thể giải thích cho các bạn kĩ hơn về mỗi chủ đề. Bây giờ, hãy tạo một dự án trống trên C2 và một cấp độ giống như trong hình dưới đây:




    Cấp độ ví dụ này có tất cả những yêu cầu cơ bản của một cấp độ platformer. Nó có mặt đất để đi, mặt phẳng để bước và những cái hộp lơ lửng chứa tiền xu. Đây là cơ hội tốt để làm quen với một game cơ học sớm, vì vậy không gian trò chơi có thể test một hoặc tất cả hệ thống của mình một cách nhanh chóng. Tất cả sprite chúng ta sử dụng ở trong tệp platformer pack, có thể tải trên trang chủ. Platformer pack chứa rất nhiều sprite dành cho game platformer, là ý tưởng tốt để bạn sử dụng sau này.

    1. Thiết lập nhân vật


    Thiết lập nhân vật chính đòi hỏi chúng ta phải có một ít hoạt ảnh với sprite của nó. Những hoạt ảnh được yêu cầu:
    • Đứng
    • Đi
    • Nhảy
    • Bị thương
    Đó là những hoạt ảnh cơ bản; chúng ta có thể thêm nhiều hơn nếu cần thiết, có thể là leo trèo hoặc bơi. Các sprite nhân vật mà ta sẽ sử dụng có sẵn trong platformer pack / Extra animations enemies / Alien; ở đây có một vài alien sẵn sàng được sử dụng, cùng với hoạt ảnh của nó. Chúng ta sẽ sử dụng alien màu xanh lá cây trong chương này, tất nhiên bạn có thể chọn bất cứ màu nào mà bạn muốn.

    Thêm một sprite game object mới và đặt tên nó là alien. Ta sẽ có một số hoạt ảnh như sau:


    Đối với hoạt ảnh Default, chúng ta sẽ sử dụng stand sprite (alienGreen_stand.png). Với hoạt ảnh Walking, chúng ta sẽ sử dụng 2 walking sprite của alien sprite (alienGreen_walk1.pngalienGreen_walk2.png). Nếu bạn muốn nhiều khung hình hơn cho hoạt ảnh, bạn cần sử dụng cửa sổ Animation frames. Ở khung hình đầu tiên, thêm sprite walk1 như bình thường, nhưng với những khung hình sau này, chúng ta sẽ kích chuột phải vào cửa sổ Animation frames và kích vào nút Add frames.

    Sau khi chúng ta thêm khung hình, ta cần tải lại hình ảnh từ 1 tệp. Bây giờ, hoạt ảnh này đã sẵn sàng có nhiều hơn 1 khung hình, hoạt ảnh sẽ tự động bắt đầu khi chúng ta chuyển sang hoạt ảnh Walking. Vấn đề là chúng ta muốn hoạt ảnh Walking lặp, ko chỉ dừng lại cho đến khi chạy tới  khung hình cuối cùng ( giống như tất cả các hoạt ảnh mặc định ). Vậy ta làm thế nào?

    Câu trả lời là thay đổi thuộc tính của nó. Kích vào tên của một hoạt ảnh mà thuộc tính của nó bạn muốn thay đổi ở cửa sổ Animation, sau đó nhìn vào thành Properties. Bạn có thể thấy thanh Properties bây giờ hiện lên các thuộc tính của hoạt ảnh mà bạn đã chọn. Chuyển thuộc tính của Loop thành Yes. Và sau đó, hoạt ảnh này sẽ tự động lặp khi chạy tới khung hình cuối cùng:


    Chúng ta đã hoàn thành việc thêm khung hình vào hoạt ảnh Walking. Chuyển sang hoạt ảnh Jumping và chọn hình ảnh nhảy (alienGreen_jump). Đóng cửa sổ chỉnh sửa hình ảnh, và bây giờ ta đã có nhân vật của chúng ta trên màn hình.



    WAITING FOR LUV
    Bạn có muốn cải thiện khả năng thiết kế đồ họa của mình? Chắc hẳn các bạn cũng biết, nếu các dòng code là linh hồn của một trò chơi, thì đồ họa chính là bộ mặt của trò chơi đó. Đồ họa đẹp, dễ nhìn sẽ khiến trò chơi của bạn tăng tỉ lệ hấp dẫn người xem đến 90%. Hiện tại có hai công cụ hỗ trợ thiết kế đồ họa game tiện nhất mà mình biết, đó là Photoshop và Illustrator. Mình sẽ cố gắng tìm kiếm và chia sẻ các đồ họa game miễn phí cho các bạn tại blog này; tuy nhiên, một trò chơi mà 100% do chính mình tạo ra vẫn hơn là đi cóp nhặt hình ảnh từ nơi khác đúng không nào. Tiện đây, mình có chia sẻ một khóa học thiết kế đồ họa Game 2D cho Mobile. Các bạn có thể tham khảo dưới đây để được giảm 40% học phí nhé.


    2. Di chuyển nhân vật

    Bây giờ ta đã có nhân vật trên màn hình, nhưng ngay bây giờ nhân vật của chúng ta vẫn không thể di chuyển; chúng ta sẽ khiến nó di chuyển như thể nó nhận thức được rằng nó là một nhân vật trong platformer game. May mắn là điều này rất đơn giản trong C2: sử dụng hành vi Platform. Hành vi này nằm ở phần movement khi bạn thêm hành vi. Thêm hành vi này tới alien object, và nó có thể di chuyển như là Mario. Tuy nhiên, trước khi có thể làm được điều này, ta cần phải xác định mặt đất cho nó. Một object với hành vi Platform không thể đi qa bất kì solid object nào; chúng ta sẽ thêm hành vi Solid cho grassMid object. Test thử game bây giờ, bạn có thể điều khiến alien bằng các nút mũi tên.

    3. Thay đổi hoạt ảnh

    Tôi chắc chắn rằng bạn đã nhận ra khi bạn di chuyển alien object, nó ko hề sinh động, nó vẫn hiển thị hoạt ảnh của nó. Vâng, chính là do ta không bảo nó thay đổi hoạt ảnh. Hãy làm điều đó ngay bây giờ.

    Để làm điều này, ta cần phải xem các mũi tên có được nhấn hay ko. C2 làm điều này thông qa game object Keyboard, chính vì vậy, hãy thêm game object này tới project của bạn. Sau đó chuyển đến event sheet.

    Chúng ta muốn thay đổi hoạt ảnh Walking khi chúng ta nhấn nút mũi tên trái hoặc phải và thay đổi hoạt ảnh Jumping khi chúng ta nhảy lên và trở về hoạt ảnh mặc định khi ta không nhấn bất kì nút nào. Sự kết hợp của Keyboard object và hành vi Behavior đã khiến logic này được bảo đảm. Chúng ta sẽ thay đổi hoạt ảnh của walking khi ấn nút mũi tên trái hoặc phải. Dòng code khi di chuyển sang phải như sau:


    Dòng code di chuyển sang trái như sau:

    Sau đó ta sẽ thay đổi hoạt ảnh của Jumping khi alien đang ở trên không. May mắn, hành vi Platform của C2 cho chúng ta một cách dễ dàng để nhìn trạng thái khác nhau của nhân vật, từ nhảy lên đến khi rơi xuống đất. Chúng ta sẽ thay đổi hoạt ảnh của nhân vật khi nhảy như sau:


    Những gì còn lại là thay đổi hoạt ảnh trở về hoạt ảnh đứng im mặc định. Có 2 nơi ta phải làm điều này: khi ta ngừng ấn nút mũi tên trái phải và khi nhân vật hạ xuống đất.

    Keyboard object có một sự kiện On released để kiểm tra khi nào người chơi ấn nút, và Platform object có sự kiện On landed để kiểm tra khi nào người chơi hạ cánh sau khi nhảy hoặc ko. Tuy nhiên chúng ta chỉ thay đổi về hoạt ảnh mặc định nếu hoạt ảnh đang chạy là Jumping. Điều này nghĩa là ta vẫn có thể di chuyển nhân vật nếu nó đang ở trên không và ta muốn hắn tiếp tục đi sang trái hoặc phải khi hạ xuống đất. Chính vì vậy, code như sau:


    Bạn có thể đã quan sát từ or trong dòng code và đang thắc mắc nó là cái gì. Giống như các ngôn ngữ lập trình khác, C2 cũng có từ khóa AND OR, có chức năng như sau:
    • AND: có nghĩa là các điều kiện trong một sự kiện phải đúng để các sự kiện phụ khởi chạy.
    • OR: từ khóa này tức là chỉ cần 1 trong các điều đúng.

    Để tạo từ khóa or, kích chuột phải vào sự kiện và lựa chọn Make ‘Or’ block; từ khóa or sẽ được cấp cho khối đó.


    Lưu ý rằng một sự kiện không thể có cả AND OR cùng 1 lúc; phải luôn luôn là 1 trong 2. Nếu bạn muốn thấy 2 điều kiện cùng 1 lúc và sau đó sử dụng khối or, hãy sử dụng sự kiện phụ.


    Thử game bây giờ, và bạn có thể thấy nhân vật di chuyển bằng hướng mũi tên. Tuy nhiên, có một vấn đề, nếu bạn di chuyển sang bên trái, nhân vật vẫn không quay người lại, đó là do ta không lật ngược hình ảnh lại.


    Có hai cách lật hình ảnh trong C2: lật theo chiều ngang và lật theo chiều dọc. Lật ngang thì được gọi là phản chiếu (mirror) còn lật dọc là lộn ngược (flip). Ở đây, chúng ta muốn phản chiếu sprite khi ta ấn nút mũi tên trái và không phản chiếu khi ta ấn nút mũi tên phải. Thay đổi code như này khi ta thiết lập hoạt ảnh cho Walking:


    Và dòng code như thế này khi ấn nút trái:


    Điều này làm cho nhân vật của ta quay mặt sang trái khi ta ấn mũi tên trái và ngược lại. Đừng quên lưu dự án của bạn lại khi chuyển sang phần tiếp theo.

    4. Làm cho camera theo dõi nhân vật chính

    Bây giờ, alien có thể di chuyển bình thường. Tuy nhiên nếu bạn di chuyển sang phải 1 lúc, nhân vật sẽ đi ra khỏi màn hình. Điều này là do camera vẫn giữ nguyên khung hình khi bạn di chuyển sang phải. Để sửa lỗi này, chúng ta sẽ khiến cho camera di chuyển theo sau nhân vật.

    Nghe thì có vẻ khó, nhưng chúng ta chỉ cần thêm hành vi mới vào người chơi: hành vi Scroll To. Hành vi này sẽ khiến camera bám theo hình ảnh nhân vật, và nếu có nhiều object được gán hành vi này, nó sẽ được quay vào trung tâm, giữa tất cả các object. Thêm hành vi này và camera sẽ tự động theo sau người chơi.

    Có một vấn đề nữa ở đây mà tôi muốn nhắc đến. Nếu bạn đi quá xa về bên phải hoặc trái, bạn sẽ thấy nhân vật rơi ra khỏi layout. Điều này là do không có bất cứ thứ gì cản nhân vật rơi xuống. Có hai cách để ngăn chặn điều này: xây hai bức tường ở bên trái hoặc phải hoặc sử dụng một hành vi để dừng object đi ra khỏi layout.

    Hành vi này được gọi là Bound to Layout. Tất cả những object với hành vi này không thể đi ra ngoài layout, như thể có một bức tường vô hình ngăn họ lại. Thêm nó vào alien, chúng ta có thể dừng việc nhảy ra khỏi layout. Tất nhiên, thay vì một bức tường vô hình, bạn cũng có thể làm một vách đá hoặc sông, tùy thuộc vào game của bạn.

    5. Nhảy qua các platform

    Bây giờ, hãy đến khía cạnh hấp dẫn nhất của game platformer: nhảy qua các platform. Ở đây, ta sẽ làm 2 loại platform: một là va từ bên dưới, hai là nhảy qua từ bên dưới. Tất cả các nền đất đều có thể bước lên. Để tạo loại nền đất đầu tiên, chúng ta chỉ cần thêm hành vi Solid vào object mà ta muốn làm nền tảng. Chúng ta sẽ làm boxAlt object như một nền đất, vì vậy hãy thêm hành vi Solid vào nó.

    Hãy thử kiểm tra trò chơi ngay bây giờ, và ta có thể thấy boxAlt như một nền đất rắn. Tuy nhiên, alien lại nhảy ko đủ cao để đập vào nó trong một lần nhảy; hãy khiến hắn nhảy cao hơn. Để làm điều nay, chúng ta phải thay đổi giá trị của thuộc tính Jump strength ở thuộc tính của hành vi Platform, màn hình như sau:


    Test game lại một lần nữa, alien đã có thể nhảy lên platform trong một lần nhảy.

    Điều tiếp theo chúng ta muốn làm đó là làm platform mà người chơi muốn nhảy qua. May mắn cho ta, có một hành vi cho thể loại này được gọi là Jump-thru, Thêm nó vào boxEmpty object, và ta đã có loại platform mà ta muốn. Thử nhảy từ bên dưới boxEmpty object, bạn sẽ thấy alien nhảy qua nó như ta đã cài đặt.

    Còn một điều nữa ta cần làm với Jump-thru platform: để nhảy xuống khi ta đang ở trên nó. Hành động này cần thêm 1 sự kiện. Chúng ta sẽ khiến nhân vật khi chúng ta ấn phím mũi tên xuống hoặc phím cách, vì đây là thiết kế khá trực quan sẽ làm cho mã xuất hiện như sau:



    Bản dịch do construct2vn.ga thực hiện
    Ai sao chép hay chia sẻ hãy ghi nguồn và đưa link www.construct2vn.ga vào đầu bài chia sẻ nhé


  • DONATE TINH THẦN CHO BLOG TẠI ĐÂY

    Nếu các bạn thấy blog có ích hãy ủng hộ blog hàng ngày tại đây. Chỉ cần thi thoảng chơi game và tìm bug cho tụi mình là được. Đây là ủng hộ tinh thần, không phải tiền mặt, vật chất và không bắt buộc. Xin chân thành cảm ơn ahihi. Chúc các bạn một ngày zui zẻ.

    TELEPHONE

    02273 7x2 xxx
    02273 xxx 27x

    MOBILE

    0162 x15 xx33