nooknazha โพสต์ 2018-5-27 23:03:18

[Renpy] 20. วิธีทำ Effect ดอกไม้ร่วง

แก้ไขครั้งสุดท้ายโดย nooknazha เมื่อ 2018-5-27 23:13

20. วิธีทำ Effectดอกไม้ร่วง

เอฟเฟคนี้จะเป็นการนำฟังก์ชั่น SnowBlossom มาประยุกต์ให้เข้ากับเหตุการณ์ต่างๆที่จะเกิดขึ้นภายในเกมส์ได้หลากหลายเช่น ทำฝนตก หิมะตก ฟองอากาศลอย เกสรดอกไม้ปลิว ก้อนหินร่วงฯลฯ แล้วแต่เราจะเป็นผู้กำหนด ซึ่งจะเป็นการร่วงแบบสุ่มทั้งร่วงจากบนลงล่าง และจากล่างขึ้นบน

คำสั่งต่างๆที่เราสามารถกำหนดปรับแต่งเพิ่มเติมได้ในฟังก์ชั่นสุ่มหิมะร่วง (SnowBlossom)

Function:SnowBlossom(image, count=10, border=50,xspeed=(20, 50), yspeed=(100, 200), start=0, horizontal=False):


ความหมายของแต่ละคำสั่งที่ใช้ภายในฟังก์ชั่น
image - ใส่ภาพอนิเมชั่นหากมี 2 ภาพขึ้นไป ควรกำหนดระยะเวลาการเปลี่ยนภาพแต่ละภาพไว้ด้วย แต่ถ้ามีแค่ภาพเดียวก็ไม่ต้อง
count - จำนวนภาพทั้งหมดที่จะให้แสดงบนหน้าจอเกมส์แบบสุ่มตำแหน่งร่วงหล่น
border - กำหนดขอบของภาพ
xspeed - ความเร็วในการร่วงที่แกนX (แนวนอน) ต่อวินาที ถ้ากำหนดให้เป็นตัวเลขติดลบ เช่น xspeed=(-80,-100) ดอกไม้จะสุ่มร่วงจากขวาไปซ้าย
yspeed - ความเร็วในการร่วงที่แกนY (แนวตั้ง) ต่อวินาที ถ้ากำหนดให้เป็นตัวเลขติดลบ เช่น yspeed=(-100,-120) ภาพจะสุ่มร่วงจากล่างขึ้นบน
start - เมื่อเริ่มต้นเอฟเฟคให้แสดงที่กี่ภาพก่อน
fast - ถ้ากำหนดเป็นTrue ภาพเอฟเฟคจะแสดงพร้อมกันเต็มหน้าจอ(กระจายภาพแบบสุ่ม)จากนั้นจึงค่อยร่วงหล่น
horizontal - ถ้ากำหนดเป็นTrue จะร่วงจากมุมซ้ายไล่ไปทางขวา แต่ถ้ากำหนดเป็น Falseจะร่วงจากบนลงล่าง

ขั้นตอนที่1.
ให้เตรียมภาพที่ต้องใช้ 1 ถึง 2 ภาพ จะทำให้โปรแกรมอะไรก็ได้ (ขอแนะนำให้ทำใน AI ขอบภาพจะได้คมสวย)บันทึกสกุลเป็น .png

(สำหรับภาพดอกไม้นี้ให้คลิกโหลดที่ข้างล่างบทความไปเลยก็ได้ค่ะ ข้าพเจ้าแปะให้แล้ว)


กำหนดทั้ง 2 ภาพให้มีความแตกต่างกันเล็กน้อย เช่น จับเอียง 45 องศา

ขั้นตอนที่ 2
เขียนโค๊ดพร้อมระบุค่าเฉพาะที่เราต้องการ


ตัวอย่างการเขียนโค๊ดเมื่อนำไปใช้งานจริง
image sakura = SnowBlossom(Animation("cha/sakura1.png", 0.15,
                              "cha/sakura2.png", 0.15), count = 30, xspeed=(-80, -100),
                              yspeed=(100, 120), start=5, horizontal=False )

ในกรณีที่มีภาพ 2 ภาพทำเป็นอนิเมชั่นเคลื่อนไหว เราจำเป็นต้องใส่ระยะเวลาในการเล่นภาพแต่ละวนซ้ำต่อท้ายด้วยแต่ถ้า มีภาพแค่ภาพเดียวก็ไม่จำเป็นต้องใส่เลขเวลาต่อท้ายค่ะใส่คำสั่งตัวอื่นๆตามต่อได้เลย


(ตัวอย่างการใส่โค๊ด และการสั่งให้แสดงภาพเอฟเฟค...)

แล้วก็บันทึกไฟล์ และทำการรันโปรแกรม

จากผลลัพธ์ที่ได้... เราจะเห็นว่ามีภาพดอกไม้หมุนร่วงลงมาช้าๆและภาพดอกไม้เหล่านั้นก็ร่วงบังทับบนภาพตัวละครอยู่ในกรณีที่เราไม่ต้องการให้ภาพดอกไม้พวกนี้มาบังภาพตัวละคร เราจะต้องเพิ่มคำสั่ง"behind" ต่อท้าย"ตัวแปรภาพตัวละคร" ที่คำสั่งแสดงไปค่ะ ดูวิธีเขียนด้านล่างต่อเลย
show sakurabehind mคำสั่งนี้จะมีความหมายว่า "ให้แสดงภาพ(เอฟเฟค) sakura ที่ข้างหลังภาพm(ภาพตัวละคร)"

(ตัวอย่างการเขียนโค๊ดเพิ่ม)

เมื่อทำการรันโปรแกรม อีกครั้ง ภาพเอฟเฟคดอกไม้ร่วงก็จะย้ายไปแสดงที่ด้านหลังภาพตัวละครแทน ไม่วางทับภาพตัวละครอีกค่ะ ^^"


ภาพดอกไม้โหลดได้ที่นี่ค่ะ (คลิกขวาที่ภาพเลือก save)





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