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