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

XNA เป็นกรอบเกมโดย Microsoft ที่อนุญาตให้ปรับใช้สำหรับ Windows, Windows Phone และ Xbox 360

3
สุ่มวางศัตรูบนตาราง 2d
ฉันต้องการวางไอเท็มและศัตรูแบบสุ่ม (หรือสุ่มให้มากที่สุด) ในขณะนี้ฉันใช้Randomคลาสของ XNA เพื่อสร้างตัวเลขระหว่าง 800 สำหรับ X และ 600 สำหรับ Y มันรู้สึกเหมือนศัตรูวางไข่ไปทางด้านบนของแผนที่มากกว่าตรงกลางหรือด้านล่าง ฉันไม่ได้สร้างเครื่องกำเนิดไฟฟ้าซึ่งอาจเป็นสิ่งที่ต้องพิจารณา มีเทคนิคอื่น ๆ ที่อธิบายซึ่งสามารถปรับปรุงการจัดวางศัตรูแบบสุ่มในตาราง 2d หรือไม่?
11 xna  2d  sprites  random 

7
การแยกภาพวาดและตรรกะในเกม
ฉันเป็นนักพัฒนาที่เพิ่งเริ่มยุ่งเกี่ยวกับการพัฒนาเกม ฉันเป็น. Net ผู้ชายดังนั้นฉันจึงยุ่งกับ XNA และตอนนี้ฉันกำลังเล่นกับ Cocos2d สำหรับ iPhone คำถามของฉันนั้นกว้างกว่าจริง ๆ สมมติว่าฉันกำลังสร้างเกมโป่งง่ายๆ ฉันมีBallชั้นเรียนและPaddleชั้นเรียน มาจากการพัฒนาของโลกธุรกิจสัญชาตญาณแรกของฉันคือไม่มีรหัสรูปวาดหรือการป้อนข้อมูลในทั้งสองคลาส //pseudo code class Ball { Vector2D position; Vector2D velocity; Color color; void Move(){} } ไม่มีสิ่งใดในคลาสบอลที่จัดการอินพุตหรือจัดการกับรูปวาด จากนั้นฉันจะมีคลาสอีกคลาสของฉันGameหรือของฉันScene.m(ใน Cocos2d) ซึ่งจะสร้างบอลขึ้นมาใหม่และในระหว่างวนรอบเกมมันจะจัดการกับบอลตามที่ต้องการ ในบทเรียนหลายบทสำหรับทั้ง XNA และ Cocos2d ฉันเห็นรูปแบบเช่นนี้: //pseudo code class Ball : SomeUpdatableComponent { Vector2D position; Vector2D velocity; Color color; …

2
ความเป็นไปได้ในการเชื่อมต่อเครือข่ายของ XNA และ Xbox 360 คืออะไร?
ฉันรู้ว่า XNA สำหรับ Xbox 360 มีการ จำกัด การเข้าถึงเครือข่ายมีข่าวลือว่าอนุญาตเฉพาะการสื่อสารผ่านโพรโทคอล Microsoft propitiatory ไปยังหน่วย Xbox 360 อื่น ๆ XNA มีความเป็นไปได้ในการเชื่อมต่อเครือข่ายอะไรบ้าง? สามารถเชื่อมต่อยูนิต Xbox 360 จำนวนเท่าใดกับเครือข่ายย่อยเดียวกัน สูงสุด 16 Xbox ใดสามารถส่งข้อมูลไปยัง Xbox อื่น ๆ บนเครือข่ายย่อยเช่นการสื่อสารแบบ Peer-to-peer ได้หรือไม่ Xbox สามารถสื่อสารกับ XNA บน Windows PC ได้หรือไม่ มีอุปกรณ์อื่นที่คุณสามารถสื่อสารด้วยได้หรือไม่? แล้วเซิร์ฟเวอร์เกมล่ะ? คุณสามารถตั้งค่าเซิร์ฟเวอร์เกมแบบผู้เล่นหลายคนของคุณเองและให้ Xbox เชื่อมต่อกับมันและสื่อสารได้อย่างอิสระหรือไม่? แพลตฟอร์มใดที่คุณจะเขียนรหัสเซิร์ฟเวอร์เกม C ++ บน Unix? หน่วย Xbox …

5
กรอบงาน XNA เหมาะสมกับการเขียนโปรแกรมฝั่งเซิร์ฟเวอร์หรือไม่
ฉันกำลังมองหาการสร้างข้อความที่ใช้ MUD ดังนั้นองค์ประกอบจำนวนมากของกรอบ XNA ดูเหมือนจะเหมาะสมกับสิ่งที่ฉันต้องการ โดยเฉพาะอย่างยิ่งสิ่งต่าง ๆ เช่นวนเกมทั่วไประบบเครือข่าย ฯลฯ ดูเหมือนว่า XNA จะถูกผนวกเข้ากับสภาพแวดล้อมแบบโต้ตอบกับ UI และเสียงดังนั้นฉันไม่แน่ใจว่ามันเป็นวิธีที่ถูกต้องหรือไม่ มันจะง่ายขึ้นหรือไม่ที่จะสร้างมุมมองประเภทนี้ใหม่ขึ้นมาเองลองโค้ง XNA ตามที่ฉันต้องการหรือมีกรอบที่ดีกว่าสำหรับงานประเภทนี้
11 c#  xna 

3
การตรวจจับการชนกันของภาพสามมิติ
ฉันมีปัญหาบางอย่างกับการพยายามตรวจจับการชนกันของไทล์สองภาพสามมิติ ฉันได้ลองพล็อตเส้นระหว่างจุดแต่ละจุดบนไทล์แล้วตรวจสอบการสกัดกั้นเส้น แต่ไม่ได้ผล (อาจเป็นเพราะสูตรไม่ถูกต้อง) หลังจากดูเรื่องนี้สักครู่วันนี้ฉันเชื่อว่าฉันกำลังคิดจะทำอะไรมากมายและจะต้องมีวิธีที่ง่ายกว่านี้ ฉันไม่ได้มองหารหัสเพียงแค่แนะนำวิธีที่ดีที่สุดในการตรวจจับการซ้อนทับ

4
มีเฟรมเวิร์กใดบ้างที่อนุญาตให้ฉันเขียนเกมใน C # บน Linux? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันกำลังมองหาบางอย่างที่เป็นทางเลือกของ XNA - ฉันไม่สนใจหรอกว่าเป็นเครื่องมือ 2D หรือ 3D ไม่ใช่เพราะฉันไม่ชอบ Windows หรือเป็น anti-Microsoft เป็นเพราะฉันชอบใช้ Linux โค้ดใน Linux อย่างสมบูรณ์ (สำหรับ C # ฉันใช้ Mono อย่างชัดเจน) และไม่เคยมีฮาร์ดแวร์ใด ๆ ที่จะสนับสนุนการเขียนโปรแกรมใน XNA จริง ๆ เพียงเพราะการ์ดวิดีโอของฉันอายุ 6 ปี ฉันยังไม่มีซีดี Windows 7 / Vista สำหรับ DirectX 10 …
10 xna  c# 

1
แสงไฟเร็วพร้อมไฟหลายดวง
ฉันจะใช้แสงที่รวดเร็วพร้อมแสงหลายดวงได้อย่างไร ฉันไม่ต้องการ จำกัด ผู้เล่นเขาสามารถวางจำนวนไม่ จำกัด และอาจมีการซ้อนทับกัน (จุด) ไฟในระดับ ปัญหาคือเฉดสีที่มีลูปแบบไดนามิกซึ่งจะจำเป็นในการคำนวณแสงมักจะช้ามาก ฉันมีความคิดว่าถ้ามันเป็นไปได้ในเวลาคอมไพล์ไทม์เพื่อรวบรวม shader n คูณโดยที่ n คือจำนวนแสง หากทราบหมายเลข n ในเวลาคอมไพล์ไทม์สามารถยกเลิกการวนซ้ำได้โดยอัตโนมัติ เป็นไปได้ไหมที่จะสร้าง shader เดียวกันรุ่น n ที่มีจำนวนแสงแตกต่างกัน? ที่รันไทม์ฉันสามารถตัดสินใจได้ว่า shader ใดที่จะใช้ในส่วนของระดับ

4
ตรวจจับ“ การกดปุ่มใด ๆ ”
ฉันพยายามอนุญาตให้ผู้เล่นกดปุ่มใดก็ได้เพื่อดำเนินการต่อจากหน้าหลัก ฉันสามารถทำสิ่งนี้ได้ด้วยการทำรายการของปุ่มและวนลูปผ่านสิ่งเหล่านี้และตรวจสอบว่าหนึ่งในนั้นหยุดทำงานหรือไม่ อย่างไรก็ตามฉันรู้สึกว่ารหัสนี้น่าเกลียดและสงสัยว่ามีวิธีที่ง่ายกว่าในการทำสิ่งที่ฉันไม่ได้คิดหรือ นี่คือโค้ดของฉันตอนนี้: if (GamePad.GetState(PlayerIndex.One).IsConnected) { var buttonList = new List<Buttons>() { {Buttons.A}, {Buttons.B}, {Buttons.Y}, {Buttons.X}, {Buttons.Start}, {Buttons.Back}, {Buttons.RightShoulder}, {Buttons.LeftShoulder}, {Buttons.RightTrigger}, {Buttons.LeftTrigger} }; foreach (var button in buttonList) { if (GamePad.GetState(PlayerIndex.One).IsButtonDown(button)) ExitMainMenu= true; } }
10 xna  monogame 

1
ฉันจะนำเงา 2D มาใช้ระหว่างเลเยอร์ได้อย่างไร
ฉันจะใช้เงา 2 มิติที่ถูกโยนโดยวัตถุในเลเยอร์อื่นได้อย่างไร ไม่ชอบแสงแบบไดนามิกในบทช่วยสอนที่รู้จักกันดีจาก Catalin Zima : แต่ชอบเงาของท่อในวิดีโอนี้ : และชอบเงาของแพลตฟอร์มและตัวละครในวิดีโอนี้ : ฉันต้องการใช้แสงชนิดเดียวกันในฉากที่มีหลายเลเยอร์และแสงจำนวนมากที่มีสีต่างกัน ฉันสามารถจินตนาการได้ว่าทำได้โดยการวาดสำเนาเลเยอร์สีดำเหนือเลเยอร์ที่อยู่ด้านหลังเลเยอร์นั้นและทำการปรับตามรูในเลเยอร์ที่เงาถูกส่ง แต่ฉันหวังว่าจะมีวิธีที่ใช้พิกเซลราคาประหยัดสำหรับวิธีนี้

1
C # / XNA รับตำแหน่งเมาส์ของฮาร์ดแวร์
ฉันใช้ C # และพยายามรับตำแหน่งเมาส์ฮาร์ดแวร์ สิ่งแรกที่ฉันลองคือฟังก์ชั่น XNA ง่าย ๆ ที่ใช้งานง่าย Vector2 position = new Vector2(Mouse.GetState().X, Mouse.GetState().Y); หลังจากนั้นฉันก็ทำการวาดเมาส์เช่นกันและเปรียบเทียบกับเมาส์ฮาร์ดแวร์ของ windows แล้วเมาส์ใหม่ที่มีพิกัด xna ที่ระบุนี้คือ "หยุดหย่อน" โดยที่ฉันหมายความว่ามันอยู่เบื้องหลังโดยไม่กี่เฟรม ตัวอย่างเช่นหากเกมทำงานที่ 600 fps คำสาปมันจะตอบสนอง แต่ที่ความล่าช้าของเมาส์ซอฟต์แวร์ 60 fps ไม่เป็นที่ยอมรับอีกต่อไป ดังนั้นฉันจึงลองใช้สิ่งที่ฉันคิดว่าเป็นเมาส์ฮาร์ดแวร์ [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetCursorPos(out POINT lpPoint); แต่ผลลัพธ์ก็เหมือนกันทุกประการ ฉันยังลองรับเคอร์เซอร์ของ Windows และนั่นก็เป็นจุดสิ้นสุดเช่นกัน - ใช้งานได้ แต่มีความล่าช้าเท่าเดิม ล้อเล่นกับฟังก์ชัน xna: …

6
Visual Studio 2012 และการพัฒนาเกม [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา เอาล่ะฉันคิดว่ามันเป็นคำถามง่าย ๆ แต่ฉันมีปัญหาในการหาคำตอบ ฉันได้อ่านแล้วว่า XNA จะไม่อยู่ใน Visual Studio 2012 ฉันเพิ่งเรียนรู้การใช้ XNA แต่เนื่องจากฉันต้องการทำงานกับเกมฉันอยากรู้ว่ามีวิธีพัฒนาเกมโดยใช้ C # ใน Visual Studio 2012 หรือไม่ หรือถ้าฉันควรเรียนรู้ทุกอย่างอีกครั้งโดยใช้ C ++ และ Direct3D C # เป็นภาษาที่ฉันชอบมากดังนั้นหากไม่มีวิธีที่จะทำใน C # แต่สิ่งที่ค่อนข้างง่ายต่อการใช้ Java สำหรับการพัฒนาเกมฉันก็สนใจเช่นกัน ขอบคุณมาก!
10 xna  c#  3d  directx  .net 

2
XNA การพูดติดอ่างในช่วงเวลาปกติ
ฉันพยายามที่จะทำฮาร์ดแวร์ instancing แต่ฉันตีปัญหาประสิทธิภาพการทำงานที่แปลก อัตราเฟรมเฉลี่ยอยู่ที่ประมาณ 45 แต่มันขาด ๆ หาย ๆ อย่างมาก หน้าต่าง SynchronizeWithVerticalRetrace = false IsFixedTimeStep = false PresentationInterval = PresentInterval.Immediate ภาพด้านล่างแสดงเวลาที่ฉันวัดได้ (พร้อมStopwatch) กราฟระดับบนสุดคือเวลาที่ใช้ในDrawวิธีการและกราฟด้านล่างเป็นเวลาตั้งแต่สิ้นสุดDrawจนจบUpdate เดือยแหลมนั้นอยู่ห่างกันเกือบ 1 วินาทีและมักจะ 2,3,4 หรือ 5 เท่าของเวลาปกติ เฟรมทันทีหลังจากขัดขวางไม่ใช้เวลาเลย ฉันตรวจสอบแล้วว่าไม่ใช่ตัวรวบรวมขยะ ขณะนี้ฉันกำลังวางตาข่ายที่ประกอบด้วยสามเหลี่ยม 12 รูปและจุดยอด 36 จุดเป็นรายการรูปสามเหลี่ยม (ฉันรู้ว่ามันไม่เหมาะ แต่เป็นเพียงการทดสอบ) โดยมี 1 ล้านอินสแตนซ์ ถ้าฉันแบทช์อินสแตนซ์การดึงการโทรออกเป็นส่วนเล็ก ๆ ของ 250 อินสแตนซ์แต่ละปัญหาจะบรรเทา แต่การใช้ cpu เพิ่มขึ้นอย่างมีนัยสำคัญ …
10 xna  performance 

1
พื้นที่หน้าจอสู่อวกาศโลก
ฉันกำลังเขียนเกม 2D ที่โลกของเกมของฉันมีแกนxวิ่งจากซ้ายไปขวาแกนyวิ่งจากบนลงล่างและแกนzออกจากหน้าจอ: ในขณะที่โลกของเกมของฉันอยู่บนลงล่างเกมจะแสดงผลในลักษณะเอียงเล็กน้อย: ฉันกำลังทำงานในการฉายจากอวกาศโลกไปยังพื้นที่หน้าจอและในทางกลับกัน ฉันมีงานเดิมดังนี้: var viewport = new Viewport(0, 0, this.ScreenWidth, this.ScreenHeight); var screenPoint = viewport.Project(worldPoint.NegateY(), this.ProjectionMatrix, this.ViewMatrix, this.WorldMatrix); NegateY()วิธีขยายไม่ตรงกับสิ่งที่ดูเหมือนตั้งแต่ XNA ของYแกนวิ่งล่างขึ้นบนแทนบนลงล่าง ภาพหน้าจอด้านบนแสดงว่าสิ่งนี้ทำงานได้ทั้งหมด โดยทั่วไปฉันมีหลายจุดในพื้นที่ 3 มิติที่ฉันแสดงในพื้นที่หน้าจอ ฉันสามารถแก้ไขคุณสมบัติกล้องแบบเรียลไทม์และดูว่ามันเคลื่อนไหวไปยังตำแหน่งใหม่ได้อย่างไร เห็นได้ชัดว่าเกมจริงของฉันจะใช้สไปรท์แทนที่จะเป็นจุดและตำแหน่งกล้องจะได้รับการแก้ไข แต่ฉันแค่พยายามทำให้คณิตศาสตร์ทั้งหมดเข้าที่ก่อนที่จะถึงสิ่งนั้น ตอนนี้ฉันพยายามที่จะแปลงกลับในทางอื่น นั่นคือกำหนดxและyในพื้นที่หน้าจอด้านบนกำหนดจุดที่สอดคล้องกันในพื้นที่โลก ดังนั้นถ้าฉันชี้เคอร์เซอร์ไปที่มุมล่างซ้ายของรูปสี่เหลี่ยมคางหมูสีเขียวฉันต้องการอ่านพื้นที่โลก (0, 480) Zประสานงานที่ไม่เกี่ยวข้อง หรือค่อนข้างพิกัดzจะเป็นศูนย์เสมอเมื่อทำแผนที่กลับสู่อวกาศโลก เป็นหลักฉันต้องการใช้ลายเซ็นวิธีการนี้: public Vector2 ScreenPointToWorld(Vector2 point) ฉันพยายามหลายสิ่งหลายอย่างเพื่อให้การทำงานนี้ แต่ฉันไม่มีโชค ความคิดล่าสุดของฉันคือฉันต้องโทรหาViewport.Unprojectสองครั้งด้วยค่าที่ใกล้เคียง / ไกลzคำนวณผลลัพธ์Ray, ทำให้เป็นมาตรฐานแล้วคำนวณจุดตัดของเครื่องหมายRayด้วยPlaneที่แสดงถึงระดับพื้นดินของโลก อย่างไรก็ตามฉันติดอยู่ในขั้นตอนสุดท้ายและไม่แน่ใจว่าฉันทำสิ่งที่ซับซ้อนเกินไปหรือไม่ …
10 xna  c#  matrix  projection  screen 

2
วาดเส้นกว้างหนึ่งพิกเซลในพื้นที่ 3 มิติ
ฉันต้องการวาดเส้นในพื้นที่ 3 มิติที่กว้างเสมอหนึ่งพิกเซลบนหน้าจอไม่ว่ากล้องจะอยู่ไกลแค่ไหน (และเช่นเดียวกันสำหรับจุดเดียวเกินไป) มีคำแนะนำใด ๆ เกี่ยวกับวิธีที่ฉันสามารถทำได้?
10 xna 

2
กำจัดวัตถุที่ตายแล้วในเกมได้อย่างมีประสิทธิภาพหรือไม่?
ฉันกำลังใช้ลูป for หรือ foreach ลูป (ไม่สำคัญ) เพื่อวนลูปผ่านวัตถุทั้งหมดของฉันเมื่อพวกเขาต้องการการปรับปรุงหรือวาด อย่างไรก็ตามเมื่อวัตถุถูกฆ่าตายฉันต้องการให้มันถูกลบออกจากคอลเลกชันอีกครั้ง ฉันทำสิ่งนี้โดยการเพิ่มวัตถุลงในรายการวัตถุที่ตายแล้วเมื่อทุกอย่างได้รับการวาดและอัปเดตฉันจะผ่านทุกสิ่งในรายการนี้โดยลบวัตถุในรายการจากแหล่งดั้งเดิมเช่นกัน มีวิธีที่ดีกว่าในการทำเช่นนี้?
10 xna  c#  xna-4.0 

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