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

2D หมายถึงพื้นที่สองมิติที่มีการแสดงพิกัดด้วยค่า X และ Y


2
การออกแบบการเลื่อนหน้าจอสไตล์ร็อคแมน
ซีรีส์ Mega Man ของ NES คลาสสิกใช้เทคนิคการเลื่อนที่เฉพาะเจาะจงมากซึ่งฉันมีปัญหาในการใช้งาน โดยพื้นฐานแล้วระดับจะแบ่งออกเป็น "หน้าจอ" ซึ่งมีขนาดเท่ากันทั้งหมด หน้าจอบางหน้าเลื่อนเข้าหากันอย่างราบรื่นสร้างภาพลวงตาของการเล่นที่กว้างขึ้น หน้าจอบางหน้าหยุดกล้องไม่ให้เลื่อนจนกว่าโปรแกรมเล่นจะถึงขอบของหน้าจอในเวลาที่มีการเปลี่ยนภาพและหน้าจอถัดไปแสดงขึ้น อาจเป็นไปได้ที่หน้าจอเดียวจะมีการเปลี่ยนแปลงมากกว่าหนึ่งครั้งตัวอย่างเช่นมีบันไดที่ขึ้นไปหนึ่งหน้าจอ แต่คุณสามารถเดินไปข้างหน้าไปยังอีกหน้าจอหนึ่งได้ การเปลี่ยนหน้าจอเหล่านี้เป็นแบบจำลองได้อย่างไร? หน้าจอ 0 เป็นหน้าจอเริ่มต้นซึ่งผู้เล่นเริ่มต้น หน้าจอ 0-3 เป็นการเลื่อนในแนวนอนอย่างราบรื่นและปรากฏต่อผู้เล่นในรูปแบบการเล่นต่อเนื่อง เนื่องจากมีการเปลี่ยนแปลงระหว่างหน้าจอ 3 และเป็นหน้าจอใกล้เคียง 4 และ 5 กล้องจะไม่เลื่อนผ่านขอบด้านขวาหรือขอบด้านบนของหน้าจอ 3 ยกเว้นว่าผู้เล่นเลื่อนไปที่ขอบนั้นและ "ดัน" ผ่านไปยังหน้าจอถัดไป เมื่อผู้เล่นย้ายไปที่ขอบการเปลี่ยนแปลงอย่างใดอย่างหนึ่งอินพุตของผู้ใช้จะถูกปิดใช้งานชั่วขณะและกล้องจะเปลี่ยนไปสู่พื้นที่ใหม่หลังจากที่อินพุตผู้ใช้ถูกกู้คืน หน้าจอสีน้ำเงิน (หน้าจอ 5) ปิดใช้งานการเลื่อนแนวนอนเพื่อให้สามารถเปลี่ยนแนวตั้งได้เท่านั้น หน้าจอสีเขียว (หน้าจอ 6) มีการเปลี่ยนแนวตั้งกลับไปที่หน้าจอ 5 แต่ยังช่วยให้การเลื่อนแนวนอนราบรื่นไปสู่หน้าจอ 7 แก้ไข : การใช้การเปลี่ยนในแง่ของห้องนำฉันไปสู่สิ่งนี้: รอยหยักขนาดเล็กที่มีลูกศรเป็นบริเวณที่เกิดการเปลี่ยนแปลงได้ แต่ละภูมิภาคมี "ทิศทาง" และโกหกเพียงด้านนอกของพื้นที่ที่มองเห็นของห้อง …
25 2d  camera  platformer 

4
วิธีการทำให้เคลื่อนไหว 2d นามธรรมลงบนผิวน้ำ?
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ขณะนี้ฉันใช้เกมที่มีมุมมองจากบนลงล่างของมหาสมุทร ฉันใช้สิ่งต่อไปนี้เป็นพื้นผิวที่เป็นนามธรรมเล็กน้อย: พื้นผิวที่แท้จริงมีความโปร่งใสฉันเพิ่มสีเขียวเหมือนเพื่อความชัดเจน ปัญหาที่ฉันมีอยู่ในตอนนี้คือฉันไม่รู้ว่าจะทำให้พื้นผิวนี้เคลื่อนไหวอย่างไรดังนั้นน้ำจึงดูดี ฉันพยายามย้ายพื้นผิวด้วยคลื่นบาป: texture.y += sin(angle). แน่นอนว่าตอนนี้พื้นผิวทั้งหมดกำลังเคลื่อนไหวซึ่งดูไม่สมจริง สิ่งต่อไปที่ฉันพยายามคือเพิ่มเลเยอร์อื่นและใช้เอฟเฟกต์พารัลแลกซ์ ดังนั้นการสะท้อนกลับภายใต้ผิวน้ำก็จะเคลื่อนไหวเช่นกัน แต่ช้ากว่ามาก มันดูดีขึ้นเล็กน้อย แต่ก็ยังไม่ ... ดีพอ ฉันคิดว่าอนิเมชั่นที่ดูดีที่สุดน่าจะเป็นถ้าแต่ละเซลล์จะขยายและหดตัวเช่นเว็บหรือผ้า ลองคิดดูว่าถ้าใครจะดึงจุดยอดหนึ่งของเซลล์เหล่านี้เล็กน้อยและเซลล์เพื่อนบ้านจะขยายตัวและเซลล์ที่ฉันดึงเข้าหา (หรือกดไปที่) จะหดตัว ชนิดของใยสปริง (?) แต่ฉันไม่มีเงื่อนงำวิธีการใช้สิ่งนี้: แบบจำลองคณิตศาสตร์สำหรับเรื่องนี้คืออะไร? บางสิ่งบางอย่างกับสปริงแรงผลัก / ดึงอยู่ที่ไหน และถ้าเป็นเช่นนั้นฉันจะแมปโมเดลนี้กับพื้นผิวที่กำหนดได้อย่างไร รักษาความโค้งทั้งหมดและสิ่งที่ไม่ ... (ฉันยังเปิดรับความคิดที่แตกต่างกัน / คำตอบเกี่ยวกับวิธีการเคลื่อนไหวพื้นผิวที่กำหนดความสมจริงไม่ได้เป็นจุดที่นี่เพียงแค่น้ำดูดีเช่นการเคลื่อนไหว ... ) โซลูชันจาก DMGregory ฉันโพสต์ตัวอย่าง libgdx ในโพสต์นี้: ภาพเคลื่อนไหวน้ำ 2d ขรุขระและไม่ราบรื่น (ดูคำตอบเกี่ยวกับการกรองพื้นผิว)
24 2d  libgdx  animation  water 

5
วิธีการคำนวณพื้นที่การมองเห็นในเกมแบบสองมิติได้อย่างรวดเร็ว
ฉันมีเมทริกซ์ของแผ่นกระเบื้องบนบางแผ่นที่มีวัตถุ ฉันต้องการคำนวณผู้เล่นที่สามารถมองเห็นไทล์และไม่ได้และฉันต้องทำอย่างมีประสิทธิภาพ (ดังนั้นมันจะคำนวณเร็วพอแม้ว่าฉันจะมีเมทริกซ์ขนาดใหญ่ (100x100) และวัตถุจำนวนมาก ฉันพยายามทำด้วยอัลกอริทึมของ Bresenhamแต่มันช้า นอกจากนี้ยังทำให้ฉันมีข้อผิดพลาด: ----XXX- ----X**- ----XXX- -@------ -@------ -@------ ----XXX- ----X**- ----XXX- (raw version) (Besenham) (correct, since tunnel walls are still visible at distance) (@ is the player, X is obstacle, * is invisible, - is visible) ฉันแน่ใจว่าสิ่งนี้สามารถทำได้ - หลังจากทั้งหมดเรามี NetHack, Zangband และพวกเขาทั้งหมดจัดการกับปัญหานี้อย่างใด :) คุณสามารถแนะนำอัลกอริทึมสำหรับสิ่งนี้ได้อย่างไร …

3
วิธีที่ดีที่สุดในการปิดบังสไปรต์ 2D ใน XNA
ฉันกำลังพยายามปกปิดผีสางบ้าง แทนที่จะอธิบายเป็นคำฉันได้สร้างภาพตัวอย่าง: บริเวณที่สวมหน้ากาก (สีขาว) ทีนี้สไปรท์สีแดงที่ต้องถูกครอบตัด ผลสุดท้าย ตอนนี้ฉันทราบแล้วว่าใน XNA คุณสามารถทำสองสิ่งเพื่อบรรลุเป้าหมายนี้: ใช้ Buffer ฉลุ ใช้ Pixel Shader ฉันได้ลองทำพิกเซลเชดเดอร์ซึ่งทำสิ่งนี้เป็นหลัก: float4 main(float2 texCoord : TEXCOORD0) : COLOR0 { float4 tex = tex2D(BaseTexture, texCoord); float4 bitMask = tex2D(MaskTexture, texCoord); if (bitMask.a > 0) { return float4(tex.r, tex.g, tex.b, tex.a); } else { return float4(0, 0, …
24 xna  2d  hlsl  masking 

3
หนังสือฟิสิกส์ที่ดีสำหรับการพัฒนาเกมคืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ฉันกำลังมองหาหนังสือเริ่มต้นที่ดีเกี่ยวกับวิชาฟิสิกส์ในการพัฒนาเกม สิ่งที่เน้นเกม 2D น่าจะดีกว่า
23 2d  physics  books 

7
ฉันจะดักจับวัตถุด้วยการเคลื่อนที่เป็นวงกลมได้อย่างไร
ฉันกำลังสร้างเกมอวกาศ 2 มิติและต้องทำให้ยานอวกาศดักจับดาวเคราะห์ ฉันมีรหัสการทำงานสำหรับการสกัดกั้นเส้นตรง แต่ไม่สามารถหาวิธีคำนวณตำแหน่งของดาวเคราะห์ในวงโคจรเป็นวงกลมได้ เกมไม่ถูกต้องทางวิทยาศาสตร์ดังนั้นฉันจึงไม่กังวลเกี่ยวกับความเฉื่อยแรงโน้มถ่วงวงโคจรรูปไข่ ฯลฯ ฉันรู้ตำแหน่งยานอวกาศและความเร็วรวมถึงดาวเคราะห์วงโคจร (Radius) และความเร็ว

11
ฉันจะทำให้การเคลื่อนที่เชิงขั้วเป็นมิตรกับผู้ใช้รอบวงกลมได้อย่างไร
ฉันกำลังทำงานในเกม 2D ที่คุณลงจอดบนดาวเคราะห์ด้วยเรือและสามารถออกจากเรือแล้วเดินไปรอบ ๆ ดาวเคราะห์เหล่านี้มีขนาดเล็กมาก (บางครั้งคิดว่ารัศมี 350 พิกเซล) และมองจากด้านข้าง ดังนั้นคุณสามารถเห็นดาวเคราะห์ทั้งใบบนหน้าจอโดยทั่วไป นี่อาจทำให้สับสนดังนั้นนี่คือภาพ: ฉันใช้ปุ่ม A และ D เพื่อเลื่อนทวนเข็มนาฬิกาและตามเข็มนาฬิกาตามลำดับ ปัญหาคือถ้าคุณอยู่ใน "ด้านบน" ของดาวเคราะห์ (ครึ่งบน) สิ่งนี้สมเหตุสมผล: การเลื่อนไปทางซ้าย D จะเลื่อนไปทางขวา อย่างไรก็ตามหากคุณอยู่ใน "ด้านล่าง" ของดาวเคราะห์ (ครึ่งล่าง) A จะเลื่อนไปทางขวาและ D จะเลื่อนไปทางซ้าย ความคิดเห็นใด ๆ เกี่ยวกับฉันจะทำให้ใช้งานง่ายขึ้นได้อย่างไร

3
วิธีที่ดีที่สุดในการจัดเก็บตัวแปรทั่วทั้งเกม
ฉันมีหน้าจอตัวเลือกสำหรับสิ่งต่าง ๆ เช่นความยากลำบากความละเอียดเต็มหน้าจอ ฯลฯ แต่ฉันพยายามหาวิธีที่ดีที่สุดในการจัดเก็บ / รับตัวแปรเหล่านี้ในเวลาทำงาน ขณะนี้ฉันได้ใช้Constantsคลาสที่มีGameOptionenums ทั้งหมดแต่ฉันจะเลือกค่าเริ่มต้นสำหรับตัวเลือกทั้งหมดเหล่านี้ได้อย่างไร นอกจากนี้ฉันจะรับ Enum ที่เลือกในปัจจุบันได้อย่างไร เกี่ยวกับความละเอียดโดยเฉพาะฉันได้ตัดสินใจที่จะเก็บค่า แต่ฉันไม่แน่ใจว่าจะได้รับค่าเริ่มต้นหรือค่าที่เก็บไว้ในปัจจุบัน ทิศทางใดก็จะดี ขอบคุณ! :) namespace V1.test.RPG { public class GameOptions { public enum Difficulty { EASY, MEDIUM, HARD } public enum Sound { ON, QUIET, OFF } public enum Music { ON, QUIET, OFF } public enum …
23 c#  2d 

2
การใช้“ การกระโดดสองครั้งอย่างถูกต้อง”
ฉันกำลังเล่นเกม 2D บน iPhone โดยใช้ Corona (เวอร์ชั่นทดลองดังนั้นฉันไม่สามารถใช้ฟอรัมของพวกเขาได้) เกมดังกล่าวเกี่ยวข้องกับตัวละครที่ตกลงมาบนท้องฟ้าและฉันพยายามที่จะใช้ "การกระโดดสองครั้ง" สำหรับตัวละครเพื่อให้เขาสามารถกระโดดขึ้นได้ในขณะที่ตกลงมา ฉันใช้ห้องสมุดฟิสิกส์ของ Corona เพื่อให้ตัวละครตกและวิธีที่ดีที่สุดในการกระโดดให้เขาคือการใช้วิธีการกระตุ้นตามแนวตั้ง object:applyLinearImpulse(0, -0.4, object.x, object.y) ปัญหาที่ฉันเผชิญคือเมื่อตัวละครเพิ่งเริ่มต้น (ความเร็วแนวตั้งต่ำ) เขากระโดดสูงมากและเมื่อเขาตกลงมาพักหนึ่ง (ความเร็วแนวตั้งสูง) การกระโดดนั้นเล็กน้อย ฉันเดาว่าทางออกที่ดีที่สุดคือใช้สมการบางอย่างกับความเร็วเป็นอินพุตเพื่อให้กระโดดเหมือนกันโดยไม่คำนึงถึงความเร็ว แต่ฉันไม่สามารถหาได้ว่าสมการนั้นจะเป็นอะไร โอเคนั่นคือความคิดทั้งหมดของฉัน คำถามสุดท้ายก็คือคุณใช้การกระโดดสองครั้งกับฟิสิกส์ได้อย่างไร มีสมการที่เหมาะสมสำหรับปัญหาของฉันหรือไม่ ฉันควรใช้แนวทางอื่นหรือไม่? มันเคยทำมาก่อนในเกมเช่น Smash Bros ดังนั้นจึงมีวิธีแก้ปัญหาที่ทำซ้ำได้ใช่ไหม?
23 2d  physics 

4
วิธีจัดการกับความแตกต่างระหว่างพิกัดหน้าจอ 2D และพิกัดคาร์ทีเซียน
ระบบพิกัดหน้าจอ / บิตแมป 2D ส่วนใหญ่มีแกน Y บวกที่ชี้ลง (โดยมีจุดเริ่มต้นที่มุมซ้ายบน) นี่เป็นสิ่งที่ตรงกันข้ามกับที่คนส่วนใหญ่คิดเชิงเรขาคณิตโดยมีแกน Y บวกชี้ขึ้น (โดยมีจุดกำเนิดอยู่ตรงกลาง) เกมส่วนใหญ่จัดการระบบพิกัด 2D สองระบบที่ต่างกันได้อย่างไร มีสองประเภทหลักของพิกัด (หน้าจอเทียบกับคาร์ทีเซียน) แต่อาจมีช่องว่างพิกัดที่แตกต่างกันมาก: พื้นที่สไปรท์พื้นที่โลกพื้นที่ดูพื้นที่หน้าจอ ฯลฯ ... พื้นหลัง: เดิมทีฉันสร้างพิกัดโลกในเกมของฉันให้ตรงกับแบบแผนการประสานงานหน้าจอ 2 มิติ สิ่งนี้ทำให้เป็นเรื่องธรรมดามากที่จะใช้รูทีนการวาดภาพกราฟิก แต่ปัญหาที่ละเอียดอ่อนเกิดขึ้นเมื่อใช้ฟังก์ชันตรีโกณมิติเช่น atan2 () ผลลัพธ์ของการป้อนพิกัด atan2 () หน้าจอ 2D มีความสับสนอย่างมากเนื่องจาก atan2 () สมมติว่าแกน y บวกขึ้น ดังนั้นฉันจึงเปลี่ยนพิกัดโลกของฉันให้เป็นไปตามระบบพิกัดคาร์ทีเซียนแบบคลาสสิก (โดยมีจุดเริ่มต้นที่ด้านล่างซ้ายของหน้าจอ) การใช้เหตุผลกับ atan2 () นั้นตรงไปตรงมามากกว่า แต่ตอนนี้การทำเหตุผลประเภทอื่น ๆ ทำได้ยากขึ้น: หากฉันคลิกที่หน้าจอที่นี่สิ่งที่สไปรต์อยู่ด้านล่าง …
23 2d  screen  coordinates 

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

2
คุณสมบัติ pixels to units ใน Unity sprites ใช้เพื่ออะไร
ฉันเริ่มเรียนรู้ Unity เพื่อการพัฒนา 2D ดังนั้นฉันกำลังนำเข้าหลายสไปรท์ในเกมและผมก็ไม่สามารถช่วย แต่แจ้งให้ทราบว่ามีการ "พิกเซลหน่วย" 100ทรัพย์สินโดยเริ่มต้นใน 1ปกติผมตั้งค่าให้ มีเหตุผลที่ฉันจะต้องมีค่านี้แตกต่างจาก1? หรือโดยทั่วไปมีเหตุผลที่จะมีหลายสไปรต์ที่ต่างกัน
22 2d  unity 

4
ตัวอย่างที่ดีเกี่ยวกับการสร้างของเหลว 2 มิติคืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ใครมีตัวอย่างบทแนะนำหรือตัวอย่างที่ดีในการแบ่งปันที่ควรเป็นใน C # หรือ C / C ++?
22 2d  simulations 

6
มีเทคนิคอะไรบ้างในการออกแบบด่าน platformer สไตล์มาริโอที่สนุกและท้าทาย [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน8 เดือนที่ผ่านมา ฉันมีทุกอย่างที่ฉันต้องการในการสร้างเกมประเภทมาริโอ ฉันไม่รู้ว่าจะออกแบบระดับอย่างไรเพื่อให้ท้าทายหรือสนุก เคล็ดลับใด ๆ วิธีเดียวที่จะฆ่าศัตรูคือการกระโดดพวกเขาดังนั้นฉันคิดว่ามันจะยากเกินไปที่จะสร้างหัวหน้า ฉันแค่จะทำให้ระดับสุดท้ายยาว นี่เป็นความคิดที่ไม่ดีเหรอ?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.