Bài 5. Thêm các physic
Physics
là sự mô phỏng các hiện tượng vật lý trong game sao cho giống với ngoài đời
thực. Sự mô phỏng này có thể giống nhiều hay ít tùy thuộc vào ý tưởng game, và
quyết định của lập trình viên.
Các physic cơ bản bạn dễ nhận thấy là: Hình ảnh, Âm thanh, gia tốc rơi, chuyển động 1 vật, Va chạm nhau...
Test game và bạn thấy viên đạn pháo
ko hoạt động giống như một viên đạn pháo thực sự. chúng ta cần thêm một vài
physic cho nó. Kích vào khẩu pháo và thêm hành vi Physics cho nó:
1. Cung cấp lực tại một góc
Chạy thử game.
Bạn sẽ nhận ra quả bóng chỉ rơi xuống. bây giờ chúng ta đã thêm các
physic, chúng ta cần thêm một lực tới quả bóng để khiến nó bắn giống như viên đạn
thực sự. Thêm một hành động tới sự kiện Mouse
click. Hành động này sẽ là Apply force
at angle:
Thiết lập lực thành 200. Con số càng lớn thì viên đạn đi càng xa. Đối với
góc, điền cannon.Angle như màn hình
sau. Điều này sẽ đảm bảo rằng viên đạn được bắn cùng đường với khẩu pháo.
Nếu bạn chạy game, bạn sẽ nhận ra rằng chúng ta có thể bắn nhiều đạn
pháo như chúng ta muốn. Chúng ta nên hạn chế những viên đạn pháo để khiến chúng
chỉ bắn từng quả một. để làm điều này, chúng ta cần thêm một biến toàn cầu. Đặt
tên nó là canFire và thiết lập Initial value thành 0:
Kích vào sự kiện On any click
và nhấn C để thêm điều kiện khác. Điều hướng System/Compare variable.
Thiết lập biến canFire bằng 0 (sử dụng
điều kiện Equal to).
Một khi bạn đã hoàn thành xong, thêm một hành động System tới sự kiện Mouse -
On any click để thiết lập canFire thành 1. Điều này khiến khẩu
pháo bắn từng viên một. Nếu bạn test game bây giờ, bạn sẽ chỉ bắn được một viên
đạn. Chúng ta sẽ thêm tính năng reloading
vào lúc này. Event sheet của bạn hiện tại sẽ như sau:
3. Thiết lập điểm nhìn để theo dõi đạn pháo
Bạn sẽ nhận ra điểm nhìn và camera ko theo dõi viên đạn. Nháy đúp chuột
vào viên đạn và thêm một hành vi ScrollTo:
Đồng thời, thêm hành vi Destroy
outside layout:
Khi bạn test thử trò chơi, bạn sẽ thấy camera thực sự đi theo quả bom.
Tuy nhiên, có một vấn đề - không có mặt đất, và viên đạn sẽ rơi xuống bên dưới màn
hình (thì ra bất động sản là ý này, vùng đất cố định). Chính vì vậy, hãy tạo một
mặt đất. Thêm một sprite mới và thay đổi kích cỡ nó thành 1500 x 250. Đặt nó
vào background layer. Hãy tô cho nó
màu xanh nước biển:
Thêm một hành vi Physics tới
background sprite. Thiết lập Immovable
thành Yes và Prevent rotation thành Yes.
Nó sẽ khiến sprite này không thể di chuyển:
Một khi bạn làm xong điều này, đặt sprite ở gần bên dưới màn hình và thiết
lập Opacity thành 0 để nó trong suốt.
5. Nạp lại khẩu pháo
Chúng ta cần thiết lập canFire
trở lại 0 để khẩu pháo có thể tải lại và bắn viên đạn khác. Thêm một sự kiện On destroyed tới cannonBall sprite:
Tạo một sự kiện On destroyed
và thiết lập canFire thành 0 bởi thêm
một System thiết lập giá trị của biến:
Sau đó, ta cần trở lại chỗ khẩu pháo để phát bắn tiếp theo được khai hoả
từ đây. Để làm điều này, chúng ta thiết lập hành động Scroll to object cho System:
Đối tượng cho sự kiện này sẽ là cannon:
Sự kiện của bạn sẽ trông như màn hình sau. Test thử game. Bạn sẽ nhận ra
khi viên đạn rơi xuống màn hình, nó sẽ bị phá huỷ. Khi điều này xảy ra, camera
sẽ cuộn trở lại khẩu pháo và bạn có thể bắn lại.
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 6. Thêm các khối
Bây gờ, chúng ta cần thêm các khối vào trò chơi. Kích vào block sprite và thêm hành vi Physics.
Đặt khối ở phía trước viện đạn và test nó bởi khai hoả khẩu pháo:
Viên đạn chỉ ngồi trên màn hình và không di chuyển. Chúng ta nên thêm một số
logic để phá huỷ nó sau khi nó trúng một khối. Thêm một sự kiện Compare velocity tới cannonBall sprite:
Vận tốc mà ta muốn so sánh đó là Overall
velocity, và chúng ta sẽ thiết lập Comparison
thành ≤ Less or equal với giá trị 0.1. Lí do chúng ta không muốn thiết lập
giá trị thanh 0 là bởi vì có thể đối
tượng của chúng ta vẫn có một khối lượng nhỏ vận tốc (ví dụ là 0.00001); nhưng
bởi vì nó không đúng với giá trị 0, sự kiện sẽ không được kích hoạt.
Khi viên đạn đi tới điểm dừng, chúng tra muốn phá huỷ nó. Thêm hành động
Destroy object tới sự kiện:
Chạy trò chơi. Khi viên đạn dừng, nó được đặt lại rất đột ngột. Để trò
chơi xử lí dễ dàng hơn, chúng ta sẽ thêm hành động Wait:
Hãy đợi một vài giây; chúng ta sẽ thiết lập giá trị của Seconds thành 2.5 giây:
Chúng ta cũng cần di chuyển hành động theo thứ tự của các hành động. Làm
nổi bật và kéo nó lên đầu. hãy nhớ rằng hành động được đọc theo dòng, điều này
có nghĩa là hành động đầu tiên sẽ xảy ra trước. Trong trường hợp này nó sẽ đợi
2.5 giây rồi phá huỷ đối tượng. Hãy test thử game:
Bài 7. Thiết kế cấp độ của ta
Bây giờ hãy thêm một vài thiết kế. đi tới khu vực bên phải của layout và
thêm một vài khối. Như bạn thấy ở màn hình sau, chúng tôi đã đặt chúng với một
lỗ hổng giữa các khối. Chúng sẽ rơi xuống, nhưng thỉnh thoảng nếu bạn bắt đầu một
trò chơi với một đối tượng qá gần đối tượng khác, việc phát hiện va chạm có thể
trục trặc.
1. Thay đổi tỉ trọng của các khối
Hãy thử game. Bạn sẽ nhận ra viên đạn pháo sẽ không va chạm mạnh với các khối.
Lựa chọn chúng và thay đổi Density
thành 0,2 hoặc bạn có thể thay đổi
thành bất cứ giá trị nào bạn muốn.
Bây giờ, chúng ta cần thêm goalBall
sprite. Đầu tiên, thêm hành vi Physics
tới goalBall sprite:
Tiếp theo, thêm nhiều quả bóng tới cấp độ và sau đó thêm một sự kiện tới
goalBall sprite:
Khi goalBall sprite chạm vào mặt
đất, chúng ta sẽ phá huỷ nó, cũng như thêm một vài tính năng.
Thêm hành động On collision with
another object kiểm tra xem liệu goalBall
sprite có va chạm với đối tượng Ground
trong suốt hay ko.
Khi goalBall sprie chạm vào đối
tượng Ground, thêm một hành động phá
huỷ quả bóng:
Một khi bạn làm xong điều này, sao chép hành động bởi lựa chọn sự kiện
và nhấn Crtl C và Ctrl V để dán.
Sau đó, thay đổi Ground thành
cannonBall. Điều này sẽ phá huỷ goalBall khi viên đạn trúng nó.
4. Thêm Particles
Hãy thêm một vài bộ phận nhỏ để trò chơi trông thú vị hơn. Quay trở lại
layout, kích vào Insert New Object,
thêm Particles:
Khi bạn thêm một bộ phát hành particle, bạn thêm một đối tượng sản sinh
ra rất nhiều hình ảnh hai chiều. Chúng được sử dụng cho những thứ như vụ nổ, động
cơ, hoặc bất cứ thứ gì trông loè loẹt. Nháy đúp chuột vào Particles và thêm một đồ hoạ.
Di chuyển particle tới màn hình và test thử game. CHúng ta muốn có thêm
một vụ nổ hơn cách mà các bộ phận này được thiết lập.
5. Điều chỉnh cài đặt particle
Tôi gợi ý thay đổi Spray cone
thành 360, Speed randomizer thành 20
và Size randomizer thành 20. Đồng thời, hãy chắc chắn rằng bạn đã
thay đổi Type thành One-shot. Điều này sẽ khiến các bộ phận
nhỏ xuất hiện một lần.
Quay trở lại event sheet và thêm một hành động tới On collision with ground của goalBall
sprite. Thêm một tham số (parameter) Spawn
another object tới goalBall. Hãy
đảm bảo rằng nó được sản sinh ở layer 1.
Sao chép và dán hành động này tới đối tượng va chạm khác: On collision wwith cannonBall. Sau đó,
sao chép đối tượng va chạm, nhưng thay đổi nó để nó được kích hoạt khi goalBall và chạm với sprite goalBall khác.
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é