1.12k likes | 1.8k Vues
การสร้างเกมแนว Shooting. การสร้างเกมแนว Shooting. เกมแนว Shooting เกิดขึ้นมานานแล้วก่อนเกม Pong เสียอีก ซึ่งได้มีการพัฒนาวีการเล่นเรื่อยมาจนมาถึงปัจจุบัน เกมแนวนี้ยังคงได้รับความนิยมอยู่เนื่องจากสามารถเล่นได้เรื่อยๆ และท้าทายความสามารถซึ่งต้องอาศัยทักษะการบังคับหลบหลีกเป็นหลัก.
E N D
การสร้างเกมแนว Shooting • เกมแนว Shooting เกิดขึ้นมานานแล้วก่อนเกม Pong เสียอีก ซึ่งได้มีการพัฒนาวีการเล่นเรื่อยมาจนมาถึงปัจจุบัน เกมแนวนี้ยังคงได้รับความนิยมอยู่เนื่องจากสามารถเล่นได้เรื่อยๆ และท้าทายความสามารถซึ่งต้องอาศัยทักษะการบังคับหลบหลีกเป็นหลัก
การสร้างเกมแนว Shooting • ในปี1943 ขณะที่เครื่องเล่น Famicom โด่งดังสุดขีด บริษัท Capcom จึงได้สร้างเกมชื่อ 1943 ขึ้นมา ซึ่งพัฒนามาจากภาคก่อนๆ โดยเป็นเกมที่จำลองเหตุการณ์สงครามโลก ผู้เล่นจะต้องบังคับเครื่องบินเพื่อทำลายศัตรูให้หมด นับว่าเป็นเกมที่ได้รับความนิยมมากอีกเกมหนึ่ง
สร้าง Room • เริ่มจากการสร้าง room โดยตั้งค่าต่อไปนี้
โหลดภาพ Sprite • นำภาพ sprite เข้ามาเก็บไว้พร้อมทั้ง • ภาพพื้นหลังด้วยสังเกตชื่อไฟล์จะตรงกับ • ชื่อ sprite หลังจาก “sp_”
การทำให้พื้นหลังเคลื่อนที่การทำให้พื้นหลังเคลื่อนที่ • การตั้งค่าพื้นหลังที่ Room Properties • ให้ความเร็วแนวตั้งของพื้นหลังเป็น 1 • เพื่อให้ดูเหมือนเครื่องบินกำลังบินขึ้นเรื่อยๆ ดังต่อไปนี้
การทำให้เครื่องบินดันจอไปทางซ้ายและขวาการทำให้เครื่องบินดันจอไปทางซ้ายและขวา • สำหรับมุมมองนั้นถ้าสังเกตในเกมจะเห็นว่า • เมื่อเครื่องบินของผู้เล่นบินไปสุดจอด้านขวาและซ้าย • มุมมองจะเลื่อนตามผู้เล่นไป สามารถตั้งค่าได้ต่อไปนี้ • สังเกตที่ช่อง Object following • ซึ่งขณะนี้เรายังได้สร้างวัตถุแทนตัวผู้เล่นซึ่งจะปรากฏใ • นขั้นตอนต่อไป
สร้างออบเจกต์ • ลำดับต่อไปให้สร้างออบเจกต์ในเกมซึ่งจะมีค่อนข้างมาก สามารถแบ่งออกเป็นหมวดหมู่ได้ดังนี้
กลุ่ม Player • ออบเจกต์ภายในกลุ่มนี้จะเกี่ยวกับตัวที่ผู้เล่นต้องควบคุมอาวุธของผู้เล่น รวมถึงการแสดงสถานะของผู้เล่นด้วย
กลุ่ม Enemy • ออบเจกต์ภายในกลุ่มนี้จะเกี่ยวข้องกับศัตรู อาวุธศัตรูและการควบคุมสร้างศัตรู
กลุ่ม Island • ออบเจกต์ภายในกลุ่มนี้จะไม่เกี่ยวข้องกับการเล่นเกมแต่จะสร้างขึ้นมาประกอบฉากเพื่อความสวยงาม
รายละเอียดของออบเจกต์ในแต่ละกลุ่มมีดังต่อไปนี้ กลุ่ม Player • Information about object: player • เป็น parent ของเครื่องบินทุกลำ • Sprite: <no sprite> • Solid: false • Visible: true • Depth: -10 • Persistent: false • Parent: <no parent> • Mask: <same as sprite>
กลุ่ม Player • Create Event: • COMMENT: ตั้งตัวแปรเพื่อถ่วงเวลาการยิง ถ้าค่าเป็น 0 คือยิงได้ ถ้าค่าเป็น 1 คือนยิงไม่ได้ • Set variable shot to 0
กลุ่ม Player • Alarm Event for alarm 0: • COMMENT: คืนค่า 0 ทำให้ยิงได้อีกครั้ง • Set variable shot to 0
Player • Step Event: • COMMENT: ทำให้เครื่องบินไม่ออกนอกจอ • If bbox_right is lager than room_width • Set variable x to room_width- (sprite_width/2) • If bbox_left is smaller than 0 • Set variable x to sprite_width/2 • If bbox_bottom is larger than room_height • Set variable y to room_height-(sprite_height/2) • If bbox_top is smaller than 0 • Set variable y to sprite_height/2
Player • End Step Event: • COMMENT: เมื่อพลังหมด • If health is smaller than 1 • Create a medium effect of type ring relative at • (0,0) of color 4227327 above objects • COMMENT: เมื่อตายจะหน่วงเวลารอกล่องข้อความขึ้น • For all show_status: set Alarm 0 to 120 destroy the instance
Player • Collision Event with object enemy: • COMMENT: ถ้าชนกับเครื่องบินศัตรูเราจะเสียพลังเท่ากับตัวแปร power ของศัตรู และให้ศัตรูระเบิด • Set the health relative to -other.power • for other object: destroy the instance
Player • Collision Event with object bullet_enemy: • COMMENT: ถ้าโดนกระสุนศัตรูพลังจะลดเท่ากับ power ของกระสุนศัตรู และทำลายกระสุนศัตรูด้วย • Set the health relative to-other.power • for other object: destroy the instance
Player • Mouse Event for Glob Right Pressed: • if global.bomb is larger than 0 • for all enemy: destroy the instance • for all bullet_enemy: destroy the instance • set variable global.bomb relative to -1
Player • Key Press Event for 1-key Key: • COMMENT: เปลี่ยนเครื่องบิน • Change the instance into object player 1, yes • Performing events • Key Press Event for 2-key Key: • COMMENT: เปลี่ยนเครื่องบิน • Change the instance into object player 2, yes • Performing events
Player • Key Press Event for 3-key Key: • COMMENT: เปลี่ยนเครื่องบิน • Change the instance into object player 3, yes • Performing events • Key Press Event for 4-key Key: • COMMENT: เปลี่ยนเครื่องบิน • Change the instance into object player 4, yes • Performing events
Player • Key Press Event for 5-key Key: • COMMENT: เปลี่ยนเครื่องบิน • Change the instance into object player 5, yes • Performing events
object: bullet_player • Information about object: bullet_player • กระสุนทั่วไปของเครื่องบินผู้เล่น • Sprite: sp_bullet_player • Solid: false • Visible: true • Depth: 0 • Persistent: false • Parent: <no parent> • Mask: <same as sprite>
Create Event: • COMMENT: พลังกระสุนที่จะไปลด hp ศัตรู • Set variable power to 1
Step Event: • COMMENT: ทำให้ทิศทางของกระสุนถูกต้องและเมื่อกระสุนออกนอกจอให้ทำลายทิ้ง • Scale the sprite with 1 in the xdir, 1 in the ydir, • Rotate over direction-90, and no mirroring • If expression y > room_heigth + 100 || y <-100 || x<-100 • || x>room_width + 100 is true • Destroy the distance
Information about object: player1 • เครื่องบินแบบที่หนึ่งของผู้เล่นสามารถยิงกระสุนได้ทีละ 2 นัด และเคลื่อนที่ได้เร็ว • Sprite: sp_ player1 • Solid: false • Visible: true • Depth: -10 • Persistent: false • Parent: player • Mask: <same as sprite>
player1 • Step Event: • COMMENT: วิ่งตามเมาส์และเรียกเหตุการณ์เหมือนกับ parent • Perform a step towards position (mouse_x, mouse_y) • With speed 3 stop at solid only • Call the inherited event of the parent object
player1 • Mouse Event for Glob Left Button: • COMMENT: ยิงกระสุนค่า shot ต้องเป็น 0 เท่านั้น • if shot is equal to 0 • create instance of object bullet_player at relative position (-5,0) with speed 10 in direction 90 • create instance of object bullet_player at relative position (5,0) with speed 10 in direction 90 • set variable shot to 1 • set Alarm 0 to 20
Information about object: player2 • เครื่องบินแบบที่สองของผู้เล่นสามารถยิงกระสุนได้เร็วติดต่อกันแต่เคลื่อนที่ช้า • Sprite: sp_player2 • Solid: false • Visible: true • Depth: -10 • Persistent: false • Parent: player • Mask: <same as sprite>
player2 • Step Event: • COMMENT: วิ่งตามเมาส์และเรียกเหตุการณ์เหมือนกับ parent • perform a step towards position (mouse_x,mouse_y) with speed 3 stop at solid only • call the inherited event of the parent object
player2 • Mouse Event for Glob Left Button: • COMMENT: ยิงกระสุน ค่า shot ต้องเป็น 0 เท่านั้น • if shot is equal to 0 • create instance of object bullet_player at relative position (0,0) with speed 10 in direction 90 • set variable shot to 1 • set Alarm 0 to 5
Information about object: player3 • เครื่องบินแบบที่สามของผู้เล่นสามารถยิงกระสุนกระจาย 3 ทิศทางแต่เคลื่อนที่ปานกลาง • Sprite: sp_ player3 • Solid: false • Visible: true • Depth: -10 • Persistent: false • Parent: player • Mask: <same as sprite>
player3 • Step Event: • COMMENT: วิ่งตามเมาส์และเรียกเหตุการณ์เหมือนกับ parent • Perform a step towards position (mouse_x, mouse_y) • With speed 2 stop at solid only • Call the inherited event of the parent object
player3 • Mouse Event for Glob Left Button: • COMMENT: ยิงกระสุนค่า shot ต้องเป็น 0 เท่านั้น • If shot is equal to 0 • Create instance of object bullet_player • At relative position (0,0) with speed 10 • In direction 115 • Create instance of object bullet_player • At relative position (0,0) with speed 10 • In direction 90 • Create instance of object bullet_player • At relative position (0,0) with speed 10 • In direction 65 • Set variable shot to 1 • Set alarm 0 to 10
Information about object: bullet_player4 • กระสุนของเครื่องบินแบบที่สี่จะแตกต่างจากกระสุนทั่วไป • ตรงที่เมื่อสร้างขึ้นมาแล้วจะต้องเซต path • ตามที่กำหนดไว้ โดยให้ Add path ดังนี้
bullet_player4 • Create Event: • Call the inherited event of the parent object • COMMENT: เซ็ตกระสุนเข้า path • Set the relative path to path_bullet_palyer4 with • Speed 10 and at the end relative
Information about object: player4 • เครื่องบินแบบที่สี่ของผู้เล่นสามารถยิงกระสุนโค้งในแนวกว้างไปด้านหน้า • Sprite: sp_ player 4 • Solid: false • Visible: true • Depth: -10 • Persistent: false • Parent: player • Mask: <same as sprite>