วันพฤหัสบดีที่ 13 มีนาคม พ.ศ. 2557

การรับ input จากคีย์บอร์ดด้วยคำสั่ง GetKey...

ลักษณะของคำสั่ง Input.GetKey...() แบบต่างๆใช้ในการรับ input จากผู้เล่น
ซึ่งมีจังหวะการกดที่แตกต่างกัน ทั้งคีย์บอร์ด/เมาส์บน PC รวมทั้งการสัมผัสจอบนอุปกรณ์มือถือ
เช่น Input.GetKeyDown() , Input.GetKeyUp()





สำหรับแพลทฟอร์ม PC หรือ Mac
ถ้าพูดถึง input หลักก็คงหนีไม่พ้นการใช้ keyboard ซึ่งเป็นอุปกรณ์คู่กายของสองแพลทฟอร์มนี้

  • โดยปกติเราก็จะเช็คการกดปุ่มคีย์บอร์ดโดยใช้ " if " 
  • เช็คว่าค่าการกดปุ่มเป็น true(กด) หรือ false(ไม่ได้กด)




แต่การกดปุ่ม(รวมทั้งการ touch จอในมือถือด้วย) จะมีหลายแบบหลายจังหวะ
ทำให้อาจเกิดความสับสนได้ว่าจะใช้คำสั่งไหนเช็คเลยจะเอามาบอกให้เคลียร์กัน
จะมีคำสั่งเช็คการกดปุ่มที่ใช้บ่อยๆอยู่ 3 ตัว คือ
  • Input.GetKeyDown()
  • Input.GetKey()
  • Input.GetKeyUp()
คำสั่งเหล่านี้จะรีเทิร์นค่าออกมาเป็น true เมื่อมีการกดปุ่มที่ตรงกับปุ่มที่เราใส่ไว้ในวงเล็บ เช่น "up" , "a" , "escape" , "space" ฯลฯ



แต่ละคำสั่งที่ยกตัวอย่างไปจะมีลักษณะการรีเทิร์นค่าที่แตกต่างกัน
  • GetKeyDown   จะมีค่าเป็น true แค่เเว้บแรกที่เรากำลังกดปุ่มจนยุบ แค่เสี้ยววินาทีเดียว
  • GetKey            จะมีค่าเป็น true ตลอดเวลาที่เรากดปุ่มค้างเอาไว้
  • GetKeyUp       ก็จะตรงกันข้ามกับ GetKeyDown จะเป็น true อีกเสี้ยววินาทีนึงเช่นกัน

------ EXAMPLE ------

if(Input.GetKeyDown("space"))
{
        Jump();
}

if(Input.GetKey("left"))
{
         RunLeft();
}
else
{
        StopRunning();
}

------------------------------E--N--D-------------------------\@/