-->

  • Construct 2 Game Development by Example - Chương 7 - Phần 3




    Bài 8. Theo dõi điểm số

    Hãy thiết lập những thứ để ta có thể theo dõi điểm số cho việc phá huỷ goalBall sprite. Thêm một biến toàn cầu khác và đặt tên nó là Score:


    Sau đó, thêm một hành động goalBall khác. Lần này, cho nó một hành vi Add to để thêm giá trị của Score. Hãy điền 100 vào vùng Value:


    Sau đó, sao chép và dán hành động này vào tất cả các sự kiện va chạm goalBall. Bây giờ, mỗi lần goalBall sprite bị phá huỷ, điểm số của người chơi sẽ tăng lên 100.

    Bài 9. Thêm đối tượng văn bản vào HUD


    Tiếp theo, chúng ta cần tạo một HUD để cho người chơi biết điểm số của họ là cái gì. Hãy bắt đầu bằng việc thêm một hộp văn bản vào màn hình. Kích vào Insert New Object và lựa chọn Text từ phần General.

    Hộp văn bản mới của chúng ta trông có vẻ không đẹp, vì vậy tôi muốn đề xuất thay đổi kích cỡ và kiểu chữ. Tôi đã đổi sang Arial, Narrow Bold Italic và kích cỡ 36. Tốt nhất là gắn với các phông chữ thông thường – C2 vẽ trên các tệp phông chữ có sẵn trên máy tính của người chơi và nếu chúng không có cùng tập tin như cái mà bạn có, nó sẽ thay thế cho một tập tin mặc định trông có vẻ không đúng.

    1. Sản sinh hộp văn bản


    Để hộp văn bản xuất hiện, chúng ta cần sinh ra nó như các đối tượng game khác. Viết lại văn bản trong hộp văn bản +100. Hộp văn bản này sẽ được sinh ra khi goalBall sprite bị phá huỷ.


    Thêm một sự kiện mới On every tick, sau đó thêm hành động Move at angle tới hộp văn bản mới.


    Thiết lập angle thành 270, đây là góc bên trên trong game engine. Thiết lập distance (khoảng cách) thành 8.


    Làm một bản sao của hành động goalBall sản sinh ra particle explosion, và sau đó thay đổi thiết lập để thay vì sản sinh vụ nổ, nó sẽ sản sinh hộp văn bản.


    2. Chỉnh sửa góc sản sinh


    Khi chúng ta chạy game, chúng ta có thể thấy hộp văn bản được sinh ra ở một góc lệch. Để chỉnh sửa điều này, chúng ta sẽ thêm một hành động Set angle cho hộp văn bản và thiết lập góc tới 0:



    3. Mở rộng HUD


    Bây giờ, bạn cần thêm phần còn lại của HUD để hiển thị số điểm đang diễn ra và thông tin chúng ta cần cung cấp cho người chơi. Trong hầu hết các trường hợp, cách tốt nhất là ta có HUD như layer của chính nó. Thêm, một layer mới và đặt tên là HUD.




    Tạo một hộp văn bản mới và di chuyển nó tới góc dưới bên phải. Hãy đảm bảo rằng nó ở bên ngoài khu vực trò chơi.

    Kích cỡ và màu sắc hiện tại của văn bản có vẻ không ổn; tôi khuyên bạn nên thay đổi chúng từ phần Properties.





    Thay đổi tên của hộp văn bản thành HUDscore, và sau đó thêm một hành động HUDscore tới sự kiện On every tick. CHúng ta sẽ thêm một hành động Set text tới HUDscore. Thiết lập văn bản thành "Score: "&Score. Điều này có nghĩa là hộp văn bản HUD sẽ đọc Score, thứ mà ta đã viết trong dấu ngoặc kép và sau đó nó sẽ in chính xác biến điểm số đã đạt từ destroy goalBalls. Hãy đảm bảo bạn đã để lại một dấu cách sau dấu hai chấm của "Score: "; nếu ko thì nó sẽ không xuất hiện trong trò chơi.




    Sự kiện của bạn sẽ như thế này:

    4. Gắn chặt HUD vào camera


    Nếu bạn test thử game, bạn sẽ thấy điểm số không đi theo camera. Đó là bởi vì chúng ta không gắn nó vào màn hình. Kích vào hộp HUD và thêm hành vi Anchor (gắn chặt). Điều này sẽ thiết lập vị trí của đối tượng văn bản theo camera và nó sẽ không di chuyển.

    5. Thiết lập một máy theo dõi cho HUD cannonball


    Tiếp theo, chúng ta sẽ thiết lập một công cụ theo dõi cho các quả đạn pháo còn lại của chúng ta. Kích chuột phải vào hộp văn bản Score của chúng ta và lựa chọn loại đối tượng Clone. Thay đổi nội dung hộp văn bản thành Balls Left và thêm một biến toàn cầu đặt tên là BallsLeft:


    Thêm một hành động khác tới sự kiện On destroyed cho viên đạn pháo và cho nó một hành động Subtract from. Chúng ta muốn trừ 1 từ biến ballsLeft để số lượng giảm xuống mỗi khi viên đạn được bắn ra và bị huỷ. 


    Thiết lập giá trị cho hộp theo dõi viên đạn còn lại thành  "Balls Left: "&BallsLeft để nó có thể tự động cập nhật giống như công cụ theo dõi điểm số.


    Sự kiện Every tick của bạn sẽ như thế này:


    Để thiết lập số viên đạn sẵn có, hãy thay đổi số của ballsLeft thành bất cứ gì bạn muốn.



    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é.



    Bài 10. Hoàn thiện trò chơi


    Hãy thêm một vài logic để kết thúc trò chơi của chúng ta với điều kiện thắng hoặc thua. Thông thường, kết thúc trò chơi là phần khó nhất. Hầu hết các nhà làm game độc lập đều từ bỏ và ngừng sản xuất trò chơi.

    1. Điều kiện thua


    Thêm một hộp văn bản khác, cho nó nói Game Over, và thay đổi kích cỡ của nó để nó gọn gàng và nổi bật. Đặt hộp văn bản ở bất cứ đâu nổi bật và ghi nhớ vị trí của nó.


    Sau đó, chúng ta cần thêm một sự kiện Compare variable để so sánh biến ballsLeft ≤ Less than or equal (nhỏ hơn hoặc bằng) 0. Sau đó, thiết lập vị trí của đối tượng văn bản Game over tới vị trí mà ta đã chú ý trước đó.




    Thêm một hành động thiết lập isPlaying thành 1 khi biến ballsLeft nhỏ hơn hoặc bằng 0. Sau đó, thêm một điều kiện (bởi nhấn C) tới sự kiện chuột On any click. Điều kiện này để nhìn xem liệu isPlaying có bằng 0 hay ko.

    2. Bắt đầu lại trò chơi trên Game Over

    Khi trò chơi kết thúc, chúng ta cần 1 cách để thiết lập lại nó. Thêm một sự kiện chuột On object clicked và thiết lập đối tượng được kích như textGameOver.



    Thêm hành động Restart layout và hành động Reset global variables to default tới sự kiện Object clicked. Điều này sẽ bắt đầu lại trò chơi:


    3. Điều kiện thắng


    Thêm hai biến toàn cầu. Đặt tên một biến là goalBallCount và một cái khác là cannonBallCount. Các biến này sẽ theo dõi số goalBall sprite và cannonBall sprite ở trên màn hình.


    Thêm một sự kiện On created tới goalBall và tạo một hành động Add 1 to goalBallCount:


    Sau đó, cho mỗi On collision with goalBall cho goalBall sprite của chúng ta, điều hướng tới System và thêm Subtract 1 from goalBallCount:


    Thêm một sự kiện On created cho cannonBall, và điều hướng tới System để thêm một hành động Add 1 to cannonBallCount.


    Trong sự kiện On destroyed của sprite cannonBall, thêm hành động Subtract 1 from cannonBallCount:


    Sao chép hai sự kiện cuối cùng mà chúng ta đã làm. Thêm một điều kiện tới sự kiện ballsLeft ≤ 0 bằng cách nhấn nút C. Thêm một sự kiện so sánh biến để so sánh liệu cannonBallCount nhỏ hơn bằng 0 hay ko. Một khi bạn làm xong điều này, sao chép sự kiện và thay đổi cannonBallCount thành goalBallCount. Điều này sẽ sinh ra một sự kiện để kích hoạt nếu không có goalBall hoặc cannonBall sprite rời khỏi màn hình.




    Thêm một hành động Set text tới textObjectOver; lúc này, làm nó thành You Win!.


    Tổng kết

    Trong chương này, chúng ta đã học về cách làm một game puzzle physic – thiết lập các hiện tượng vật lí, các hiệu ứng hạt và thêm logic về điều kiện thắng hoặc thua. Bạn có thể sửa đổi trò chơi và thêm bất kì tính năng nào mà bạn thích.


    Trong chương tới, chúng ta sẽ đề cập đến cách xuất bản game của bạn tới nhiều địa điểm.



    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