บทความสอนกราฟิก

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 2409|ตอบกลับ: 0

[Renpy] 23. วิธีทำฉากตัวละครนั่งอยู่ในรถ

[คัดลอกลิงก์]

272

กระทู้

272

โพสต์

979

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

เครดิต
979
แก้ไขครั้งสุดท้ายโดย nooknazha เมื่อ 2018-6-5 22:40

[Renpy] 23. วิธีทำฉากตัวละครนั่งอยู่ในรถ  

จากที่มีท่านสมาชิกสอบถามไว้ --ถึงจะตอบช้าไปหน่อยแต่ก็ทำเป็นบทความให้แล้วค่ะ ^^

วิธีทำในบทความนี้จะเอามาประยุกต์ให้เป็นฉากตัวละครกำลังนั่งอยู่บนรถเรือ เรือบิน บอลลูน รถไฟ ฯลฯ หรือจะ เดิน - วิ่ง ก็ได้หมดนะคะแค่เปลี่ยนภาพในฉากเอา ^^ มาดูกันเลยดีกว่า

ภาพที่ต้องเตรียมควรหลักๆ ก็มี 3 ภาพด้วยกัน(ภาพอาจจะเยอะกว่านี้ก็ได้ ขึ้นอยู่กับคุณเป็นคนกำหนดรายละเอียดในฉาก)

1. ภาพฉากหลังพูดง่ายๆก็คือภาพที่เราจะมาทำให้มันวิ่งจากซ้ายไปขวากันขอแนะนำให้ความกว้างของฉากหลังควรมากกว่า 3 เท่าของขนาดจอภาพในเกมส์เช่น ถ้าจอภาพของคุณมีขนาด 800pt ฉากหลังที่จะให้เคลื่อนที่ไปตามแนวนอนก็ควรจะมีความกว้าง2400pt หรือ 3200 หรือ 4000 เป็นต้น (เพิ่มทีละ 800pt)  การกำหนดความกว้างเช่นนี้จะทำให้ง่ายต่อการแบ่งส่วนพื้นที่ในภาพ

** เคล็ดลับที่จะทำให้ฉากหลังเคลื่อนที่ได้ต่อเนื่องไม่สะดุดก็คือ**
- เราจะต้องแบ่งความกว้างของฉากให้ได้เท่าๆกันเป็นช่วงๆ(ดูภาพด้านล่างประกอบ) จะเห็นว่าข้าพเจ้าแบ่งภาพออกเป็น 3 ช่วงคือ ภาพหัว(A), ภาพกึ่งกลาง(B), ภาพท้าย(C)กว้างช่วงละ 800pt เท่าๆกัน(เพราะข้าพเจ้ากำหนดให้หน้าจอเกมส์กว้างเท่ากับ800*600pt) แต่ถ้าภาพฉากของคุณยาวกว่านั้นคุณจะต้องแบ่งฉากของคุณให้มี 1.ภาพหัว และ 2.ภาพท้าย ที่มีความกว้าง*ยาวเท่ากับหน้าจอเกมส์ ส่วน"ภาพกึ่งกลาง" คุณจะแบ่งช่วงหรือไม่ก็ได้แต่มีข้อแม้ว่าภาพช่วงกึ่งกลางของคุณจะต้องมีความกว้างมากกว่าขนาดหน้าจอเกมส์ของคุณ

- คุณจะต้องทำให้"ภาพหัว(A)" และ "ภาพท้าย(C)" เป็นภาพเดียวกันนั่นความหมายว่าคุณจะต้องใช้ความสามารถในการวาดฉาก(ช่องว่างตรงกลาง)ยังไงก็ได้ให้เชื่อมต่อเนื่องกันจนดูเหมือนเป็นภาพเดียวกัน BG_Move_In_Car01.gif
2. ภาพภายในพาหนะที่ตัวละครนั่งอยู่ อาจจะเป็น รถยนต์ รถไฟ เรือหรือเครื่องบิน ก็ได้ เอาตามชอบเลยค่ะ
BG_Move_In_Car02.gif
3. ภาพตัวละครที่จะมีบทในฉากนั้นๆ(ที่ต้องให้แยกกับฉากภายในพาหนะ เพราะบางครั้ง ตัวละครอาจจะเคลื่อนไหวหลายเท่าเช่น พลิกตัว เอียงตัว ขยับแขน-ขา หันหน้า ฯลฯการแยกภาพกันจะทำให้ควบคุมท่าทางต่างๆของตัวละครได้ง่ายกว่าค่ะ)

BG_Move_In_Car03.gif
ถ้านำทั้ง 3 ภาพมาวางซ้อนกันก็จะได้ประมาณนี้ค่ะ
BG_Move_In_Car04.gif
***************************************
โค๊ดแบบที่หนึ่ง
***************************************
เหมาะสำหรับเกมส์ที่ไม่ซับซ้อนมากนักคือประมาณว่าทั้งเกมส์มีฉากเคลื่อนที่แค่ 1-2 ฉาก วิธีนี้ ภาพภายในของพาหนะจะถูกแทรกไว้ในโค๊ดควบคุมทิศทางการเคลื่อนที่
ข้อดี    คือ ดูง่ายเวลาจะแก้ไขก็ไม่ต้องไล่หลายจุด

ข้อเสีย คือคำสั่งเคลื่อนที่จะผูกติดอยู่กับภาพภายในของพาหนะแค่ภาพเดียวหากในเนื้อเรื่องมีฉากเคลื่อนที่ด้วยพาหนะหลายชนิด จะทำให้ต้องเขียนคำสั่งควบคุมทิศทางเคลื่อนที่ซ้ำๆกันหลายครั้ง

CODE:
  1. define l = Character('Lim', color="#c8ffc8")

  2. image in_car = "in_car2.gif"
  3. image lim =  "in_car3.gif"

  4. image go_home:
  5.      "in_car1.jpg"
  6.      xalign 1.0 yalign 0.0
  7.      linear 3.0 xalign 0.0
  8.      repeat
  9.         
  10. # The game starts here.
  11. label start:
  12.      show go_home
  13.      show in_car
  14.      show lim
  15.      l "You've created a new Ren'Py game."
  16.      l "Once you add a story, pictures, and music, you can release it to the world!"
  17.      return
คัดลอกไปที่คลิปบอร์ด

***************************************
โค๊ดแบบที่สอง(แนะนำ)
***************************************

เหมาะสำหรับเนื้อเรื่องเกมส์ที่มีความซับซ้อนมากขึ้นคือในเกมส์มีฉากเคลื่อนที่หลายฉากด้วยกันเราจึงจำเป็นต้องแยกส่วนคำสั่งที่ใช้ควบคุมทิศทางการเคลื่อนที่ออกมาต่างหาก

CODE:
  1. define l = Character('Lim', color="#c8ffc8")
  2. image bg_go_home = "in_car1.gif"
  3. image in_car = "in_car2.gif"
  4. image lim =  "in_car3.gif"
  5. transform go_home:
  6.     xalign 1.0 yalign 0.0 #สั่งให้ภาพเคลื่อนจาก ซ้าย >>> ขวา
  7.     linear 3.0 xalign 0.0 #linear คือ ความเร็วในการเคลื่อนที่ของภาพ
  8.     repeat
  9.         
  10. # The game starts here.
  11. label start:
  12.     jump car_go_home
  13.     return

  14. label car_go_home:
  15.     show bg_go_home at go_home #กำหนดให้ภาพ เคลื่อนที่ตามที่กำหนดไว้ใน transform ชื่อ go_home
  16.     show in_car
  17.     show lim
  18.     l "Welcome to Thaigraph and Ren'Py game."
  19.     l "I hope you will get benefits from my tutor!"
  20.     hide bg_go_home
  21.     hide in_car
  22.     hide lim
  23.     jump talk
  24.    
  25. label talk:  
  26.     show bg_go_home at left
  27.     show in_car
  28.     show lim
  29.     l "See you next my tutor."
  30.     return
คัดลอกไปที่คลิปบอร์ด


จากโค๊ดด้านบนเราจะเห็นว่าคำสั่ง transform จะเป็นตัวควบคุมทิศทางการเคลื่อนที่ของฉากหลังและเรียกใช้ได้โดยการพิมพ์ชื่อ หลังคำสั่ง "at" หากในเนื้อเรื่องเกมส์มีฉากนั่งพาหนะหลายชนิดเช่น มอไซ จักรยาน ฯลฯ ก็จะเรียกใช้ด้วยคำสั่งเดียวกันค่ะ(ดูภาพเชื่อมโยงความสัมพันธ์ด้านล่าง)
BG_Move_In_Car05.gif
ลองมาดูผลลัพธ์ที่ได้หลังจากรันคำสั่งกันค่ะ จะเห็นว่าตัวละครนั่งอยู่กับที่ส่วนภาพฉากหลังจะเคลื่อนที่ไปเรื่อยๆจากซ้ายไปขวา
BG_Move_In_Car06.gif
ฉากหลังค่อยๆเลื่อนไปเรื่อยๆ มองไป มองไปก็ตาลายได้เหมือนกันนะเนี่ย

BG_Move_In_Car07.gif
สำหรับคนที่ต้องการตัวอย่างไฟล์เกมส์ของบทความนี้สามารถโหลดได้ที่ลิงค์ด้านล่างนี้ค่ะ
คลิกโหลดไฟล์ประกอบบทความ
ที่นี่
***************************************

บทความโดย นุ้ก
ขอจบบทความแค่เพียงเท่านี้ แล้วพบกันใหม่บทความหน้าค่ะ ^^
(ขอสงวนสิทธิ์อนุญาตให้เผยแพร่เฉพาะในเว็บ www.graphicfufu.comเท่านั้น)



ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|GraphicFUFU

GMT+7, 2024-4-26 10:39 , Processed in 0.088540 second(s), 21 queries .

Powered by Discuz! X3.4 R20180101, Rev.59

© 2001-2017 Comsenz Inc.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้