irpg Community
Auto-Scrolling FPS System V.1 - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html)
+--- Forum: The Great RPG Maker Library (https://irpg.in.th/forum-5.html)
+--- Thread: Auto-Scrolling FPS System V.1 (/thread-1860.html)



Auto-Scrolling FPS System V.1 - OP_Jum_RPG - 05-11-2014

ตามคำเรียกร้องที่มีตติ้งครั้งที่ 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+"\\"+ @name+@index.to_s)
      @index += 1
      if @index > @frame
        $scene = Scene_Map.new
      end
    end
  end
end


เช่น ในตัวอย่างนี้
[Image: Test_FPS_1.jpg]
รูปอยู่ในโฟลเดอร์ชื่อ 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. ที่เหลือก็อยู่ที่การนับเฟรมแล้วล่ะ


RE: Auto-Scrolling FPS System V.1 - shogun - 05-11-2014

เหมือนเกมส์ the house of the dead เลย
เดินเองและก็หยุดให้ยิง


RE: Auto-Scrolling FPS System V.1 - Mysticphoenix - 05-11-2014

โอ้วแหล่มมาก แต่เปลืองภาพไปนิด ถ้าทำเป็นเกมเล็กๆไม่ใหญ่มากก็โอคับ แมวเบิกบาน


RE: Auto-Scrolling FPS System V.1 - motley - 05-12-2014

เมพขริงๆ RMXP ทำได้ทุกอย่างจริงๆครับ Oh My God