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

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

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

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

272

กระทู้

272

โพสต์

979

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

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

[Renpy] 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
effect_SnowBlossom01.jpg
(สำหรับภาพดอกไม้นี้ให้คลิกโหลดที่ข้างล่างบทความไปเลยก็ได้ค่ะ ข้าพเจ้าแปะให้แล้ว)

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

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


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


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


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

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

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

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


sakura1.png sakura2.png


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

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

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

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

GMT+7, 2024-4-26 14:14 , Processed in 0.088904 second(s), 21 queries .

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

© 2001-2017 Comsenz Inc.

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