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

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

2
ฉันจะทำอัลฟ่าโปร่งใสอย่างถูกต้องใน XNA 4.0 ได้อย่างไร
โอเคฉันได้อ่านบทความบทช่วยสอนและคำถามเกี่ยวกับเรื่องนี้แล้ว ส่วนใหญ่ชี้ไปที่เทคนิคเดียวกันซึ่งไม่ได้แก้ปัญหาของฉัน ฉันต้องการความสามารถในการสร้างสไปรต์แบบกึ่งโปร่งใส (ของ texture2D จริงๆ) และให้สไปรต์ซ้อนทับอีก ฉันสามารถทำได้โดยใช้ตัวอย่างโค้ดที่ฉันพบ แต่ฉันไม่พอใจกับผลลัพธ์และฉันรู้ว่ามีวิธีในการทำเช่นนี้ ในการเขียนโปรแกรมมือถือ (BREW) เราทำมันเป็นโรงเรียนเก่าและตรวจสอบแต่ละพิกเซลเพื่อความโปร่งใสก่อนการเรนเดอร์ ในกรณีนี้ดูเหมือนว่าจะทำให้เทพดาด้านล่างมันผสมกับอัลฟาด้านบน นี่อาจเป็นสิ่งประดิษฐ์ของวิธีที่ฉันแสดงพื้นผิว แต่อย่างที่ฉันพูดไปก่อนหน้านี้ทุกตัวอย่างชี้ไปที่เทคนิคนี้ ก่อนที่ฉันจะไปเพิ่มเติมฉันจะไปข้างหน้าและวางรหัสตัวอย่างของฉัน public void Draw(SpriteBatch batch, Camera camera, float alpha) { int tileMapWidth = Width; int tileMapHeight = Height; batch.Begin(SpriteSortMode.Texture, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.Default, RasterizerState.CullNone, null, camera.TransformMatrix); for (int x = 0; x < tileMapWidth; x++) { …
14 xna  2d  c#  rendering  transparency 

4
การตรวจจับการชนกันที่รวดเร็วยิ่งขึ้น
เมื่อไม่นานมานี้ฉันกำลังทำงานกับนักแม่นปืน 2d ที่รวดเร็วและฉันเจอปัญหาอันยิ่งใหญ่ ตรวจจับการชนกัน แน่นอนว่ามันใช้งานได้ แต่ช้ามาก เป้าหมายของฉันคือ: มีศัตรูจำนวนมากบนหน้าจอและให้พวกเขาไม่ได้สัมผัสกัน ศัตรูทั้งหมดกำลังไล่ตามเอนทิตีของผู้เล่น ส่วนใหญ่มีความเร็วเท่ากันดังนั้นไม่ช้าก็เร็วพวกเขาทั้งหมดก็ลงเอยด้วยการเว้นวรรคขณะไล่ล่าผู้เล่น สิ่งนี้ทำให้ปัจจัยความสนุกลดลงอย่างมากสำหรับผู้เล่นดูเหมือนว่าคุณจะถูกไล่ล่าโดยศัตรูเพียงคนเดียวเท่านั้น เพื่อป้องกันไม่ให้พวกเขาใช้พื้นที่เดียวกันฉันได้เพิ่มการตรวจจับการชนกัน (การตรวจจับ 2D ขั้นพื้นฐานมากซึ่งเป็นวิธีเดียวที่ฉันรู้) ซึ่งก็คือ Enemy class update method Loop through all enemies (continue; if the loop points at this object) If enemy object intersects with this object Push enemy object away from this enemy object มันใช้งานได้ดี ตราบใดที่ฉันมี <เอนทิตีศัตรู …

1
ภูมิประเทศเรียบ Voxel
ในโครงการส่วนบุคคลฉันพยายามสร้างตัวสร้างภูมิประเทศที่จะสร้างภูมิประเทศที่ดูคล้ายกับภูมิประเทศที่ราบเรียบของ Castle Story หากคุณไม่เคยเห็นมาก่อนนี่: อย่างที่คุณเห็นมันคือการรวมกันของบล็อกและบล็อก "ราบรื่น" สิ่งที่ฉันพยายามทำเพื่อเลียนแบบรูปลักษณ์นี้คือให้แผนผังความสูงขนาดเล็กแต่ละบล็อก โดยทั่วไปแล้วใช้งานได้ แต่มีบางประเด็นที่ให้ภูมิประเทศเช่นนี้: ปัญหาคือว่าแต่ละบล็อกมี 1x1x1 แต่บางครั้งความสูงของตำแหน่งใดตำแหน่งหนึ่งเป็นค่าลบหรือ> 1 ในกรณีนี้ฉันคลิปมันและตั้งค่าความสูงเป็น 0 หรือ 1 เพื่อแสดงให้เห็นถึงสิ่งที่ฉันหมายถึงนี่คือแผนภาพ: เพื่อสร้างความสูงฉันโดยทั่วไปทำ: genColumn(int x, int z) { int highestBlockY = (int)noise2d(x, z); bool is_surface = true; for(int y = max_height - 1; y >= 0; y--) { Block b; if(is_surface) { b = …

2
วิธีปฏิบัติที่ดีที่สุดสำหรับการตั้งค่าพารามิเตอร์ Effect ใน XNA
ฉันต้องการถามว่ามีวิธีปฏิบัติที่ดีที่สุดสำหรับการตั้งค่าEffectพารามิเตอร์ใน XNA หรือไม่ pass.Apply()หรือกล่าวอีกนัยหนึ่งว่าสิ่งที่เกิดขึ้นเมื่อผมเรียก ฉันจินตนาการถึงหลาย ๆ สถานการณ์: ทุกครั้งที่Applyมีการเรียกพารามิเตอร์เอฟเฟกต์ทั้งหมดจะถูกถ่ายโอนไปยัง GPU และดังนั้นจึงไม่มีผลต่อความถี่ที่ฉันตั้งค่าพารามิเตอร์ แต่ละครั้งApplyจะถูกเรียกเฉพาะพารามิเตอร์ที่ได้รับการรีเซ็ตจะถูกถ่ายโอน ดังนั้นการแคช Set-actions ที่ไม่ได้ตั้งค่าใหม่ควรหลีกเลี่ยง แต่ละครั้งApplyจะถูกเรียกเฉพาะพารามิเตอร์ที่มีการเปลี่ยนแปลงเท่านั้นที่จะถูกถ่ายโอน ดังนั้นการแคชการตั้งค่าจึงไม่มีประโยชน์ คำถามทั้งหมดนี้ไม่มีข้อบกพร่องเนื่องจากไม่มีวิธีการใดวิธีหนึ่งที่กล่าวถึงผลกระทบต่อประสิทธิภาพของเกม ดังนั้นคำถามสุดท้าย: มีประโยชน์หรือไม่หากใช้การแคชของชุดการดำเนินการเช่น: private Matrix _world; public Matrix World { get{ return _world; } set { if (value == world) return; _effect.Parameters["xWorld"].SetValue(value); _world = value; } } ขอบคุณในความคาดหมาย
13 xna  directx  effect 

3
การเดินแบบสุ่มแบบเอนเอียงและอนุรักษ์นิยม
ฉันมีเทพดาซึ่งมีVelocityและทั้งเก็บไว้เป็นPosition Vector2ในแต่ละUpdateรอบความเร็วจะถูกเพิ่มเข้าไปในตำแหน่ง ฉันอยากให้สไปรต์เวกเตอร์ตัวที่สาม, Target. อาจมีการกำหนดเป้าหมายใหม่ในการวนซ้ำใด ๆ ฉันต้องการให้ผีสไปรต์เคลื่อนไหวเป็นหลักในรูปแบบการเดินแบบสุ่ม แต่ต้องมีพารามิเตอร์สองพารามิเตอร์ดังนี้: การเดินสุ่มโดยทั่วไปมีแนวโน้มที่จะเพิ่มหรือลดระยะทางให้เท่ากันTarget(บวกกับโอกาสเล็กน้อยของการเคลื่อนไหวแบบสัมผัส) ฉันต้องสามารถอคติการเดินแบบสุ่มของฉันในขณะที่ยังคงสุ่มทิศทางที่สไปรต์ "ตัดสินใจ" ควรมีแนวโน้มที่จะนำมันเข้ามาใกล้Targetยิ่งขึ้น การเดินแบบสุ่มควร "ราบรื่น" - สไปรต์ไม่ควรเปลี่ยนทิศทางอย่างรวดเร็วเนื่องจากจะดูเหมือนว่า "ริบหรี่" หรือ "สั่น" กับผู้เล่น มันควรค่อย ๆ เปลี่ยนทิศทางด้วยวิธีนี้หรืออย่างนั้นเคลื่อนแบบสุ่มในขณะที่เข้าใกล้อย่างช้า ๆ เมื่อเฉลี่ย อะไรคือวิธีที่ดีและเรียบง่ายในการทำสิ่งนี้? ถ้าเป็นไปได้ให้คำตอบเป็นVector2 RandomWalk(Vector2 target)วิธี ฉันมีNextGaussian(mean, stdev)วิธีที่ใช้ได้อยู่แล้วหากเป็นประโยชน์

7
ฉันจะใช้การหยิบไพ่แบบหกเหลี่ยมใน XNA ได้อย่างไร
ฉันมีแผนที่เรียงต่อหกเหลี่ยมซึ่งฉันต้องตรวจสอบเมื่อมีการคลิกรูปหกเหลี่ยม รูปหกเหลี่ยมไม่ได้สัมผัสจริง ๆ แต่มีช่องว่างเล็กน้อยระหว่างแต่ละจุด ไม่มีใครรู้ว่าฉันจะไปเกี่ยวกับการตรวจสอบว่ามีการคลิกหกเหลี่ยมโดยไม่ซับซ้อนเกินสิ่งทั้งหมดหรือไม่
13 c#  xna  hexagonal-grid 

4
ฉันจะนำแสง voxel มาใช้กับการบดเคี้ยวในเกมสไตล์ Minecraft ได้อย่างไร
ฉันใช้ C # และ XNA อัลกอริทึมปัจจุบันของฉันสำหรับให้แสงสว่างเป็นวิธีเรียกซ้ำ อย่างไรก็ตามมันมีราคาแพงจนถึงจุดที่ก้อน 8x128x8 หนึ่งก้อนคำนวณทุก 5 วินาที มีวิธีการให้แสงแบบอื่นที่จะทำให้เกิดเงาแบบแปรผันได้หรือไม่? หรือวิธีการเวียนเกิดเป็นวิธีที่ดีและบางทีฉันอาจทำผิด ดูเหมือนว่าสิ่งที่เกิดขึ้นซ้ำ ๆ นั้นมีราคาแพง (ถูกบังคับให้ผ่านบล็อกประมาณ 25k ต่อก้อน) ฉันกำลังคิดเกี่ยวกับการใช้วิธีการคล้ายกับการติดตามรังสี แต่ฉันไม่รู้ว่ามันจะทำงานอย่างไร อีกสิ่งหนึ่งที่ฉันพยายามคือการจัดเก็บแหล่งกำเนิดแสงในรายการและสำหรับแต่ละบล็อกจะได้ระยะห่างจากแหล่งกำเนิดแสงแต่ละจุดและการใช้แสงนั้นไปยังระดับที่ถูกต้อง แต่แสงจะผ่านกำแพง รหัสการเรียกซ้ำปัจจุบันของฉันอยู่ด้านล่าง สิ่งนี้ถูกเรียกจากที่ใด ๆ ในก้อนที่ไม่มีระดับแสงเป็นศูนย์หลังจากการล้างและเพิ่มแสงแดดและคบไฟใหม่ world.get___atเป็นฟังก์ชั่นที่สามารถรับบล็อกด้านนอกของก้อนนี้ (นี่คือภายในชั้นเรียนชิ้น) Locationเป็นโครงสร้างของตัวเองที่คล้ายกับ a Vector3แต่ใช้จำนวนเต็มแทนค่าทศนิยม light[,,]เป็น lightmap สำหรับชิ้นข้อมูล private void recursiveLight(int x, int y, int z, byte lightLevel) { Location loc = new …

1
รับตำแหน่งของจุดบนเส้นรอบวงของวงกลมให้มุม?
ฉันต้องการทราบวิธีการรับจุดเฉพาะในเส้นรอบวงของวงกลมให้มุม เส้นผ่าศูนย์กลางของวงกลมคือ 1 { X: 0.5, Y: 0.5 }และจุดศูนย์กลางของวงกลมคือ
13 xna  c#  mathematics 

3
ฉันจะได้รับข้อความเล็ก ๆ ที่สวยงามใน XNA โดยไม่ต้องใช้ห้องสมุดภายนอกได้อย่างไร
ใน XNA เทคโนโลยี spritefont นั้นน่ากลัว Nuclex ทำงานได้ดีขึ้นมาก แต่ฉันไม่ต้องการให้มีการอ้างอิงภายนอกและฉันเกือบจะทำกับเกมของฉัน เมื่อใช้แบบอักษรเช่น Sansation หรือ Quicksand มันดูแย่มากในแบบอักษรขนาดเล็ก มันเลวร้าย! มีวิธีแก้ไขเฉพาะหน้าสำหรับสิ่งนี้หรือไม่? ฉันพยายามตั้งค่าฟอนต์ให้สูงมากแล้วลดขนาดลงในสไปรต์แบตช์โดยไม่มีโชค
13 xna  fonts 

3
ทำไม XNA ไม่ถือเป็นเอ็นจิ้นเกม
ฉันแค่สงสัยว่า XNA หายไปอะไรเพื่อที่จะถูกพิจารณาเป็นเอ็นจิ้นเกม มันทำทุกสิ่งที่เอ็นจิ้นเกมควรทำ (ยกเว้นส่วนของฟิสิกส์) มันยังมีการสนับสนุนด้านที่กำหนดไว้ในบทความวิกิพีเดียในทุกเครื่องเกม ทำไม XNA ไม่ถือเป็นเอ็นจิ้นเกม
13 xna 

6
วิธีจัดการกับอินพุตของเมาส์ใน XNA
ฉันกำลังพัฒนาการ์ดเกมใน XNA มีOnClickเหตุการณ์ใดใน XNA สำหรับวัตถุหรือไม่ ฉันพยายามที่จะทำให้ไพ่เคลื่อนที่เมื่อผู้เล่นคลิกที่ไพ่ ในโครงการนี้มีคลาส Sprite ที่วาดการ์ด แต่ฉันติดอยู่เล็กน้อยเพราะฉันไม่รู้วิธีใช้OnClickเหตุการณ์หรืออะไรทำนองนั้น
13 xna  c#  input  mouse 

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

2
การเล่นเพลงทำให้ WP7 ขัดข้องทางโทรศัพท์ แต่ไม่ใช่ในอีมูเลเตอร์
ฉันพยายามใช้เพลงเป็นเกมที่เริ่มเล่นและวนซ้ำอย่างต่อเนื่องบน Windows Phone 7 ผ่าน XNA 4.0 บนอีมูเลเตอร์สิ่งนี้ใช้ได้ดี แต่เมื่อนำไปใช้กับโทรศัพท์มันจะให้หน้าจอสีดำก่อนกลับไปที่หน้าจอหลัก นี่คือรหัสโกงในคำถามและการแสดงความคิดเห็นรหัสนี้ทำให้แอปทำงานได้ดีบนโทรศัพท์: // in the constructor fields private Song song; // in the LoadContent() method song = Content.Load<Song>("song"); // in the Update() method if (MediaPlayer.GameHasControl && MediaPlayer.State != MediaState.Playing) { MediaPlayer.Play(song); } ไฟล์เพลงนั้นมีความยาว 2:53, 2.28mb .wma ที่ 106kbps บิตเรต อีกครั้งนี้ทำงานได้อย่างสมบูรณ์แบบบนโปรแกรมจำลอง แต่ไม่ทำงานเลยบนโทรศัพท์ ขอบคุณสำหรับความช่วยเหลือใด …

1
กำลังกำจัดทรัพยากรบางอย่างใน XNA หรือไม่
ContentManager ใน XNA 4.0 มีวิธีการ Unload () วิธีเดียวที่ยกเลิกการโหลดสินทรัพย์ทั้งหมด ฉันต้องการมีสินทรัพย์ "ทั่วโลก" ที่โหลดอยู่เสมอ แต่จากนั้นฉันต้องการสินทรัพย์ต่อระดับที่ควรเลิกโหลดเมื่อระดับมีการเปลี่ยนแปลง ฉันควรสร้างอินสแตนซ์ที่สองของ ContentManager เป็นส่วนหนึ่งของ Level.cs Class หรือไม่ หรือฉันควรใช้ Game.Content จากนั้นโทร. จัดการกับทรัพย์สินที่ฉันโหลด? หรือฉันควรสร้าง ContentManager ของตัวเองที่ด้านบนของฟังก์ชั่น ReadAsset ตามที่อธิบายไว้ที่นี่ ?
13 xna  xna-4.0 

1
หน่วยทดสอบโครงการเกม C # / XNA
ฉันมีความสามารถในการพัฒนาเกมตั้งแต่เริ่มเขียนโปรแกรม แต่ไม่เคยจริงจัง ฉันทำงานในฐานะนักพัฒนาแอปทางธุรกิจ แต่ฉันทำงานกับบางเกมในเวลาว่าง ในโลกธุรกิจ (บน Microsft web-dev stack) ASP.NET MVC กำลังเป็นที่นิยมอย่างมากเนื่องจากความง่ายในการทดสอบหน่วยวิธีการทำงานของอินเตอร์เฟส ฉันสงสัยว่ารูปแบบการออกแบบใด (MVC, MVP, MVVM และอื่น ๆ ) ที่สามารถใช้เขียนเกมที่ตรรกะของเกมทั้งหมดสามารถทดสอบได้อย่างง่ายดาย เป็นไปได้หรือเป็นไปได้? ฉันเสียเวลาของฉันดีกว่าไหมในการสร้างแบบเต็มและเรียกใช้การทดสอบชนิด "รวม" แทนการทดสอบหน่วย? โค้ดตัวอย่างจะดีมาก แต่การเขียนก็มีประโยชน์เช่นกัน (ฉันพยายามเพิ่มแท็กการทดสอบหน่วย แต่ไม่จำเป็นต้องมีตัวแทน ... )

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