Thực hiện phát hiện hit cho từng loại MapChip

Trang Cập Nhật :
Ngày tạo trang :

Môi trường xác minh

Windows
  • cửa sổ 11
Biên tập viên Unity
  • 2021.3.3F1
Gói hệ thống đầu vào
  • 1.3.0

Điều kiện tiên quyết cho mẹo này

Các cài đặt sau đây đã được thực hiện trước làm tiền đề cho mô tả về mẹo này.

Điều kiện tiên quyết cho mẹo này là gì?

Về việc mượn tài liệu bản đồ

Chúng tôi xử lý mượn từ các trang web sau.

Lúc đầu

Lần này, MapChips được đặt trong một TileMap và quyết định có thực hiện xác định lượt truy cập theo loại MapTip được đặt hay không.

Vì mẹo này phần lớn giống với một Mẹo khác "Thực hiện phát hiện lượt truy cập bằng bản đồ gạch", Vui lòng tham khảo tại đây để được giải thích chi tiết. Ở đây, chỉ có thủ tục được giải thích cho cùng một nội dung và chỉ có sự khác biệt được thêm vào.

Thực hiện các nhân vật đi bộ

Đầu tiên, chuẩn bị một hình ảnh sprite mà người chơi sẽ điều khiển để thực hiện thao tác phát hiện hit và thêm nó vào dự án của bạn. Lần này, kích thước của maptip là 32 pixel, vì vậy tôi sẽ làm cho hình ảnh có cùng kích thước.

Tôi sẽ bỏ qua hoạt hình đi bộ lần này vì thủ tục sẽ dài nếu nó được thực hiện. Nếu bạn muốn thực hiện nó, vui lòng tham khảo các mẹo sau.

Chọn hình ảnh mà bạn đã thêm vào dự án của mình. Vì chúng tôi muốn khớp đơn vị với chip bản đồ, hãy đặt "Số pixel trên mỗi đơn vị" thành "32".

Sau khi định cấu hình, hãy nhấp vào nút "Áp dụng" bên dưới.

Khi hình ảnh được đặt, thả hình ảnh vào chế độ xem và thêm đối tượng.

Thiết lập quá trình di chuyển của nhân vật. Thêm tập lệnh và để nó được đặt tên Player là .

Kịch bản trông như thế này: Đây là một quá trình di chuyển đơn giản để di chuyển sprite bằng bàn phím.

using UnityEngine;
using UnityEngine.InputSystem;

public class Player : MonoBehaviour
{
  // 一定時間ごとに呼ばれます
  void FixedUpdate()
  {
    // キーボードの情報を取得
    var keyboard = Keyboard.current;

    // スプライトの移動処理
    if (keyboard.leftArrowKey.isPressed)
    {
      transform.Translate(-0.1f, 0, 0, Space.World);
    }
    if (keyboard.rightArrowKey.isPressed)
    {
      transform.Translate(0.1f, 0, 0, Space.World);
    }
    if (keyboard.upArrowKey.isPressed)
    {
      transform.Translate(0, 0.1f, 0, Space.World);
    }
    if (keyboard.downArrowKey.isPressed)
    {
      transform.Translate(0, -0.1f, 0, Space.World);
    }
  }
}

Tập lệnh bạn tạo gắn vào đối tượng nhân vật.

Chạy trò chơi và kiểm tra xem nhân vật có di chuyển bằng bàn phím hay không.

Chuẩn bị MapTips

Chuẩn bị một hình ảnh maptip và thêm nó vào dự án của bạn. Khi số lượng chip bản đồ tăng lên, việc thiết lập trở nên rắc rối, vì vậy lần này chúng tôi chỉ chuẩn bị hai ô vuông, một ô có thể đi bộ và một ô không thể đi bộ.

Chọn hình ảnh bạn đã thêm vào dự án của mình và định cấu hình cài đặt cho MapChips. Xem các mẹo sau để biết thêm thông tin:

Sau khi được định cấu hình, hãy nhấp vào nút Áp dụng và sau đó nhấp vào nút Sprite Editor.

Chia cho 32 pixel.

Chọn tab Bảng xếp để tạo bảng màu. Nếu không có tab, bạn có thể hiển thị chúng từ menu với "Window > 2D -> Tile Palette". Tên bảng màu có thể là bất cứ thứ gì, nhưng ở đây là "MapChipPalette".

Vì chúng tôi sẽ lưu nó vào một thư mục, hãy tạo một thư mục "MapChipPalette" mới trong thư mục Cảnh và chỉ định nó.

Một thư mục MapChipPalette đã được thêm vào dự án.

Tiếp theo, bạn sẽ thêm MapTips vào bảng màu. Kéo và thả hình ảnh maptip đã tách vào bảng màu.

MapTips đã được thêm vào bảng màu.

Tạo bản đồ

Để cài đặt phát hiện lượt truy cập sang một bên và tạo bản đồ trước. Bạn có thể thiết lập tính năng phát hiện lượt truy cập sau. Đầu tiên, thêm một tilemap vào hệ thống phân cấp của bạn.

Sau khi thêm, chọn Tilemap. Chế độ xem hiển thị lưới.

Đầu tiên, đặt một mapchip không trở thành một bức tường trong chế độ xem.

Hiện tại, tôi đã đặt nó khắp nơi.

Tiếp theo, đặt maptip đá sẽ đóng vai trò là bức tường.

Lần này không có vấn đề gì, nhưng nếu nhân vật của bạn sẽ ở phía sau bản đồ, hãy đặt Thứ tự lớp thành một số lớn hơn Tilemap.

Tất nhiên, ngay cả khi bạn di chuyển trò chơi vào thời điểm này, bạn sẽ trượt qua tường và đi bộ.

Cài đặt phát hiện lượt truy cập MapChip

Từ đây, chúng tôi sẽ thiết lập xem có nên nhập phán đoán đánh cho từng loại chip bản đồ hay không. Đầu tiên, mở thư mục "MapChipPalette" mà bạn đã tạo khi tạo bảng màu.

Có một maptip được đặt trong bảng màu bên trong, vì vậy trước tiên hãy chọn một maptip mà bạn có thể đi bộ.

Từ Trình kiểm tra, đặt giá trị Collider Type thành None. Sau đó, bạn sẽ thêm cài đặt phát hiện va chạm vào Tilemap, nhưng đặt nó thành "None" sẽ ngăn mapchip này va chạm.

Map tip đá khác được đặt thành "Grid". Vì lần này nó không phải là một maptip trong suốt, không có vấn đề gì với "sprite", nhưng nếu bạn đặt nó thành "sprite", nó sẽ không được đánh giá bằng cách nhấn vào phần trong suốt của hình ảnh.

Đó là tất cả những gì có đối với MapTip. Thật dễ dàng vì lần này chỉ có hai trong số chúng, nhưng nếu bạn có một số lượng lớn chip bản đồ, bạn cần phải đặt nhiều như vậy.

Cài đặt phát hiện va chạm

Từ đây, nó gần giống với nội dung "Thực hiện phát hiện hit với tilemap".

Đầu tiên, thực hiện các cài đặt cần thiết để phát hiện va chạm nhân vật. Thêm "Physics 2D -> Circle Collider 2D" làm thành phần. Lần này, sprite tròn, vì vậy tôi đã tạo nó thành Vòng tròn, nhưng vui lòng chọn Hộp hoặc Viên nang theo hình dạng.

Chúng tôi cũng sẽ thêm "Vật lý 2D -> Rigidbody 2D".

Đặt thang trọng lực thành 0 để ngăn trọng lực rơi xuống. Ngoài ra, hãy kiểm tra Z cho "Sửa chữa xoay" để ngăn sprite quay.

Đối với Tilemap, thêm thành phần Tilemap -> Tilemap Collider 2D.

Bạn có thể thấy rằng một đường màu xanh lá cây đã được thêm vào xung quanh maptip đá trong chế độ xem. Điều này có nghĩa là phát hiện cú đánh chỉ được đặt cho đá. Bạn có thể thấy rằng cài đặt loại máy va chạm của maptip trong bảng màu bên trên được phản ánh.

Hãy thử chạy trò chơi và đi về phía bức tường. Tôi nghĩ bạn có thể chắc chắn rằng nhân vật dừng lại trước bức tường đúng cách. Bạn có thể thấy rằng nó có thể dễ dàng thực hiện mà không cần viết bất kỳ chương trình nào liên quan đến phát hiện lần truy cập.

Kết hợp phát hiện lượt truy cập MapChip

Như đã đề cập trong các mẹo dưới đây, khi bạn thực sự di chuyển nó, hành vi phát hiện va đập vào tường hơi lạ. Nguyên nhân và cách giải quyết được mô tả trong Mẹo dưới đây.

Tuy nhiên, bằng cách kết hợp phần phát hiện lượt truy cập của chip bản đồ, hành vi lạ sẽ được sửa chữa và tải xử lý sẽ giảm cùng một lúc, vì vậy hãy làm điều đó ở mức tối thiểu.

Đầu tiên, kiểm tra "Sử dụng trong composite" trong Tilemap Collider 2D.

Trong Add Component, chọn Physics 2D -> Composite Collider 2D.

"Rigidbody 2D" cũng sẽ được thêm vào, vì vậy hãy tạo "Body Type" thành "Static".

Sau đó, tôi nghĩ bạn có thể xác nhận rằng phán đoán đánh của viên đá không dành cho mỗi chip bản đồ và được kết hợp.

Bây giờ hãy chạy trò chơi và đảm bảo rằng nó hoạt động bình thường.