คำถามติดแท็ก platformer

เกมประเภทแอคชั่นที่เน้นการเคลื่อนไหวบนแพลตฟอร์ม มันมีอยู่เท่า ๆ กันในโลกแห่งเกม 2D และ 3D

5
45 °ลาดใน platformer 2D ที่ใช้กระเบื้อง
ฉันต้องการมีความลาดชันที่เรียบง่าย 45 °ใน platformer ที่ใช้กระเบื้องของฉันอย่างไรก็ตามฉันแค่ดูเหมือนจะไม่สามารถทำให้อัลกอริทึมลง โปรดดูรหัสและวิดีโอบางทีฉันอาจจะขาดอะไรไปหรือเปล่า? //collisionRectangle is the collision rectangle of the player with //origin at the top left and width and height //wantedPosition is the new position the player will be set to. //this is determined elsewhere by checking the bottom center point of the players rect if(_leftSlope …
12 xna  c#  xna-4.0  platformer 

4
ทำให้ผู้เล่นวิ่งไปบนบันไดอย่างราบรื่น
ฉันมีเกมแพลตฟอร์ม 2 มิติที่ผู้เล่นวิ่งไปทางขวาเสมอ แต่ภูมิประเทศไม่ได้เป็นแนวนอนเสมอ ตัวอย่าง: ฉันใช้ระบบชนกล่องที่เพิ่งตรวจสอบจุดตัดพร้อมกล่องผู้เล่นและบล็อกอื่น ๆ เพื่อหยุดผู้เล่นไม่ให้ทำงานหากคุณพบบล็อกขนาดใหญ่เพื่อให้คุณต้องกระโดด แต่เมื่อฉันวางบันไดฉันต้องการให้เขา ทำงานได้อย่างราบรื่นเหมือนเขาอยู่บนพื้นราบ ด้วยระบบการชนคุณจะต้องกระโดดขึ้นบันไดเพื่อผ่านมัน! ฉันคิดถึงการสร้างเส้นแบ่งระหว่างขอบของบันไดและทำให้ผู้เล่นเคลื่อนไหวบนเส้นนั้น ... คุณคิดอย่างไร? มีอะไรที่ฉลาดกว่านี้บ้างไหม?

2
ฉันจะทำให้ตัวละครเดินบนกำแพงที่ไม่เรียบใน platformer 2D ได้อย่างไร
ฉันต้องการมีตัวละครที่เล่นได้ซึ่งสามารถ "เดิน" บนพื้นผิวอินทรีย์ได้ทุกมุมรวมถึงด้านข้างและกลับหัว โดยระดับ "อินทรีย์" ที่มีคุณสมบัติเอียงและโค้งแทนเส้นตรงที่มุม 90 องศา ฉันกำลังทำงานใน AS3 (ประสบการณ์มือสมัครเล่นระดับปานกลาง) และใช้ Nape (มือใหม่มาก) สำหรับฟิสิกส์พื้นฐานที่ใช้แรงโน้มถ่วงซึ่งช่างเดินนี้จะเป็นข้อยกเว้นที่ชัดเจน มีวิธีการในการทำช่างเดินประเภทนี้หรืออาจใช้ข้อ จำกัด ของต้นคอ หรือจะเป็นการดีที่สุดที่จะสร้าง "เส้นทาง" การเดินที่ชัดเจนตามแนวพื้นผิวระดับและใช้เพื่อ จำกัด การเคลื่อนไหวของการเดิน?

2
ตัวอย่าง Microsoft XNA Platformer การตรวจจับ Collsion มีการใช้งานอย่างถูกต้องหรือไม่
ตัวอย่างที่ Microsoft เตรียมไว้ให้ดูเหมือนว่าการตรวจจับการชน (จากสิ่งที่ฉันเห็น) จะมีข้อผิดพลาดเล็กน้อย เมื่อผู้ใช้ชนกับไทล์ Unpassable ความลึกของจุดตัดจะถูกคำนวณ ค่าความลึกที่น้อยกว่า X และ Y ถูกใช้เพื่อกำหนดตำแหน่งของผู้ใช้ดังนั้นจึงไม่เกิดการชนกับไทล์อีกต่อไป แต่ถ้าผู้ใช้เดินทางในแนวทแยงมุมสิ่งนี้จะส่งผลให้ผู้ใช้ไม่ได้จบลงอย่างแม่นยำในจุดที่ตัวละครจะชนกับไทล์ก่อน? ฉันอาจผิด แต่นั่นเป็นเพียงวิธีที่ฉันเห็น private void HandleCollisions() { // Get the player's bounding rectangle and find neighboring tiles. Rectangle bounds = BoundingRectangle; int leftTile = (int)Math.Floor((float)bounds.Left / Tile.Width); int rightTile = (int)Math.Ceiling(((float)bounds.Right / Tile.Width)) - 1; int topTile …

4
ผู้เล่นขยับขึ้นเขากระโดดหรือปีนเขาไหม?
ในเกม platformer ที่ใช้ฟิสิกส์ 2 มิติที่มีบันไดอยู่คุณจะทราบได้อย่างไรว่าผู้เล่นขยับขึ้นมาจากการกระโดดหรือเขาปีนบันไดเช่นที่คุณรู้ว่าจะเล่นภาพเคลื่อนไหวอย่างไร และโดยทั่วไปแล้วเวกเตอร์บอกทิศทางไม่เพียงพอที่จะกำหนดภาพเคลื่อนไหวที่จะเล่น: คุณจะทราบสาเหตุของการเคลื่อนไหวได้อย่างไร (เพื่อให้คุณทราบว่าสไปรต์ที่ถูกต้องที่จะใช้)

1
Multiplayer platformer - ปกติแล้วการแก้ไขเซิร์ฟเวอร์จะต้องใช้กับไคลเอนต์เดียวบนเซิร์ฟเวอร์หรือไม่?
ขณะนี้ฉันกำลังทำงานบน platformer ที่มีผู้เล่นหลายคนค่อนข้างง่าย ฉันอ่านบทความเกี่ยวกับเทคนิคต่าง ๆ ที่ใช้ในการซ่อนเวลาแฝงอยู่ แต่ฉันก็ยังไม่เข้าใจแนวคิดบางอย่าง ฉันพบว่าหัวข้อน่าสนใจมากและต้องการลองใช้ความคิดด้วยตัวเอง แต่ฉันคิดว่าการขอแลกเปลี่ยน gamedev จะมีประสิทธิภาพมากขึ้นสำหรับคำถามของฉัน ฉันจะพยายามอย่างดีที่สุดเพื่ออธิบายสถานการณ์ปัจจุบันของฉันและคำถามใดที่เกิดขึ้นระหว่างทาง ตอนนี้ฉันต้องการซิงค์ผู้เล่นคนเดียวกับเซิร์ฟเวอร์เท่านั้น ในทางทฤษฎีผมสันนิษฐานว่าผู้เล่นคนเดียวที่มีการคาดการณ์ฝั่งไคลเอ็นต์จะไม่ต้องการการแก้ไขเซิร์ฟเวอร์เนื่องจากไม่มีปัจจัยภายนอกที่มีอิทธิพลต่อการเคลื่อนไหวของเขา ดังนั้นต้นแบบของฉันในปัจจุบันมีผู้เล่นเพียงคนเดียวที่ซิงค์กับเซิร์ฟเวอร์โดยไม่ต้องทำการแก้ไขเซิร์ฟเวอร์ หากคุณคุ้นเคยกับระบบเครือข่ายเกมฉันคิดว่าคุณอาจข้ามส่วนบริบทแม้ว่าฉันอาจทำสิ่งผิดปกติไปพร้อมกัน ลูปไคลเอ็นต์ (หนึ่งครั้งต่อเฟรมหนึ่งครั้งทุกๆ ~ 16.67ms) ลูปไคลเอนต์แบบง่ายดูเหมือนว่า: ตรวจสอบอินพุตภายใน (WASD) และจัดทำแพ็กเกจเป็นการกระทำ (เช่นType=MoveLeft, Time=132.0902, ID=15) เราเก็บการกระทำที่บรรจุไว้เพื่อส่งในที่สุด นอกจากนี้เรายังนำการกระทำที่ต้องการไปใช้กับการจำลองทางฟิสิกส์ของเกมโดยตรง ตัวอย่างเช่นหากเรามีการMoveLeftดำเนินการเราจะใช้กำลังไปทางซ้ายกับความเร็วของผู้เล่น ตรวจสอบเพื่อส่งการกระทำ เพื่อป้องกันการใช้แบนด์วิดท์ของลูกค้าที่ไม่เหมาะสมให้ส่งการกระทำที่ทำแพคเกจในช่วงเวลาที่แน่นอนเท่านั้น (เช่น 30ms) ใช้การแก้ไขเซิร์ฟเวอร์ ณ จุดนี้จะจัดการกับเดลต้าและการแก้ไขที่ได้รับจากเซิร์ฟเวอร์และนำไปใช้กับการจำลองสถานการณ์ของเกม สำหรับคำถามนี้ไม่ได้ใช้ อัปเดตฟิสิกส์ท้องถิ่น ใช้วงฟิสิกส์ของผู้เล่นหลัก โดยพื้นฐานแล้วสิ่งนี้จะทำการทำนายการเคลื่อนไหวของผู้เล่น สิ่งนี้เป็นการเพิ่มแรงโน้มถ่วงให้กับความเร็วของผู้เล่นใช้ความเร็วของผู้เล่นกับตำแหน่งของเขาแก้ไขการชนกันตลอดทาง ฯลฯ ฉันควรระบุว่าการจำลองทางฟิสิกส์มักจะดำเนินการด้วยเดลต้าวินาทีคงที่ (เรียกหลายครั้งขึ้นอยู่กับวินาทีเดลต้าจริง) . ฉันข้ามรายละเอียดเฉพาะบางอย่างเกี่ยวกับฟิสิกส์และส่วนอื่น ๆ เพราะฉันรู้สึกว่าพวกเขาไม่จำเป็นสำหรับคำถามนี้ แต่อย่าลังเลที่จะแจ้งให้เราทราบหากพวกเขาจะเกี่ยวข้องกับคำถาม …

1
gluLookAt ทำงานอย่างไร
จากความเข้าใจของฉัน gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); เทียบเท่ากับ: glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); แต่เมื่อฉันพิมพ์ModelViewเมทริกซ์การเรียกเพื่อglTranslatef()ดูเหมือนจะทำงานไม่ถูกต้อง นี่คือข้อมูลโค้ด: #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int …

8
ฉันจะป้องกันไม่ให้ตัวละครของ platformer ของฉันจากการตัดบนกระเบื้องบุผนัง?
ปัจจุบันฉันมี platformer ที่มีแผ่นกระเบื้องสำหรับภูมิประเทศ (กราฟิกที่ยืมมาจาก Cave Story) เกมดังกล่าวเขียนขึ้นโดยใช้ XNA ดังนั้นฉันไม่ได้ใช้เอ็นจิ้นหรือเครื่องยนต์ฟิสิกส์ที่มีอยู่แล้ว การชนกันของกระเบื้องมีการอธิบายค่อนข้างตรงตามที่อธิบายไว้ในคำตอบนี้ (ด้วย SAT แบบง่ายสำหรับสี่เหลี่ยมและวงกลม) และทุกอย่างทำงานได้ดี ยกเว้นเมื่อผู้เล่นวิ่งชนกำแพงขณะล้ม / กระโดด ในกรณีนั้นพวกเขาจะติดกระเบื้องและเริ่มคิดว่าพวกเขาชนพื้นหรือเพดานที่ไม่มีอยู่จริง ในภาพหน้าจอนี้ผู้เล่นเคลื่อนไปทางขวาและตกลงมา ดังนั้นหลังจากการเคลื่อนไหวจะมีการตรวจสอบการชน - และก่อนอื่นมันจะเปิดออกตัวละครของผู้เล่นจะชนกับไทล์ที่ 3 จากพื้นและผลักขึ้นไป ประการที่สองเขาพบว่าชนกับกระเบื้องข้างเขาและผลักไปด้านข้าง - ผลลัพธ์สุดท้ายคือตัวละครของผู้เล่นคิดว่าเขาอยู่บนพื้นและไม่ล้มและ 'จับ' บนไทล์ตราบเท่าที่เขาวิ่งเข้าไป . ฉันสามารถแก้ปัญหานี้ได้ด้วยการกำหนดกระเบื้องจากบนลงล่างแทนซึ่งทำให้เขาล้มลงอย่างราบรื่น แต่แล้วกรณีผกผันก็เกิดขึ้นและเขาจะชนเพดานที่ไม่มีเมื่อกระโดดขึ้นไปบนกำแพง ฉันจะแก้ไขปัญหานี้อย่างไรเพื่อให้ผู้เล่นสามารถตกไปตามกำแพงได้อย่างที่ควร

2
ขนาดฮีโร่ / ตัวละครเมื่อเปรียบเทียบกับขนาดของกระเบื้อง
ดังนั้นฉันจึงสร้าง platformer ง่าย ๆ นี้ที่ Hero มีขนาด 16x16 แต่ยังมีขนาดไทล์เป็น 16x16 ซึ่งฟังดูดีใช่มั้ย แต่หน้าต่างเกม / โลกของฉันคือ 800x416 ซึ่งทำให้ Hero มีขนาดเล็กมากเมื่อเปรียบเทียบ สิ่งนี้ทำให้ฉันประหลาดใจจริงๆ แต่เนื่องจากฉันไม่เคยทำ platformer มาก่อนมันเป็นการค้นพบใหม่ มีกฎกำหนดไว้สำหรับสเกลในเกม platformer หรือไม่? ฉันต้องการให้หน้าต่างเกมของฉันยังคงมีขนาดเท่าเดิม (800x416) ทำให้เกมมีขนาดใหญ่ แต่ฮีโร่ของฉันควรใหญ่ขนาดไหน? ฉันหวังว่าฉันจะชัดเจนกับคำถามและฉันขอขอบคุณข้อมูลเชิงลึกใด ๆ ขอบคุณ

1
การแสดงระดับ / โครงสร้างข้อมูลที่เหมาะสมสำหรับเกมแพลต 2D จากเกม?
ฉันกำลังจะเขียนโปรแกรม Mario ใน Java ฉันกำลังคิดเกี่ยวกับการเป็นตัวแทน 2 ครั้ง / โครงสร้างข้อมูลสำหรับระดับ แต่ฉันไม่แน่ใจว่าควรเลือกแบบใด: อาร์เรย์จำนวนเต็ม 2D ควอดทรีเพื่อแบ่งระดับเป็นชิ้น ๆ อะไรคือข้อดีและข้อเสีย?

5
ฉันจะสร้างวงสวิงในเกม platformer ได้อย่างไร?
ฉันกำลังพัฒนาเกมที่ผู้เล่นสามารถใช้เชือกในการแกว่ง (เช่นเดียวกับที่ Spiderman หรือBionic Commandoทำ) และฉันมีปัญหาในการใช้พฤติกรรมนี้ ทุกคนสามารถช่วยฉันได้อย่างไรฉันหมายถึงสูตรฟิสิกส์และอื่น ๆ จนถึงตอนนี้ฉันมี 3 แนวคิด มีใครใช้สปริง แต่ก็กินเวลาเยอะและบางครั้งก็น่ากลัว อีกสองคนกำลังพยายามคำนวณขั้นตอนต่อไป (อันหนึ่งผ่านการคำนวณพลังงานที่มีศักยภาพและอีกอันผ่านการคำนวณแรงบิด) และทั้งคู่ก็เกือบจะชนกันทุกครั้งที่นักแสดงพยายามแกว่ง นี่คือรหัสที่ฉันเขียนเพื่อคำนวณแรงบิด: float dx = Runner->getPosition().x - ancher.x; float dy = Runner->getPosition().y - ancher.y; float t0 = atan2(dy,dx); //my current angle float k = ((dy) *vx - (dx) * vy) / (dx * dx+dy * …

2
สร้าง 2D Platformer ใน C ++ / SDL กำลังมองหาบทเรียน / ตัวอย่าง / ทรัพยากร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดเมื่อปีที่แล้ว ฉันมีประสบการณ์มากมายเกี่ยวกับ C ++ แต่ฉันไม่มีประสบการณ์กับการเขียนโปรแกรมเกม ฤดูร้อนนี้ฉันวางแผนที่จะสร้าง platformer 2D ตั้งแต่เริ่มต้นโดยใช้ C ++ / SDL สำหรับประสบการณ์การเรียนรู้ ฉันกำลังมองหาแหล่งข้อมูลให้ได้มากที่สุดเพื่อช่วยในการเริ่มต้นใช้งาน รหัสที่มาที่ดีบทเรียนอะไร หนึ่งในบทเรียนที่ดีที่สุดที่ฉันได้พบเป็นกระโดดไม่ได้ใช้งาน 'n' เรียกใช้บทเรียน dev โดยสายฟลอเรียนฮัฟสกี บทเรียนอื่น ๆ ที่คล้ายกัน?
9 c++  2d  sdl  platformer 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.