Phần trước mình đã làm về di chuyển của phi thuyền rồi. Trong phần này mình sẽ hướng dẫn các bạn làm về thiên thạch và tấn công của phi thuyền.
1. Rocks
OK, giờ chúng ta cùng bắt đầu viết code cho thiên thạch nào. Hãy tạo một
object mới tên là obj_rock trong thư
mục Object bằng cách nhấp
chuột phải và chọn
Create Object hoặc nhấn
Alt + O.
Thêm sprite cho object bằng cách kéo thả sprite
spr_rock_big trong thư mục
Sprite hoặc nhấn "No sprite" để thêm.
Tiếp đó, thêm sự kiện Create vào
obj_rock và viết đoạn code bên dưới
vào.
- randomize() có tác dụng tạo một "seed" ngẫu nhiên để các hàm như random_range() cho ra giá trị ngẫu nhiên.
- random_range(start, end) chọn một số ngẫu nhiên từ start đến end, cần có randomize() trước đó để các giá trị của random_range() cho ra khác nhau.
- Create là sự kiện mà tại đó, các câu lệnh chỉ thực thi một lần khi được tạo.
Kế tiếp bạn mở Room1 lên và kéo thả
obj_rock vào. Tiến hành chạy game để
xem kết quả.
Tương tự hãy tạo thêm thiên thạch nhỏ là
obj_rock_small.
Như vậy là chúng ta đã xong phần thiên thạch, tiếp theo đến phần tấn công của
phi thuyền.
2. Tấn công
Khi phi thuyền tấn công, nó bắn ra một viên đạn và nếu trúng vào thiên thạch
thì BOOM!!!
Vì viên đạn cũng là một object, nên chúng ta tạo một object mới có tên là
obj_bullet và thêm sprite cho nó.
Thêm sự kiện Create vào
obj_bullet, và gán speed = 10; thêm sự kiện Collision vào
obj_bullet với với đối tượng là
obj_rock.
- speed là thuộc tính của object mà khi nó khác 0 sẽ làm object di chuyển theo direction.
- direction là thuộc tính xác định hướng của object, 0 <= direction < 360;
- Collision là sự kiện mà hai object "chạm" vào nhau. Để viên đạn và thiên thạch cùng nổ tung, biến mất thì các bạn thêm đoạn code bên dưới vào Collision của obj_bullet.
- instance_destroy() dùng để phá huỷ object.
- with other có nghĩa là đoạn code đó sẽ thực hiện đối với đối tượng other, ở đây other là obj_rock bị trúng đạn.
Làm tương tự đối với obj_rock_small.
Lưu ý, khi viên đạn bay ra khỏi
Room thì chúng ta phải tiến hành phá
huỷ nó, nếu không tài nguyên game của chúng ta sẽ bị lãng phí, ví dụ
bộ nhớ Ram. Thêm sự kiện
Outside Room vào
obj_bullet, thêm câu lệnh
instance_destroy() vào.
Như vậy, chúng ta đã có viên đạn mà phi thuyền bắn ra, tuy nhiên phi thuyền
vẫn chưa thể tấn công, cần thêm một số câu lệnh nữa để phi thuyền có thể thực
hiện được điều đó.
Mở obj_player lên vào sự kiện Step và thêm đoạn code sau vào:
- keyboard_check_pressed(key) không giống với keyboard_check(), nó chỉ cho ra giá trị true khi phím được chuyển từ trạng thái không nhấn sang trạng thái được nhấn, nếu vẫn nhấn giữ thì giá trị sau đó sẽ là false. Để có thể nhận được giá trị true cần thả phím ra và nhấn lại.
- Trong đoạn mã trên, obj_bullet sau khi được tạo ra thì gán cho biến _bullet, có thể thao tác với _bullet tương tự obj_bullet.
3. Thêm hiệu ứng
Hãy thêm một ít hiệu ứng để cho trò chơi của chúng ta thêm sinh động.
Tạo thêm một Layer hiệu ứng với tên là
"Effect":
Mở obj_rock và thêm sự kiện
Destroy với đoạn code bên dưới
vào.
Đối với obj_rock_small là tương tự nhưng không cần tạo thêm thiên thạch mới nữa sau khi bị phá huỷ và đặt size = 0.
Đối với obj_rock_small là tương tự nhưng không cần tạo thêm thiên thạch mới nữa sau khi bị phá huỷ và đặt size = 0.
Đối với obj_player, khi va vào thiên thạch thì bạn có thể cho phi thuyền phát nổ bằng cách thêm
Collision vào
obj_player giống với
obj_bullet.

