Chúng ta đã
hoàn thành đơn vị của chúng ta, bây giờ, hãy tạo ra các đối tượng
kẻ địch. Về đối tượng kẻ địch, chúng ta sẽ sử dụng kĩ thuật tương
tự khi ta tạo xe tăng của chúng ta, thêm 2 đối tượng vào 1 container.
Về đối tượng enemyBase, chúng ta
sẽ sử dụng sprite buttonSquare_beige_pressed
và với enemyTuret, ta sẽ sử dụng arrowBlue_right.
Sau
khi ta thêm chúng vào layout, chúng ta sẽ cùng đặt chúng vào trong
cùng 1 container. Theo quá trình tương tự với xe tăng của người chơi,
nhưng là với các đối tượng xe tăng của kẻ địch. Chúng ta cũng sẽ
thêm hành vi Pin tới enemyTurret và giống như tankTurret, ta sẽ ghim nó vào enemyBase khi nó đc tạo:
Đặt 2
đối tượng như thế cách xa xe tăng người chơi một chút những vẫn ở
trong layout, bởi vì ta sẽ giúp chúng di chuyển và tìm kiếm người
chơi. Đừng quên đặt chúng lên nhau như sau:
Chúng
ta sẽ làm một điều nữa trước khi hoàn thiện kẻ địch: khiến nó có
thể tìm kiếm người chơi. Vậy ta làm điều này như thế nào? Vâng,
chính là hành vi Pathfinding,
thêm nó vào đối tượng enemyBase,
thế là xong. Chúng ta sẽ giữ thuộc tính của Obstacle là Solid cho
kẻ địch.
Bài 2. Làm nòng súng bắn
Chúng
ta có nòng súng cho cả 2 đơn vị xe tăng của người chơi và kẻ địch,
nhưng bây giờ, chúng không làm gì cả, chính vì vậy hãy khiến chúng
có thể bắn. ‘’Bắn’’ tức là nó nhận ra mục tiêu của nó, xoay nòng
súng và nhả đạn vào mục tiêu của nó. May mắn cho chúng ta, C2 có
một hành vi có thể làm tất cả điều này: đó là hành vi Turret. Chính vì vậy, hãy thêm vào
cả hai tankTurret và enemyTurret.
Sau
khi thêm hai hành vi này vào nòng súng, chúng ta cần xác định đối
tượng nào là những mục tiêu cho nòng súng. Chúng ta sẽ làm điều này
bởi sử dụng hành động add object to
target để nòng súng tự động bắn đối tượng được chỉ định khi nó
ở trong phạm vi. Chúng ta muốn tankTurret
chọn đơn vị kẻ địch, chính vì vậy ta thêm đối tượng này vào mục
tiêu của nó:
Chúng ta muốn enemyTurret chọn đơn vị của người chơi, vì vậy ta thêm nó vào danh sách mục tiêu:
Bây
giờ, nếu chúng đi vào phạm vi của nhau, các sự kiện sau sẽ xảy ra:
- Đối tượng tankTurret sẽ nhận ra đối tượng enemyTurret như là mục tiêu.
- Trong trường hợp này, sự kiện On target acquired sẽ kích hoạt và nòng súng sẽ quay tới mục tiêu của nó.
- Khi nòng súng chỉ vào mục tiêu, sự kiện On shoot sẽ kích hoạt tại tỉ lệ được xác định bởi rate of fire.
Hãy nhớ rằng đối tượng nòng súng ko tự động bắn, chúng ta phải tạo một đối tượng với hành vi Bullet để kích hoạt viên đạn, vì vậy hãy làm điều này ngay bây giờ. Thêm 2 sprite object với kích cỡ 14x14, làm chúng với hình dạng vòng tròn và đặt tên là playerBullet và enemyBullet. Đặt chúng bên ngoài layout và cung cấp cho chúng hành vi Bullet, thêm destroy outside layout cho chúng.
Chúng
ta sẽ tô playerBullet màu xanh
dương và enemyBullet màu đỏ. Sau
đó ta cần thêm code. Giống như tôi đã giải thích từ trước, khi nòng
súng nghĩ nó có thể bắn, nó sẽ kích hoạt sự kiện On shoot. Trong sự kiện này, chúng
ta sẽ tạo viên đạn của người chơi và bắn nó ở góc cùng với nòng
súng:
Làm
điều tương tự với nòng súng của kẻ địch:
Với
điều này, nòng súng sẽ bắn những mục tiêu của nó. Cuối cùng, hãy
phá hủy các viên đạn hơn là để chúng bay ra khỏi màn hình. Có 2
kịch bản khi viên đạn bị phá hủy: khi chúng trúng tankBase và khi chúng trúng enemyBase.
Để thêm một lối chơi thú vị hơn, hãy tạo biến thực thể sinh mạng
của playerBase và enemyBase.
Trong ví dụ
này, chúng ta sẽ cung cấp giá trị ban đầu là 10 tới biến thực thể
sinh mạng của cả 2 đối tượng, và ta sẽ giảm nó từng chút một:
Đừng
qên phá hủy đối tượng khi sinh mạng của tankBase và enemyBase
tiến tới 0; nếu ko thì ko có gì xảy ra. Chúng ta muốn những đối
tượng này bị phá hủy khi sinh mạng của chúng từ 0 trở xuống:
Ở đây ta sẽ viết code cho sự kiện tankBase destroy:
1. Điều hướng qua level
Bây
giờ chúng ta đã tạo ra đơn vị của chúng ta cùng với kẻ thù, giờ
hãy tạo ra một cấp độ. Chúng ta sẽ thêm một vài đồng đội và kẻ
thù trên layout, cũng như các trở ngại. Bạn có thể thiết kế như sau:
Bây giờ ta
đã có một trò chơi mà bố cục của nó lớn hơn màn hình trò chơi, và
chúng ta muốn điều hướng xung quanh nó. Trước đây, chúng ta đã có thể
điều hướng bằng cách sử dụng hành vi Scroll To, nhưng bây giờ chúng ta có nhiều hơn một đơn vị mà
người chới có thể điều khiển. Chính vì vậy tôi muốn điều hướng xung
quanh layout mà ko cần hành vi Scroll
To. Vậy ta làm như thế nào?
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é.
Chúng ta sẽ
sử dụng đối tượng Mouse để
cuộn layout. Nếu người chơi đặt chuột vào bên phải màn hình thì màn
hình sẽ cuộn sang bên phải; nếu người chơi đặt chuột sang bên trái
thì màn hình sẽ cuộn sang bên trái (bạn có thể thấy rất rõ điều
này trong game Dota2), tương tự bên trên và bên dưới. Chúng ta sẽ sử
dụng các biểu thức của đối tượng Mouse,
absoluteX và absoluteY, sẽ cho chúng ta tọa độ x và y trên màn hình.
Điều khác
biệt của biểu thức thông thường mouse.
X hoặc mouse. Y là cho chúng
ta tọa độ x và y trên layout và do đó bị ảnh hượng bởi việc cuộn.
Cả 2 biểu thức absoluteX và absoluteY ko bị ảnh hưởng bởi việc
cuộn, chính vì vậy chúng hoàn hảo nếu bạn muốn biết vị trí chuột
trên màn hình.
Đầu tiên, ta
sẽ cuộn sang trái khi vị trí con chuột gần cạnh bên trái màn hình,
cách chúng ta biết điều này là nếu vị trí x của con chuột là số
nhỏ, ví dụ nếu nó nhỏ hơn 20 pixel, chúng ta sẽ cuộn nó với số
lượng 500 pixel trên giây. Trong hành động này, chúng ta sẽ sử dụng
biểu thức dt; ở đây, dt là biểu tượng cho thời gian
delta, đó là thời gian chênh lệch giữa mỗi lần tích. Chúng ta sẽ nhân
tốc độ cuộn với dt để đảm bảo
di chuyển chính xác ngay cả trên các máy tính chậm.
Tiếp theo,
chúng ta sẽ cuộn màn hình sang bên phải. Để làm điều này, chúng ta
cần biết như vị trí x của chuột là 20 pixel từ bên trái màn hình.
May mắn thay, có một biểu thức kiểm tra độ rộng của cửa sổ: WindowWidth (khá rõ rảng nhỉ ^^). 20
pixel từ bên tay phải có nghĩa là 20 pixel được trừ từ biểu thức WindowWidth:
Sau đó, khi
ta cuộn màn hình lên, làm tương tự khi ta cuộn sang trái nhưng ta sẽ
kiểm tra giá trị absolute Y thay
vì absolute X. Chúng ta cũng sẽ
cuộn nó trong hướng y để khiến nó đi lên:
Cuối cùng,
chúng ta cuộn màn hình xuống. Để làm điều này, chúng ta cần biết
chiều cao của màn hình, giống với khi bạn cuộn sang phải. Chúng ta
cũng có một biểu thức cho điều này, đó là WindowHeight:
Test game bây giờ, và bạn có thể điều hướng layout bằng cách sử dụng chuột.
2. Thêm nhạc và hiệu ứng âm thanh
Chúng ta đã
có một cơ sở khá tốt cho trò chơi, nhưng vẫn còn một điều còn
thiếu, đó là âm thanh. C2 có một loại object có thể xử lí bất kì
loại âm thanh nào trong trò chơi: Audio
object. Đối tượng này có thể chơi được các hiệu ứng âm thanh và
nhạc nền. Vì thế, chúng ta hãy thêm đối tượng này vào trò chơi.
Trước khi chúng ta sử dụng đối tượng Audio để chơi nhạc, chúng ta cần nhập những tệp âm thanh. Nếu bạn nhìn vào thanh Projects, có 2 nơi mà âm thanh có thể được nhập: Sound folder và Music folder.
Các
tệp trong tệp Sound sẽ được tải
trước khi chúng được chơi, nó rất hoàn hảo cho những tệp âm thanh
ngắn như hiệu ứng âm thanh. Mặt
khác, các tệp trong tệp Music sẽ
được phát từ máy chủ thay vì được tải từ máy tính của người chơi.
Điều này phù hợp với nhạc nền dài, chính vì vậy, những tệp có
thể được chơi mà người chơi ko cần phải đợi vài phút để tệp đó
load. Tuy nhiên, âm nhạc có thể bị tràn trong khi phát, điều này có
thể gây chậm trễ.
Các âm thanh
chúng ta sẽ sử dụng trong ví dụ này lấy từ tệp Sound FX; nhạc nền thì nằm ở tệp Music. Để nhập các hiêệu ứng âm thanh, chúng ta bấm chuột
phải vào tệp Sounds ở C2 và lựa chọn Import Sound. Sau đó, một cửa sổ
sẽ mở ra nơi bạn có thể tìm kiếm các tập tin dự định cho âm thanh.
Bây giờ ta sẽ chọn một tệp, đó là SFX1.wav
ở tệp Sound FX.
Sau đó, bạn
sẽ thấy một cửa sổ khác sẽ chuyển đổi các tập tin để tương thích
với trình duyệt. Nếu biểu tượng bên cạnh tệp là màu xanh lá cây thì
tốt.
Sau khi bạn
kích vào nút Import, C2 sẽ chuyển
đổi các tập tin để tương thích với các trình duyệt web phổ biến.
Quá trình này giống như quy trình để nhập nhac: kích chuột phải vào
tệp Music và lựa chọn tệp.
Trong ví dụ này, chúng ta sẽ sử dụng MattOglseby-3 và sau đó nhập nó. Bây giờ ta đã có những tệp
yêu cầu để thêm hiệu ứng âm thanh và nhạc nền.
3. Chọn đúng tệp
Có một điều
cần ghi nhớ là khi nhập các tệp âm thanh vào C2: file types. Ngay cả bây giờ, các nhà sản xuất trình duyệt
vẫn ko thể đồng ý một dạng âm thanh được hỗ trợ trên trình duyệt
của họ. Internet Explorer và Safari vẫn sử dụng định dạng MPEG – 4 AAC (.m4a file). Trong khi FireFox,
Chrome, Opera hỗ trợ Ogg Vorbis miễn phí.
Vì vậy, để
hỗ trợ hết các trình duyệt có sẵn, chúng ta cần cung cấp cả 2 loại
tệp cho 1 âm thanh. Tuy nhiên, nếu bạn ko thể, bạn chỉ có thể cung cấp
các tệp PCM.wav cho âm thanh, vì loại tệp này được hỗ trợ rộng rãi,
và C2 có thể chuyển nó sang cả 2 định dạng MPEG – 4 AAC và Ogg Vorbis.
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é