#3: Space Rocks - Di chuyển

 

   Ok! Sau khi đã tải dự án có sẵn về máy thì bây giờ là lúc chúng ta bắt đầu tạo nên con game đầu tiên của mình rồi. 

    Trong bài viết này, mình sẽ hướng dẫn các bạn cách để cho chiếc phi thuyền của chúng ta có thể di chuyển ngoài không gian. 

Nội dung bài viết:

  1. Đối tượng (Object) là gì?
  2. Sự kiện (Event) là gì?
  3. Thêm sự kiện vào đối tượng.
  4. image_angle và motion_add ì?
  5. Di chuyển của phi thuyền.

1. Đối tượng (Object) là gì?

    Object là tài nguyên đặt biệt (special asset) mà chúng ta sử dụng để kiểm soát các hoạt động của trò chơi và thực hiện những việc cụ thể. Hầu hết chúng đều có một sprite (hình ảnh pixel) đi kèm để bạn có thể nhìn thấy chúng trong phòng trò chơi, nhưng đôi khi chúng được sử dụng làm đối tượng điều khiển "hậu trường" để thực hiện những việc như theo dõi số liệu thống kê hoặc đặt thời gian cho các đoạn cắt cảnh , vân vân...
    
    Các object có thể được cung cấp các hành vi và chúng có thể phản ứng với các sự kiện nhất định cũng như với object khác và hầu hết những thứ bạn thấy trong trò chơi đều dựa trên các object và sự tương tác của chúng với người chơi và với nhau.
Đây là một object trong GameMaker


2. Sự kiện (Event) là gì?

    Về cơ bản, bạn có thể hiểu là khi một hoạt động hay trạng thái nào đó xảy ra khi trò chơi đang hoạt động là một sự kiện. Ví dụ khi bạn nhấn phím, click chuột, nhân vật bạn đang điều khiển tấn công trúng kẻ địch (hai object va chạm vào nhau) hay thậm chỉ là khi bạn không làm gì cả. 

    Những cái đó điều là sự kiện, bạn cần phải "bắt" được sự kiện đó và làm gì sau khi "bắt" được. Ví dụ khi nhấn phím cách thì nhân vật của bạn nhảy lên. Ở đây sự kiện là "nhấn phím cách" và kết quả là nhân vật của bạn "nhảy lên".

    Và trong trò chơi của chúng ta thì mình muốn khi mình nhấn phím A hoặc D thì tàu của mình xoay trái hoặc phải; nhấn phím W thì bay về trước, thả ra thì dừng lại.

3. Thêm sự kiện vào đối tượng


Bước 1: Các bạn nhấn chuột phải vào Objects ở phần Assets bên phải, chọn Create > Object hoặc nhấn phím tắt Alt + O.


Các bạn có thể thêm màu sắc bằng cách nhấn chuột phải vào thư mục/ tệp rồi chọn màu mình muốn.

Bước 2: Các bạn bấm vào nút Add Event và chọn Step.




    Các bạn có thể đặt có thể đặt thêm comment để về sau nếu cần thiết các bạn có thể đọc lại code dể hơn.


    Các bạn có tìm hiểu thêm về JSDoc Script Comments ở trên GameMaker Manual để biết thêm nha.
    Vậy là chúng ta đã có ba sự kiện để nhận biết khi nào chúng ta nhấn phím di chuyển. Tiếp theo mình sẽ hướng dẫn các bạn cách để phi thuyền quay trái phải và chạy khi nhấn. Chúng ta cùng tìm hiểu image_angle motion_add.

4. image_angle và motion_add là gì?

  • image_angle là một thuộc tính có sẵn của object, bằng cách thay đổi image_angle chúng ta có thể thay đổi hướng của hình ảnh (sprite) của object. 
  • motion_add là một hàm (function) có chức năng làm di chuyển một đối tượng theo một hướng, gồm hai tham số direction và speed.

5. Di chuyển của phi thuyền

Sự kiện Step: là sự kiện luôn xảy ra khi game chạy, các câu lệnh nằm trong đây đều được thự hiện liên tục cho tới khi object bị phá huỷ (destroy).

Bây giờ các bạn nhấn mở sự kiện Step rồi ghi vào các câu lệnh sau:


    Các câu lệnh có chức năng kiểm tra xem các phím mũi tên có được nhấn hay không, và gán nó vào các biến.
    Ví dụ nếu nhấn mũi tên sang trái thì _left có giá trị là true còn không nhấn thì false.

    Để phi thuyền chạy được thì chúng ta cần thêm một số câu lệnh sau:


Câu lệnh if sẽ thự hiện khi điều kiện đúng (true) và không thực hiện khi điều kiện sai (false) hoặc thực hiện câu lệnh trong phần else.


    Sau đó các bạn chọn nhấn vào chỗ Target ở góc trên bên phải và chọn Platform Window nhé. Tiếp theo nhấn mở thư mục Rooms trong Assets và mở Room1 lên, kéo thả obj_player của chúng ta vào.



    Bây giờ các bạn nhấn nút  Run    trên thanh Quick Buttons hoặc nhấn F5 để chạy game và điều khiển phi thuyền thôi.


    Tuy nhiên, mình muốn khi bay ra ngoài thì nó phải xuất hiện trở lại ở đối diện để mình có thể tiếp tục điều khiển. Hãy thêm câu lệnh sau vào phần Step của obj_player

    move_wrap có chức năng dịch chuyển object của chúng ta khi nó bay ra khỏi phòng (room). Gồm 3 tham số là horizontal, vertical, và margin.
  • horizontal: có giá trị true thì nó sẽ xét cạnh dọc, nếu false thì không xét.
  • vertical: tương tự horizontal, tuy nhiên vertical xét cạnh ngang.
  • margin: là khoảng cách object vượt ra khỏi bên ngoài bao xa thì dịch chuyển.
sprite_width là chiều rộng của sprite của object. Mình lấy sprite_width / 2 nghĩa là bay ra ngoài một nữa thì dịch chuyển ngược về đối diện.

    Vậy là chúng ta đã hoàn thành xong phần di chuyển của phi thuyền. Bài viết tiếp theo sẽ làm về thiên thạch và tấn công của phi thuyền. Nếu có thắc mắc hãy để lại bình luận ở bên dưới nhé.

Trần Gia Huy

Mình tên là Huy. Mình hiện là sinh viên và có sở thích làm game. Mình muốn chia sẻ những gì mình biết cho mọi người để cải thiện bản thân mình hơn.

Đăng nhận xét

Mới hơn Cũ hơn