Unity - Viết kịch bản chuyển động cơ bản

Trong bài học này, chúng ta sẽ viết mã làm cho một gameObject di chuyển lên, xuống, sang trái và phải dựa trên đầu vào của người dùng. Điều này sẽ giúp chúng tôi hiểu quy trình làm việc của Unity script dễ dàng hơn.

Hãy nhớ rằng mọi GameObject đều có ít nhất một thành phần - Transform. Điều đặc biệt là Transform của gameObject cũng hiển thị dưới dạng các biến trong phần script của Unity để chúng ta có thể sửa đổi nó thông qua mã. Điều này cũng không bị hạn chế đối với Transform; tất cả các thành phần trong Unity đều có thuộc tính, có thể truy cập được thông qua các biến trong kịch bản.

Hãy để chúng tôi bắt đầu với kịch bản chuyển động của chúng tôi. Tạo một tập lệnh mới và đặt tên là “Phong trào”.

Bây giờ, hãy mở script và bạn sẽ thấy những thứ tương tự như bạn đã thấy trong bài học trước.

Hãy để chúng tôi tạo một biến float công khai có tên speed. Tạo một biếnpublic trong Unity có một lợi thế lớn -

  • Biến hiển thị dưới dạng trường có thể sửa đổi bên trong trình chỉnh sửa, vì vậy bạn không phải điều chỉnh thủ công các giá trị trong mã.

public class Movement : MonoBehaviour {
   public float speed;
}

Nếu chúng ta lưu tập lệnh này mà không chạm vào các phương thức khác, thì nó sẽ được biên dịch trong Unity.

(Bạn có thể thấy khi nó đang biên dịch bằng

biểu tượng ở góc dưới cùng bên phải.)

Kế tiếp, drag and droptập lệnh từ Nội dung vào GameObject. Nếu bạn làm đúng, đây là những gì bạn sẽ thấy trong các thuộc tính của GameObject -

Vì giá trị tốc độ có thể điều chỉnh được và không cần phải thay đổi mã mọi lúc, chúng ta có thể sử dụng phương thức update () thay vì start ().

Bây giờ chúng ta hãy xem xét các mục tiêu cho phương pháp Cập nhật -

  • Kiểm tra đầu vào của người dùng.

  • Nếu có đầu vào của người dùng, hãy đọc hướng dẫn của đầu vào.

  • Thay đổi các giá trị vị trí của biến đổi của đối tượng dựa trên tốc độ và hướng của nó. Để làm như vậy, chúng tôi sẽ thêm mã sau:

void Update() {
   float h = Input.GetAxisRaw(“Horizontal”);
   float v = Input.GetAxisRaw(“Vertical”);
   
   gameObject.transform.position = new Vector2 (transform.position.x + (h * speed), 
      transform.position.y + (v * speed));

Bây giờ chúng ta hãy thảo luận về mã trong breif.

Trước hết, chúng tôi tạo một biến dấu chấm động có tên h (đối với chiều ngang) và giá trị của nó được cho bởi Input.GetAxisRawphương pháp. Phương thức này trả về -1, 0 hoặc 1 tùy thuộc vào phím người chơi đã nhấn trên mũi tên lên / xuống / trái / phải.

Lớp Đầu vào chịu trách nhiệm lấy đầu vào từ người dùng dưới dạng nhấn phím, nhập chuột, nhập bộ điều khiển, v.v. Phương thức GetAxisRaw hơi khó hiểu, vì vậy chúng ta sẽ quay lại vấn đề đó sau.

Tiếp theo, chúng tôi updating vị trí của trò chơi của chúng tôi Đối tượng đến một vị trí mới được xác định bằng cách tạo Vector2. Vector2 nhận 2 tham số, đó làx and ycác giá trị tương ứng. Đối với giá trị x, chúng tôi cung cấp tổng giá trị của đối tượngcurrent vị trí và nó speed, thêm một số lượng một cách hiệu quả mỗi khung hình mà phím được nhấn vào vị trí của nó.

Lưu tập lệnh này và quay lại Unity. Unity sẽ tự động cập nhật tất cả các tập lệnh khi nó biên dịch thành công, vì vậy bạn không cần phải đính kèm lại tập lệnh nhiều lần.

Bây giờ bạn đã hoàn tất, hãy thay đổi giá trị của speedtrong thuộc tính của GameObject để nói 0,8. Điều này rất quan trọng vì giá trị cao hơn sẽ khiến người chơi di chuyển quá nhanh.

Bây giờ, hãy nhấp vào Play và xem trò chơi nhỏ đầu tiên của bạn đang hoạt động!

Thử nhấn các phím mũi tên và di chuyển xung quanh. Để dừng trò chơi, chỉ cần nhấn Play lại. Bạn thậm chí có thể điều chỉnh tốc độ trong thời gian thực để bạn không phải dừng và khởi động nó mọi lúc.

Trong bài học tiếp theo, chúng ta sẽ tìm hiểu về các cơ cấu cứng và va chạm.