เพื่อให้บรรลุผลนี้:
สร้างสองชั้นเรียงลำดับ : พื้นและวัตถุ
ให้ถนนหญ้าและเส้นทางสไปรต์ใช้เลเยอร์พื้นดิน
ให้ตัวละครกำแพงและสไปรท์เฮ้าส์ของคุณใช้เลเยอร์วัตถุ
Sprite บนเลเยอร์ Objects ของคุณต้องการให้ Sprite Mode Pivot Point เป็นด้านล่างซ้ายล่างหรือล่างขวา คุณสามารถเลือกนี้โดยการเลือกสไปรท์ภายในแท็บโครงการของคุณและเลือกจุดหมุนในสารวัตรแท็บเพื่อปรับเทพดาที่ตั้งค่าการนำเข้า
สำหรับพื้นสไปรต์คุณไม่ต้องกังวลกับการเปลี่ยนคำสั่งซื้อ
อย่างไรก็ตามสำหรับวัตถุคุณสามารถเปลี่ยนลำดับการเรียงของSprite Rendererหรือเปลี่ยนtransform.position.z
ค่า ฉันขอแนะนำให้เปลี่ยนการแปลงเนื่องจากการลอยตัวอาจจะง่ายกว่าที่จะมองและปรับเมื่อคุณย้ายตัวละครของคุณไปรอบ ๆ ในขณะที่การเปลี่ยนลำดับการเรียงอาจไม่แม่นยำในบางสถานการณ์ขึ้นอยู่กับการวัดและขนาดของวัตถุ ในฉาก
ไม่ว่าในกรณีใดจำเป็นต้องใช้รหัสบางส่วน
public class SpritePositionSetter : MonoBehaviour {
void Awake () {
SetPosition();
}
void Update () {
SetPosition();
}
void SetPosition () {
// If you want to change the transform, use this
Vector3 newPosition = transform.position;
newPosition.z = transform.position.y;
transform.position = newPosition;
// Or if you want to change the SpriteRenderer's sorting order, use this
GetComponent<SpriteRenderer>().sortingOrder = (int)transform.position.y;
}
}
สำหรับวิธีการทำเช่นนี้คุณกำลังบอก Sprite ว่าให้ดัชนี Z ตรงกับตำแหน่ง Y
หากคุณแนบสคริปต์นี้กับวัตถุแบบสแตติก (เช่นกำแพง) คุณจะต้องล้างส่วนประกอบในตัวตรวจสอบเพื่อไม่ให้Update
วิธีการนั้นเรียกว่าทุกเฟรม Awake
วิธีการของมันจะโทรSetPosition
หนึ่งครั้งและนั่นคือทั้งหมดที่คุณต้องการ
แต่สำหรับตัวละครของคุณปล่อยให้องค์ประกอบถูกทำเครื่องหมายไว้ซึ่งUpdate
จะเรียกSetPosition
ทุกเฟรมซึ่งจะเปลี่ยนลำดับ Z ของตัวละครเมื่อคุณเลื่อนไปรอบ ๆ และในขณะที่คุณเคลื่อนไหวตราบใดที่เทพดาทุกชั้นวัตถุใช้จุดหมุนด้านล่างการเปลี่ยนดัชนี Z ขณะที่คุณเคลื่อนที่จะทำให้แน่ใจว่าตัวละครของคุณปรากฏอยู่ด้านหน้าหรือด้านหลังวัตถุอื่นอย่างเหมาะสม
ขึ้นอยู่กับการตั้งค่ากล้องของคุณคุณอาจต้องคูณตำแหน่ง Z ใหม่ด้วย-1
หากดูเหมือนว่าย้อนกลับ
หากคุณต้องการที่จะปรับดัชนี Z ในขณะที่การแก้ไขฉากของคุณตรวจสอบExecuteInEditMode