วันอาทิตย์ที่ 30 สิงหาคม พ.ศ. 2558

[Unity 2D] สร้างเกมง่ายๆ Tappy Plane ตอนที่ 7 : จัดการกล้องให้ติดตามเครื่องบิน

เขียน Code ให้กล้องติดตามเครื่องบิน

สร้าง Script C# -ขึ้นมาใหม่ในที่นี้จะตั้งชื่อว่า CameraTrackPlane

สร้างตัวแปร  public GameObject _Plane; ขึ้นมาในคลาสเพื่อใช้อ้างอิงถึง Game Object Plane ที่เราได้ทำการสร้างไว้แล้ว

จากนั้นให้สร้างตัวแปรขึ้นมาอีกตัว คือ private float _OffsetX; เพื่อใช้เก็บระยะห่างระหว่างกล้องและเครื่องบิน สาเหตที่ต้องมี _OffsetX เนื่องจากเราไม่อยากให้กล้องตามตำแหน่งเดียวกับเครื่องบินเลยซะทีเดียว เพราะไม่งั้นเครื่องบินจะมาอยู่กึ่งกลางหน้าจอเวลาเล่นเกม เราอยากให้เครื่องบินอยู่ค่อนไปทางซ้ายของเกมแบบภาพข้างล่างนี้
โดยการคำนวณระยะห่างระหว่างเครื่องบินและกล้อง คือ
ตำแหน่ง x ของกล้อง - ตำแหน่ง x ของเครื่องบิน

ถ้าเขียนเป็น Code จะได้ดังนี้
_OffsetX = transform.position.x - _Plane.transform.position.x;
จะเห็นว่าใช้ tranform.position ที่ได้สอนไปแล้วในตอนที่แล้ว

โดยจะเซ็ทค่าให้ตัวแปร _OffsetX แค่ครั้งเดียวก็พอจึงทำในฟังก์ชั่น Start() จะได้ Code ดังนี้

public class CameraTrackPlane : MonoBehaviour
{
  public GameObject _Plane;
  private float _OffsetX;

  private void Start()
  {
    _OffsetX = transform.position.x - _Plane.transform.position.x;
  }
}

ต่อมาเราจะต้องทำการเปลี่ยนตำแหน่งให้กล้องเคลื่อนที่ไปทางขวาตลอดตามเครื่องบินโดยใช้ค่า _OffsetX ที่เราได้คำนวณไว้ในฟังก์ชั่น Start() อย่างที่เคยกล่าวไว้แล้วว่าฟังก์ชั่น Start() จะทำงานก่อนฟังก์ชั่น Update() ดังนั้นเมื่อฟังก์ชั่น Update() ถูกเรียกค่า _OffsetX จึงถูกเซ็ทเรียบร้อยแล้ว

ใช้ความรู้เรื่องการเปลี่ยนตำแหน่งในตอนที่แล้ว

  private void Update()
  {
    Vector3 pos = new Vector3(_Plane.transform.position.x + _OffsetX, transform.position.y, transform.position.z);
    transform.position = pos;
  }

Add Component ให้กล้อง

กลับไปที่ Unity คลิกที่ Game Object Main Camera จากนั้นเพิ่ม Script CameraTrackPlane ลงไป จะเห็นว่าที่ Script มี Plane ขึ้นมา ให้ลาก Game Object Plane ลงไปเพื่อทำการอ้างอิงถึง Game Object ที่กล้องจะติดตาม
เมื่อรันเกมจะเห็นว่าเครื่องบินไม่บินหลุดออกจากหน้าจอแสดงผลแล้ว เพราะตอนนี้กล้องตามเครื่องบินเรียบร้อยแล้ว แต่ยังเห็นภาพไม่ชัดเจนว่าเครื่องบินกำลังบินไปทางขวาอยู่หรือไม่ ในตอนหน้าเราจะมาทำการใส่ฉากพื้นหลังให้กับเกมกัน
ถัดไป
ตอนที่ 7 : จัดการกล้องให้ติดตามเครื่องบิน

ไม่มีความคิดเห็น:

แสดงความคิดเห็น