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

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

[Renpy] 44. วิธีแทรกฉาก Movies ขณะเล่นเกมส์

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

272

กระทู้

272

โพสต์

979

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

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

VDO_05.png
[Renpy] 44. วิธีแทรกฉาก Movies ขณะเล่นเกมส์

การสั่งให้โปรแกรมเล่นไฟล์ Movie จะแบ่งออกเป็น2 ประเภทด้วยกันนะค่ะ คือ
1. สั่งให้เล่นฉาก Movie ก่อนเข้าสู่หน้าเมนูหลักเป็นไตเติ้ลก่อนเข้าเกมส์
2. สั่งให้เล่นฉาก Movie หลังผู้เล่นคลิกปุ่ม"Start" ตัวอย่างเช่น เพลงหรือเนื้อเรื่องอินโทรก่อนเข้าสู่เนื้อหาหลักของตัวเกมส์ หรือ สั่งให้เล่นฉากMovie  แทรกขั้นกลางขณะเล่นเกมส์เมื่อมาถึงช่วงใดช่วงหนึ่ง
ในบทความนี้จะแนะนำเฉพาะวิธีที่ 2 นะค่ะ


*** สกุลไฟล์ที่ใช้ได้นะค่ะ.mpg .ogv (.avi ไม่ขอแนะนำบางไฟล์มันจะเล่นภาพกระตุก)

แล้วให้นำไฟล์ Movie ไปวางไว้ที่แฟ้ม"game" ของเรา  หรือจะใส่ไว้ที่โฟลเดอร์ย่อยชื่ออะไรก็ได้แต่จะต้องให้อยู่ภายในแฟ้ม "game")
VDO_03.png
การเล่น Movie หรือ VDO แทรกระหว่างขณะเล่นเกมส์ ในโปรแกรม Renpyจะมี 2 ชนิดด้วยกัน คือ

1. แบบแสดงผลเต็มหน้าจอ

รูปแบบการเขียนโค๊ด...
  1. Function:  renpy.movie_cutscene  (filename, delay=None, loops=0, stop_music=True):  
คัดลอกไปที่คลิปบอร์ด

อธิบาย:-filename - คือชื่อไฟล์ Movieพร้อมสกุล
delay - จำนวนวินาทีที่จะเล่นMovie โดยปกติจะเล่นอัตโนมัติตามความยาวของ Movie และจะไม่หยุดเล่นจนกว่าผู้ใช้จะคลิกเม้าส์บนหน้าจอเกมส์
loops - จำนวนครั้งที่ต้องการให้เล่นวนซ้ำถ้ากำหนดเป็น -1 คือเล่นวนไปเรื่อยๆ
stop_music - ในกรณีที่มีMovie เล่นต่อกันมากกว่า 2 ไฟล์ถ้ากำหนดเป็น True เมื่อผู้ใช้คลิกเม้าส์ที่หน้าจอโปรแกรมจะหยุดเล่นเพลง และถ้าทำการคลิกเม้าส์ที่หน้าจออีกครั้ง Movie ถัดไปจะเล่นต่อแทน

ตัวอย่างการเขียนโค๊ด....

  1. $ renpy.movie_cutscene("On_Your_Mark.mpg")
คัดลอกไปที่คลิปบอร์ด
ตัวอย่างการนำไปใช้งาน

  1. label start:
  2.     $ renpy.movie_cutscene("Echo.mpg") #<------------แบบแสดงภาพ Movie เต็มจอ
  3.     e "You've created a new Ren'Py game."
  4.     return
คัดลอกไปที่คลิปบอร์ด

พิมพ์โค๊ดลงไปใส่ไฟล์ script.rpy .....  
VDO_02.png
ผลลัพธ์ที่ได้....
VDO_01.jpg
2. แบบกำหนดขนาดและตำแหน่งที่จะเล่น
รูปแบบการเขียนโค๊ด...

  1. Function:  Movie  (fps=24, size=None, **properties)
คัดลอกไปที่คลิปบอร์ด
อธิบาย:-
fps
- จำนวนเฟรมต่อวินาที
size - ขนาดของฉากMovie เทีบยกับขนาดของหน้าจอเกมส์
properties - ใช้ใส่รายละเอียดต่างๆเช่น ตำแหน่งพิกัดที่วาง Movie

ตัวอย่างการเขียนโค๊ด....

  1. init:
  2.     image movie = Movie(fps=200, size=(400, 300), xalign=0.5, yalign=0.5) #<--- สร้างตัวแปรกำหนค่า Movie

  3. # The game starts here.
  4. label start:
  5.     show movie #<---- เปิดใช้คุณสมับติที่กำหนดในของ Movie
  6.     play movie "Echo.mpg" #<----สั่งให้โปรแกรมเล่น Movie

  7.     e "You've created a new Ren'Py game."
  8.    
  9.     stop movie #<----สั่งให้โปรแกรมยุติการเล่น Movie
  10.     hide movie #<----ปิดการใช้คุณสมบัติที่กำหนดในของ Movie

  11.     e "Wow, this movie is really terrible."
  12.     return
คัดลอกไปที่คลิปบอร์ด

พิมพ์โค๊ดลงไปใส่ไฟล์ script.rpy .....

VDO_04.png
ผลลัพธ์ที่ได้.... ฉาก Movie จะเล่นที่กลางหน้าจอเกมส์ เพราะเรากำหนดตำแหน่งไว้ที่ แกนX = 0.5 และ Y = แกน 0.5
VDO_05.png

วิธีป้องกันไม่ให้ผู้เล่นคลิกข้ามฉากMovie

อย่างที่รู้กันว่า...บางครั้ง user หรือผู้เล่นมักจะคลิกเม้าส์เพื่อข้ามฉาก Movie บางตอนที่สำคัญไปไม่ว่าจะด้วยความเร่งรีบ หรือความพลั้งเผลอก็ตาม เราสามารถบังคับให้ผู้เล่นทนดู Movieทั้งหมดตั้งแต่ต้นจนจบได้โดยการใส่คำสั่งดังนี้ค่ะ

  1.     play movie "Echo.mpg"
  2.     $ renpy.pause(188.4, hard=True) #<----คำสั่งตัวนี้จะป้องกันไม่ให้ผู้เล่นคลิกเม้าส์ข้ามฉาก
คัดลอกไปที่คลิปบอร์ด
สรุปง่ายๆมันก็คือคำสั่ง "หยุดชั่วคราว"( pause )เมื่อใช้คำสั่งนี้โปรแกรมจะไม่ทำงานอะไรเลย รวมทั้งไม่รับคำสั่งจากเม้าส์ จนกว่าจะถึงเวลาที่กำหนด


เวลาที่กำหนดที่ว่านี้ คือ ตัวเลขที่อยู่ด้านหลังคำสั่งpause ค่ะ ซึ่งจะแทนค่าเวลาที่โปรแกรมจะหยุดรับคำสั่งมีหน่วยเป็นวินาทีตัวอย่างการคิดตัวเลข ก็เช่น ถ้า Movie มีความยาวในการเล่นทั้งสิ้น3 นาที 14 วินาที ก็ให้เอา 3 คูณด้วย 60 วินาที บวกด้วย 14 แค่นี้เราก็จะได้ตัวเลขหน่วยที่เป็นวินาทีมาเท่ากับ194 ค่ะ



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










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

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

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

GMT+7, 2024-4-27 10:47 , Processed in 0.097588 second(s), 21 queries .

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

© 2001-2017 Comsenz Inc.

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