ใช้การตรวจจับ Hit สําหรับ MapChip แต่ละประเภท

ปรับปรุงหน้า :
วันที่สร้างเพจ :

สภาพแวดล้อมการตรวจสอบ

หน้าต่าง
  • หน้าต่าง 11
บรรณาธิการ Unity
  • ปี 2021.3.3f1
แพ็คเกจระบบอินพุต
  • 1.3.0

ข้อกําหนดเบื้องต้นสําหรับเคล็ดลับนี้

การตั้งค่าต่อไปนี้ได้ทําไว้ล่วงหน้าเพื่อเป็นหลักฐานสําหรับคําอธิบายของเคล็ดลับนี้

ข้อกําหนดเบื้องต้นสําหรับเคล็ดลับนี้คืออะไร?

เกี่ยวกับการยืมวัสดุแผนที่

เราดําเนินการยืมจากเว็บไซต์ต่อไปนี้

ทีแรก

คราวนี้ MapChips จะถูกวางไว้ใน TileMap เดียวและตัดสินใจว่าจะทําการกําหนด Hit ตามประเภทของ MapTip ที่วางไว้หรือไม่

เนื่องจากเคล็ดลับนี้ส่วนใหญ่เหมือนกับเคล็ดลับอื่น "ใช้การตรวจจับการตีด้วยแผนที่ไทล์" โปรดดูคําอธิบายโดยละเอียดที่นั่น ที่นี่มีเพียงขั้นตอนที่อธิบายสําหรับเนื้อหาเดียวกันและเพิ่มเฉพาะความแตกต่างเท่านั้น

การใช้งานตัวละครเดิน

ขั้นแรกให้เตรียมภาพสไปรท์ที่ผู้เล่นจะควบคุมเพื่อดําเนินการตรวจจับการตีและเพิ่มลงในโครงการของคุณ คราวนี้ขนาดของ maptip คือ 32 พิกเซลดังนั้นฉันจะทําให้ภาพมีขนาดเท่ากัน

ฉันจะละเว้นภาพเคลื่อนไหวการเดินในครั้งนี้เพราะขั้นตอนจะยาวหากมีการดําเนินการ หากคุณต้องการนําไปใช้โปรดดูเคล็ดลับต่อไปนี้

เลือกรูปภาพที่คุณเพิ่มลงในโปรเจ็กต์ของคุณ เนื่องจากเราต้องการจับคู่หน่วยกับชิปแผนที่ให้ตั้งค่า "จํานวนพิกเซลต่อหน่วย" เป็น "32"

เมื่อกําหนดค่าแล้วให้คลิกปุ่ม "ใช้" ด้านล่าง

เมื่อตั้งค่าภาพแล้วให้วางภาพลงในมุมมองและเพิ่มวัตถุ

ตั้งค่ากระบวนการเคลื่อนที่ของตัวละคร เพิ่มสคริปต์และปล่อยให้ชื่อ Player .

สคริปต์มีลักษณะดังนี้: นี่เป็นกระบวนการเคลื่อนไหวง่ายๆที่ย้ายสไปรท์ด้วยแป้นพิมพ์

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);
    }
  }
}

สคริปต์ที่คุณสร้างแนบไปกับวัตถุอักขระ

เรียกใช้เกมและตรวจสอบว่าตัวละครเคลื่อนไหวด้วยแป้นพิมพ์หรือไม่

การเตรียมเคล็ดลับแผนที่

เตรียมภาพคําแนะนําแผนที่และเพิ่มลงในโครงการของคุณ เมื่อจํานวนชิปแผนที่เพิ่มขึ้นการตั้งค่าจะกลายเป็นปัญหาดังนั้นคราวนี้เราได้เตรียมเพียงสองสี่เหลี่ยมหนึ่งที่สามารถเดินได้และหนึ่งที่ไม่สามารถเดินได้

เลือกภาพที่คุณเพิ่มลงในโครงการของคุณและกําหนดการตั้งค่าสําหรับ MapChips ดูเคล็ดลับต่อไปนี้สําหรับข้อมูลเพิ่มเติม:

เมื่อกําหนดค่าแล้วให้คลิกปุ่มใช้จากนั้นปุ่ม Sprite Editor

หารด้วย 32 พิกเซล

เลือกแท็บ จานสีไทล์ เพื่อสร้างจานสี หากไม่มีแท็บคุณสามารถแสดงได้จากเมนูด้วย "Window > 2D -> Tile Palette" ชื่อจานสีสามารถเป็นอะไรก็ได้ แต่ที่นี่คือ "MapChipPalette"

เนื่องจากเราจะบันทึกไว้ในโฟลเดอร์ให้สร้างโฟลเดอร์" MapChipPalette" ใหม่ในโฟลเดอร์ฉากและระบุ

มีการเพิ่มโฟลเดอร์ MapChipPalette ลงในโครงการ

จากนั้นคุณจะเพิ่ม MapTips ลงในจานสี ลากและวางภาพ maptip แยกลงบนจานสี

มีการเพิ่ม MapTips ลงในจานสี

สร้างแผนที่

ทิ้งการตั้งค่าการตรวจจับการตีไว้และสร้างแผนที่ก่อน คุณสามารถตั้งค่าการตรวจจับ Hit ได้ในภายหลัง ขั้นแรก ให้เพิ่มไทล์แมปลงในลําดับชั้นของคุณ

เมื่อเพิ่มแล้ว ให้เลือก Tilemap มุมมองจะแสดงตาราง

ขั้นแรกให้ตั้งค่า mapchip ที่ไม่กลายเป็นกําแพงในมุมมอง

ตอนนี้ฉันวางมันไว้ทั่วสถานที่

จากนั้นวางแผนที่หินที่จะใช้เป็นกําแพง

คราวนี้ไม่มีปัญหา แต่ถ้าตัวละครของคุณจะอยู่หลังแผนที่ให้ตั้งค่า Layer Order เป็นตัวเลขที่มากกว่า Tilemap

แน่นอนแม้ว่าคุณจะย้ายเกม ณ จุดนี้คุณจะลื่นผ่านกําแพงและเดิน

การตั้งค่าการตรวจจับการตี MapChip

จากที่นี่เราจะกําหนดว่าจะเข้าสู่การตัดสินตีสําหรับชิปแผนที่แต่ละประเภทหรือไม่ ขั้นแรกให้เปิดโฟลเดอร์" MapChipPalette" ที่คุณสร้างขึ้นเมื่อคุณสร้างจานสี

มีแผนที่ตั้งอยู่ในจานสีภายในดังนั้นก่อนอื่นให้เลือก maptip ที่คุณสามารถเดินได้

จากตัวตรวจสอบ ให้ตั้งค่า Collider Type เป็น None หลังจากนั้นคุณจะเพิ่มการตั้งค่าการตรวจจับการชนกันใน Tilemap แต่การตั้งค่าเป็น "ไม่มี" จะป้องกันไม่ให้ mapchip นี้ชนกัน

อีกแผนหนึ่งถูกตั้งค่าเป็น "กริด" เนื่องจากไม่ใช่แผนที่โปร่งใสในครั้งนี้จึงไม่มีปัญหากับ "สไปรท์" แต่ถ้าคุณตั้งค่าเป็น "สไปรท์" มันจะไม่ถูกตัดสินโดยการกดปุ่มส่วนที่โปร่งใสของภาพ

นั่นคือทั้งหมดที่มี MapTip มันง่ายเพราะมีเพียงสองคนในครั้งนี้ แต่ถ้าคุณมีชิปแผนที่จํานวนมากคุณต้องตั้งค่ามาก

การตั้งค่าการตรวจจับการชน

จากที่นี่เกือบจะเหมือนกับเนื้อหาของ "ใช้การตรวจจับ Hit ด้วย tilemap"

ขั้นแรกให้ทําการตั้งค่าที่จําเป็นสําหรับการตรวจจับการชนกันของตัวละคร เพิ่ม "Physics 2D -> Circle Collider 2D" เป็นส่วนประกอบ คราวนี้สไปรท์กลมดังนั้นฉันจึงทําให้เป็นวงกลม แต่โปรดเลือกกล่องหรือแคปซูลตามรูปร่าง

นอกจากนี้เรายังจะเพิ่ม "ฟิสิกส์ 2D -> Rigidbody 2D"

ตั้งค่ามาตราส่วนแรงโน้มถ่วงเป็น 0 เพื่อป้องกันไม่ให้แรงโน้มถ่วงตกลงมา นอกจากนี้ให้ตรวจสอบ Z สําหรับ "แก้ไขการหมุน" เพื่อป้องกันไม่ให้สไปรท์หมุน

สําหรับ Tilemap เพิ่มคอมโพเนนต์ Tilemap -> Tilemap Collider 2D

คุณจะเห็นว่ามีการเพิ่มเส้นสีเขียวรอบ ๆ maptip หินในมุมมอง ซึ่งหมายความว่าการตรวจจับการตีถูกตั้งค่าสําหรับหินเท่านั้น คุณจะเห็นได้ว่าการตั้งค่าประเภท collider ของ maptip ในจานสีด้านบนสะท้อนให้เห็น

ลองเล่นเกมและเดินไปทางกําแพง ฉันคิดว่าคุณสามารถมั่นใจได้ว่าตัวละครจะหยุดอยู่หน้ากําแพงอย่างถูกต้อง คุณจะเห็นว่ามันสามารถใช้งานได้ง่ายโดยไม่ต้องเขียนโปรแกรมใด ๆ ที่เกี่ยวข้องกับการตรวจจับการตี

การรวมการตรวจจับการตี MapChip

ดังที่ได้กล่าวไว้ในเคล็ดลับด้านล่างเมื่อคุณย้ายมันจริงพฤติกรรมของการตรวจจับการชนกําแพงนั้นแปลกเล็กน้อย สาเหตุและวิธีแก้ปัญหาได้อธิบายไว้ในเคล็ดลับด้านล่าง

อย่างไรก็ตามด้วยการรวมส่วนการตรวจจับการตีของชิปแผนที่พฤติกรรมแปลก ๆ จะได้รับการแก้ไขและโหลดการประมวลผลจะลดลงในเวลาเดียวกันดังนั้นเรามาทําอย่างน้อยที่สุด

ขั้นแรก ให้ตรวจสอบ "Use in composite" ใน Tilemap Collider 2D

ภายใต้ เพิ่มส่วนประกอบ ให้เลือก Physics 2D -> Composite Collider 2D

นอกจากนี้ยังมีการเพิ่ม "Rigidbody 2D" ดังนั้นให้ "Body Type" เป็น "Static"

จากนั้นฉันคิดว่าคุณสามารถยืนยันได้ว่าการตัดสินตีของหินไม่ได้สําหรับชิปแผนที่แต่ละตัวและรวมกัน

ตอนนี้เรียกใช้เกมและตรวจสอบให้แน่ใจว่าทํางานได้อย่างถูกต้อง