ตามคำเรียกร้องที่มีตติ้งครั้งที่ 4
Auto-Scrolling FPS System
Download V.1
https://www.mediafire.com/?9xybu05ld6jiodw
ระบบนี้คือเกมแนว FPS หรือ First Person Shooting
ที่เราไม่สามารถบังคับตัวละครได้อย่างอิสระ
นอกจากขยับเพื่อเล็งปืนเท่านั้น
ส่วนการเดินและเลื่อนฉาก เกมจะเป็นตัวทำให้ทั้งหมด
เมื่อถึงจุดๆหนึ่งที่เกมกำหนด ก็จะหยุด และเริ่มมีศัตรูออกมา
ในระบบเบื้องต้นที่แจกนี้
จะยังไม่สามารถให้ศัตรูออกมากลางทางได้
ตัวอย่าง
ระบบนี้ทำงานอย่างไร
ระบบนี้จะแบ่งเป็นสองส่วนใหญ่ๆ คือส่วนของ
3D และส่วนระบบยิงศัตรู
3D-Auto Walking System
หรือก็คือช่วงแรกของเกม ที่ตัวเราเดินไปเรื่อยๆ
จริงๆเราไม่ได้เดินไปไหนครับ
ภาพที่เห็นเป็นแค่การแสดงภาพต่อเนื่อง
โดยการสร้างฉากและทำเป็ Movie ขึ้นมา ด้วยโปรแกรมทำ 3D อะไรก็ได้
ในตัวอย่างนี้ใช้
FPS Creator
ทำยังไงก็ได้ ให้ได้ออกมาเป็นรูปต่อเนื่อง และเฟรมเรทที่เหมาะสม
(จำนวนรูปต่อวินาที ต้องหาร 20 ลงตัว เช่น 2,4,5 ไม่ควรจะเกินนี้ไม่งั้นเกมจะหนักโดยไม่จำเป็น)
สคริปต์
Code:
=begin
Scene_Image_Movie
By OP_Jum_RPG
ใช้แสดงภาพต่อเนื่องกัน ไม่จำกัดจำนวนภาพ
ชื่อโฟลเดอร์ตั้งอะไรก็ได้ ใส่ใน Graphics
ชื่อไฟล์ตั้งให้เหมือนกันทั้งโฟลเดอร์ ตามด้วยลำดับภาพ ไม่ต้องเว้นวรรค
เวลาเรียกใช้ ก็
$scene = Scene_Movie.new("Folder name","Image Name",delay,maxframe)
ใส่เครื่องหมาย " ด้วย
ตรงชื่อภาพ ไม่ต้องใส่เลขภาพและนามสกุลไฟล์
ถ้าชื่อภาพมีแต่ตัวเลขให้เว้นว่างไว้
=end
class Scene_Movie
def initialize(folder="",name="",delay=5,frame=0)
@folder = folder
@name = name
@delay = delay
@frame = frame
end
def main
if @name == "" && @folder == ""
$scene = Scene_Map.new
return
end
@index = 1
@count = 0
@img = Sprite.new
@img.bitmap = Bitmap.new(32,32)
Graphics.transition
loop do
Graphics.update
update
if $scene != self
break
end
end
Graphics.freeze
@img.dispose
end
def update
if @count > 0
@count -= 1
else
@count = @delay
@img.bitmap.dispose
@img.bitmap = Bitmap.new("Graphics\\"+@folder+"\\"+ @[email protected]_s)
@index += 1
if @index > @frame
$scene = Scene_Map.new
end
end
end
end
เช่น ในตัวอย่างนี้
รูปอยู่ในโฟลเดอร์ชื่อ
S1_1
และรูปชื่อ
fgdhdhd
จำนวนรูป
94 รูป
เฟรมเรท
3 รูปต่อวินาที
หรือ Delay
7 เฟรม ต่อรูป
จึงเรียกใช้สคริปต์เป็น
Code:
$scene=Scene_Movie.new("S1_1","fgdhdhd",7,94)
สำคัญ มันเป็นบั๊ค
หลังจบคำสั่งนี้ ให้ใส่คำสั่งรอเวลา 1 เฟรมไว้ก่อนคำสั่งต่อไปด้วย
-----------------------------------------------------
จากนั้นให้เทเลพอร์ทไปแผนที่ใหม่เลยจะดีที่สุด
และจะเข้าสู่ช่วงที่เรายิงกับศัตรู
Common Event#1 [Shot]
- เช็คกดปุ่มยิง ด้วย
Code:
Input.trigger?(Input::C)
เพื่อป้องกันการกดแช่
- เช็คว่าเรามีกระสุนเหลือไหม
- ถ้ามี แสดงอนิเมชั่นยิงที่ตัวผู้เล่น (ไอ้วงกลมๆสีแดงนั่นแหละ) และกระสุน -1
Common Event#2 [Reload]
- เช็คกดปุ่ม Reload
- จำนวนกระสุน = Max
Event ที่ขอบด้านล่างและทางขวา เป็นแค่ Interface ขอไม่อธิบายนะครับ
Event#1
เปลี่ยนพาโนราม่าเป็นรูปสุดท้ายของ 3D เมื่อกี๊
Event#2
สั่งให้ศัตรูออกมา
Event#3
รอเวลา แล้วใส่เอฟเฟ็คต์ผู้เล่นโดนยิง
Event Enemy
เช็ค"กดคีย์" ลด HP ศัตรูตัวนั้น
ถ้าอยากให้ศัตรูออกมากลางทาง หรือเล่นต่อเนื่องโดยไม่ต้องเปลี่ยนแผนที่ (กำลังพัฒนา)
สิ่งที่ต้องทำ
1. เปลี่ยนจากโชว์รูป ไปเป็นพาโนราม่าแทน ไม่งั้นมันจะบังหมด
2. คำสั่งควบคุมศัตรู และการยิง ต้องทำงานตลอดเวลา
และศัตรูต้องหายไปเมื่อถึงเวลาที่กำหนด
3. ศัตรูต้องเลื่อนไปตามฉาก ซึ่งความจริงฉากมันอยู่ของมันเฉยๆ จะยากตรงนี้แหละ
4. ที่เหลือก็อยู่ที่การนับเฟรมแล้วล่ะ