จัดการข้อมูลนำเข้า
ตอบสนองต่อแป้นพิมพ์และเมาส์
จัดการข้อมูลนำเข้า เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
สองวิธีในการอ่านข้อมูลนำเข้า
LÖVE มีรูปแบบการรับข้อมูลนำเข้าสองแบบ การตรวจสอบสถานะจะถามว่า "ปุ่มนี้กำลังถูกกดอยู่หรือไม่" ในแต่ละเฟรม จึงเหมาะกับการทำงานต่อเนื่อง เช่น การเคลื่อนที่
เหตุการณ์คือฟังก์ชันเรียกกลับที่ทำงานครั้งเดียวเมื่อมีบางสิ่งเกิดขึ้น เช่น love.keypressed จึงเหมาะกับการทำงานครั้งเดียว เช่น การกระโดดหรือการยิง
การตรวจสอบแป้นพิมพ์
love.keyboard.isDown(key) จะคืนค่า true ขณะที่ปุ่มยังถูกกดอยู่ ให้เรียกใช้ภายใน love.update เพื่อให้ตอบสนองอย่างราบรื่นและต่อเนื่อง
เนื่องจากมีการตรวจสอบทุกเฟรม การกดปุ่มค้างไว้จึงทำให้การทำงานดำเนินต่อไป วิธีนี้เหมาะอย่างยิ่งสำหรับการเคลื่อนผู้เล่นไปรอบ ๆ
function love.update(dt)
if love.keyboard.isDown('right') then
player.x = player.x + player.speed * dt
end
endการตรวจสอบหลายปุ่ม
love.keyboard.isDown รับปุ่มหลายปุ่มพร้อมกัน และคืนค่า true หากมีปุ่มใดปุ่มหนึ่งถูกกดอยู่ จึงสะดวกสำหรับการกำหนดปุ่มทดแทน
คุณยังสามารถเรียกใช้การตรวจสอบแยกกันต่อเนื่อง เพื่อจัดการแต่ละทิศทางอย่างอิสระสำหรับการเคลื่อนที่ครบทั้งสี่ทิศทาง
function love.update(dt)
if love.keyboard.isDown('a', 'left') then
player.x = player.x - player.speed * dt
end
if love.keyboard.isDown('d', 'right') then
player.x = player.x + player.speed * dt
end
endเหตุการณ์ keypressed
love.keypressed(key) ทำงานเพียงครั้งเดียวทันทีที่ปุ่มถูกกด ใช้สำหรับการทำงานที่ไม่ควรทำซ้ำขณะกดค้าง เช่น การกระโดดหรือการหยุดชั่วคราว
กลไกจะส่งชื่อปุ่มมาเป็นสตริง ดังนั้นคุณจึงเปรียบเทียบกับชื่ออย่าง 'space' หรือ 'escape' ได้
function love.keypressed(key)
if key == 'space' then
player.jumping = true
end
endการออกเมื่อกด Escape
รูปแบบที่ใช้กันทั่วไปคือปิดเกมเมื่อผู้เล่นกดปุ่ม Escape โดย love.event.quit จะปิดกลไกอย่างเรียบร้อย
เนื่องจาก keypressed ทำงานเพียงครั้งเดียวต่อการกดหนึ่งครั้ง วิธีนี้จึงป้องกันการทำงานซ้ำโดยไม่ตั้งใจจากการกดปุ่มค้างไว้
function love.keypressed(key)
if key == 'escape' then
love.event.quit()
end
endkeyreleased
love.keyreleased(key) ทำงานหนึ่งครั้งเมื่อปล่อยปุ่ม การใช้ร่วมกับ keypressed ช่วยให้คุณติดตามสถานะการกดค้างได้ด้วยตนเอง
วิธีนี้มีประโยชน์สำหรับกลไกการชาร์จ โดยเริ่มชาร์จเมื่อกดปุ่ม ปล่อยการทำงานเมื่อปล่อยปุ่ม และวัดระยะเวลาที่กดปุ่มค้างไว้
function love.keypressed(key)
if key == 'space' then chargeStart = love.timer.getTime() end
end
function love.keyreleased(key)
if key == 'space' then power = love.timer.getTime() - chargeStart end
endตำแหน่งเมาส์
love.mouse.getPosition จะคืนค่าพิกัด x และ y ปัจจุบันของเคอร์เซอร์ภายใน love.update หรือ love.draw คุณยังสามารถใช้ getX และ getY แยกกันได้
พิกัดจะตรงกับพื้นที่วาด โดยมีจุดกำเนิดอยู่ที่มุมซ้ายบน และค่า y เพิ่มขึ้นเมื่อเลื่อนลงด้านล่าง
function love.update(dt)
local mx, my = love.mouse.getPosition()
crosshair.x, crosshair.y = mx, my
endปุ่มเมาส์
ตรวจสอบปุ่มด้วย love.mouse.isDown(1) โดย 1 คือปุ่มซ้าย 2 คือปุ่มขวา และ 3 คือปุ่มกลาง
สำหรับการคลิกครั้งเดียว ให้ใช้เหตุการณ์ love.mousepressed(x, y, button) ซึ่งทำงานหนึ่งครั้งและส่งพิกัดการคลิกมาให้โดยตรง
function love.mousepressed(x, y, button)
if button == 1 then
spawnAt(x, y)
end
endการป้อนข้อความ
สำหรับการพิมพ์ love.textinput(text) จะส่งอักขระจริงมาให้ โดยคำนึงถึงรูปแบบแป้นพิมพ์และปุ่มปรับแต่ง วิธีนี้เหมาะกว่า keypressed สำหรับการสร้างช่องข้อความ
ใช้ keypressed ควบคู่กันเพื่อจัดการปุ่มพิเศษ เช่น backspace และ enter ซึ่ง textinput จะไม่ส่งมาให้
function love.textinput(t)
inputBuffer = inputBuffer .. t
endการผสานการตรวจสอบสถานะและเหตุการณ์
เกมจริงมักใช้ทั้งสองรูปแบบร่วมกัน โดยตรวจสอบปุ่มควบคุมการเคลื่อนที่ในทุกเฟรมภายใน love.update ขณะที่การทำงานครั้งเดียวจะอยู่ในฟังก์ชันเรียกกลับของเหตุการณ์
การเลือกรูปแบบให้เหมาะสมช่วยหลีกเลี่ยงข้อผิดพลาด หากตรวจสอบการกระโดดด้วย update การกระโดดจะทำงานทุกเฟรมที่กดปุ่มค้างไว้ แต่เหตุการณ์จะทำงานเพียงครั้งเดียวตามที่ต้องการ
function love.update(dt)
if love.keyboard.isDown('left') then player.x = player.x - 200*dt end
end
function love.keypressed(key)
if key == 'up' then jump() end
endพื้นฐานตัวควบคุมเกม
LÖVE ยังรองรับตัวควบคุมผ่านส่วนติดต่อจอยสติ๊ก โดย love.joystickpressed และ isGamepadDown ของจอยสติ๊กใช้ตรวจสอบปุ่มได้
ก้านอนาล็อกจะคืนค่าตั้งแต่ -1 ถึง 1 ผ่าน getGamepadAxis ทำให้คุณปรับการเคลื่อนที่อย่างราบรื่นได้เช่นเดียวกับการตรวจสอบแป้นพิมพ์ด้วย dt
function love.update(dt)
if joystick then
local ax = joystick:getGamepadAxis('leftx')
player.x = player.x + ax * player.speed * dt
end
endตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับการจัดการข้อมูลนำเข้าของ LÖVE
สรุป
ข้อมูลนำเข้าของ LÖVE มีสองรูปแบบ ได้แก่ ตรวจสอบสถานะด้วย love.keyboard.isDown และ love.mouse.isDown สำหรับการทำงานต่อเนื่อง และตอบสนองต่อฟังก์ชันเรียกกลับของเหตุการณ์ เช่น love.keypressed และ love.mousepressed สำหรับการทำงานครั้งเดียว
ส่วนติดต่อสำหรับเมาส์ ข้อความ และตัวควบคุมเกมช่วยเติมเต็มการควบคุม การเลือกรูปแบบให้เหมาะสมช่วยให้การควบคุมตอบสนองได้ดีและปราศจากข้อผิดพลาด
เรียนรู้ Lua ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 40
- บทเรียน
- 159
คำถามที่พบบ่อย
บทเรียน “จัดการข้อมูลนำเข้า” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “จัดการข้อมูลนำเข้า” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “จัดการข้อมูลนำเข้า”
ตอบสนองต่อแป้นพิมพ์และเมาส์ คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “จัดการข้อมูลนำเข้า” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม
ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ลูปเกมของ LOVE
- วาดรูปร่างและภาพ
- จัดการข้อมูลนำเข้า
- การเคลื่อนที่และการชน