ต่อจากภาค 1 ครับที่เราใช้แค่ ปุ่ม ซ้าย ขวา บน มันรู้สึกว่ายังธรรมดาๆไม่ค่อยสมบูรณ์คราวนี้ก็เลยเอาเมาส์มาร่วมวงด้วย จะได้เหมือนเกมจริงๆที่เค้าทำกัน
ก่อนอื่นต้องขอบคุณที่มาของบทความดีดีจากเว็บ www.thaigameadvance.com
หัวข้อกระทู้ LESSON2:กล้องนั้น สำคัญ นะจ๊ะ
ลิ้งค์ http://www.thaigameadvance.com/viewtopic.php?t=99&start=0&postdays=0&postorder=asc&highlight=
โค้ดชุดนี้ ทำการดัดแปลงจากของพี่เค้าครับ เรื่องการโหลดไฟล์ .x ผมขอพูดถึงทีเดียวในบทต่อๆไปละกัน
Rem Setup sync rate
Sync On
Sync Rate 30
set display mode 1024,768,32
Rem Create 5 cubes and place randomly
For x = 1 to 5
Make object cube x,100
Position object x,Rnd(2000),0,Rnd(2000)
Next x
CamX#=250
CamY#=150
CamZ#=250
Position camera CamX#,CamY#,CamZ#
Position Mouse screen Width()/2,screen Height()/2
Hide mouse
Do
CONTROL CAMERA USING ARROWKEYS 0,3,2
if MouseY()<447>200
ANGX#=180+(MouseY()/2.1)
else
Position Mouse MouseX(),MouseY()
Endif
Rotate Camera ANGX#,(MouseX()/2.8),0
sync
loop
มาเข้าใจความหมายของแต่ละบรรทัดกันเลย
CamX#=250
CamY#=150
CamZ#=250
Position camera CamX#,CamY#,CamZ#
อันนี้คงไม่ยากเกินไปนะครับ ก็มีการตั้งตัวแปร CamX,CamY,CamZ แล้วกำหนดค่าให่แต่ละตัว จากนั้นก็กำหนดมุมมองของกล้องจากคำสั่ง Positiom Camera ด้วยตัวแปรทั้ง 3 ตัว ซึ่งตอนนี้ก็เป็นมุมมองเริ่มต้นของกล้องตอนที่เรา run
Position Mouse screen Width()/2,screen Height()/2
อันนี้คงเป็นการกำหนดตำแหน่งของเมาส์โดยให้อยู่ตรงกลางจอพอดีเป๊ะ เดาจากการใช้ขนาดของจอ มาหาร 2 (มั้ง) ความสูงและความยาว ก็น่าจะอยู่ตรงกลางพอดี
Hide mouse
คำสั่งนี้ใช้ซ่อนเมาส์ไม่ให้มองเห็น(แปลตรงๆครับ ภาษา basic ก็ง่ายอย่างนี้แหละ)
CONTROL CAMERA USING ARROWKEYS 0,3,2
ควบคุมกล้องอัตโนมัติด้วยปุ่มลูกศร(อันนี้ยังไม่ค่อยเข้าใจครับ)
if MouseY()<447>200
ANGX#=180+(MouseY()/2.1)
else
Position Mouse MouseX(),MouseY()
Endif
Rotate Camera ANGX#,(MouseX()/2.8),0
ควบคุมมุมกล้องโดยอ้างอิงตำแหน่งเมาส์X/Y โค้ดชุดนี้สำคัญทีเดียวเพราะใช้การอ่านตำแหน่งจากเมาส์แล้วเอามาควบคุมกล้อง
Sync
ใช้ refresh หน้าจอครับ
จากนั้นก็ลอง run ดูผลกันเลย แล้วลองขยับเมาส์ไปหลายๆทาง ใช้ร่วมกับปุ่มลูกศร
แต่มีปัญหาคือ หมุนได้ไม่ทุกทิศทาง มันจะติดอยู่นิดนึง พอดีว่ามีคนไปโพสถามไว้แล้ว และพี่ๆก็ตอบมาได้โค้ดดังนี้
Rem Setup sync rate
Sync On
Sync Rate 30
set display mode 1024,768,32
Rem Create 5 cubes and place randomly
For x = 1 to 5
Make object cube x,100
Position object x,Rnd(2000),0,Rnd(2000)
Next x
CamX#=250
CamY#=150
CamZ#=250
Position camera CamX#,CamY#,CamZ#
Position Mouse screen Width()/2,screen Height()/2
Hide mouse
Do
rem FPS cam block
oldcamy#=camy#
oldcamx#=camx#
camy#= wrapvalue(camy#+mousemoveY()*0.2)
camx#= wrapvalue(camx#+mousemoveX()*0.2)
if camy#>70 and camy#<180>
if camy#<300>200 then camy#=299
yrotate camera curveangle(camx#,oldcamx#,25)
xrotate camera curveangle(camy#,oldcamy#,25)
rem record old position
sync
Loop
หลังจากลอง run แล้วผลที่ได้คือ สามารถหมุนได้รอบทิศจริงๆทั้ง บน ล่าง ซ้าย ขวา แต่ไม่มีโค้ดที่ใช้ keyboard นะครับ อันนี้ต้องเอาไปต่อเติมเอง ถือว่าเป็นแบบฝึกหัดละกัน
No comments: