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

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

3
ทำไม Farseer 2.x จัดเก็บขมับเป็นสมาชิกและไม่อยู่ในสแต็ก (.สุทธิ)
UPDATE: คำถามนี้หมายถึง Farseer 2.x 3.x ที่ใหม่กว่าดูเหมือนจะไม่ทำเช่นนี้ ฉันใช้ Farseer Physics Engine อย่างกว้างขวางในขณะนี้และฉันสังเกตเห็นว่าดูเหมือนว่าจะเก็บค่าชั่วคราวจำนวนมากในฐานะสมาชิกของคลาสและไม่ได้อยู่ในสแต็กอย่างที่คาดไว้ นี่คือตัวอย่างจากBodyชั้นเรียน: private Vector2 _worldPositionTemp = Vector2.Zero; private Matrix _bodyMatrixTemp = Matrix.Identity; private Matrix _rotationMatrixTemp = Matrix.Identity; private Matrix _translationMatrixTemp = Matrix.Identity; public void GetBodyMatrix(out Matrix bodyMatrix) { Matrix.CreateTranslation(position.X, position.Y, 0, out _translationMatrixTemp); Matrix.CreateRotationZ(rotation, out _rotationMatrixTemp); Matrix.Multiply(ref _rotationMatrixTemp, ref _translationMatrixTemp, …

2
Voxel Face Crawling (การลดความซับซ้อนของตาข่ายอาจใช้ความโลภ)
แก้ไข: นี่เป็นเพียงประสบการณ์การเรียนรู้ของฉันเองมันไม่ใช่เหตุผลด้านประสิทธิภาพที่ฉันถามคำถามนี้ นี่เป็นเรื่องเกี่ยวกับเครื่องยนต์ภูมิประเทศที่เหมือน Minecraft ฉันจัดเก็บบล็อกเป็นกลุ่ม (16x256x16 บล็อกเป็นกลุ่ม) เมื่อฉันสร้างชิ้นฉันใช้เทคนิคหลายขั้นตอนเพื่อตั้งค่าภูมิประเทศและวางวัตถุ ในขณะที่สร้างฉันจะเก็บ 1D array หนึ่งสำหรับ chunk แบบเต็ม (solid หรือไม่) และ 1D array ของ solid solid blocks หลังจากรุ่นฉันทำซ้ำผ่านบล็อกทึบตรวจสอบเพื่อนบ้านของพวกเขาดังนั้นฉันสร้างใบหน้าบล็อกที่ไม่มีเพื่อนบ้านทึบเท่านั้น ฉันเก็บใบหน้าที่จะสร้างในรายการของตัวเอง (นั่นคือ 6 รายการหนึ่งใบหน้าต่อใบหน้าปกติ / ที่เป็นไปได้) เมื่อเรนเดอร์ชิ้นผมแสดงรายการทั้งหมดในอันปัจจุบันของกล้องและเฉพาะรายการที่หันกล้องในกลุ่มอื่น ๆ ทั้งหมด ฉันทำสิ่งนี้โดยการเก็บรายการทั้ง 6 รายการไว้ในบัฟเฟอร์เดียวจากนั้นฉันก็เปลี่ยนช่วงที่ฉันวาด การใช้ 2D Atlas กับนี้เคล็ดลับเล็ก ๆ น้อย ๆ Shader แอนดรูรัสเซลปัญหาผมต้องการที่จะผสานใบหน้าที่คล้ายกันอย่างสมบูรณ์ นั่นคือถ้าพวกเขาอยู่ในรายการเดียวกัน (ปกติเหมือนกัน) อยู่ติดกันมีระดับแสงเท่ากัน ฯลฯ ฉันรู้ว่าฉันจะจบด้วยรูปสี่เหลี่ยม …

2
รับรายละเอียดการชนจาก Rectangle.Intersects ()
ฉันมีเกมฝ่าวงล้อมที่บางจุดฉันตรวจพบการชนกันระหว่างลูกบอลและไม้พายด้วยสิ่งนี้: // Ball class rectangle.Intersects(paddle.Rectangle); มีวิธีที่ฉันจะได้รับพิกัดที่แน่นอนของการปะทะกันหรือรายละเอียดใด ๆ เกี่ยวกับเรื่องนี้ด้วยการใด ๆ ในปัจจุบันXNA API? ฉันคิดถึงการคำนวณพื้นฐานบางอย่างเช่นการเปรียบเทียบพิกัดที่แน่นอนของแต่ละวัตถุในช่วงเวลาของการชน มันจะมีลักษณะเช่นนี้: // Ball class if((rectangle.X - paddle.Rectangle.X) < (paddle.Rectangle.Width / 2)) // Collision happened on the left side else // Collision happened on the right side แต่ฉันไม่แน่ใจว่านี่เป็นวิธีที่ถูกต้องที่จะทำ พวกคุณมีเคล็ดลับเกี่ยวกับเครื่องยนต์ที่ฉันอาจต้องใช้เพื่อให้บรรลุหรือไม่? หรือแม้แต่การเขียนโค้ดที่ดีโดยใช้วิธีนี้?

5
สไปรต์เรนเดอร์พร่ามัวด้วยความเร็ว
หลังจากเพิ่มความเร็วให้กับเกมของฉันฉันรู้สึกว่าพื้นผิวของฉันกระตุก ฉันคิดว่ามันเป็นแค่ดวงตาของฉันจนกระทั่งในที่สุดฉันก็จับมันเป็นภาพหน้าจอ: ด้านซ้ายเป็นสิ่งที่แสดงในเกมของฉัน ด้านขวาคือสไปรต์ดั้งเดิมวางอยู่ (นี่เป็นภาพหน้าจอจาก Photoshop, ซูมเป็น 6x) สังเกตว่าขอบเป็นนามแฝง - ดูเหมือนว่าการเรนเดอร์พิกเซลย่อยเกือบจะเหมือนกัน ในความเป็นจริงถ้าฉันไม่ได้บังคับสไปรต์ของฉัน (ซึ่งมีตำแหน่งและความเร็วเป็น ints) เพื่อวาดโดยใช้ค่าจำนวนเต็มฉันจะสาบานว่า MonoGame กำลังวาดด้วยค่าจุดลอย แต่มันไม่ใช่ อะไรเป็นสาเหตุของสิ่งเหล่านี้ที่ปรากฏพร่ามัว มันจะไม่เกิดขึ้นหากไม่ใช้ความเร็ว เพื่อความแม่นยำSpriteComponentชั้นเรียนของฉันมีVector2 Positionทุ่งนา เมื่อฉันโทรDrawฉันใช้เป็นหลักnew Vector2((int)Math.Round(this.Position.X), (int)Math.Round(this.Position.Y))สำหรับตำแหน่ง ผมมีข้อผิดพลาดก่อนที่แม้แต่วัตถุนิ่งจะพร่ามัว - นั่นเป็นเพราะผมใช้ตรงเวกเตอร์และไม่ปัดเศษค่าที่จะPosition intsถ้าฉันใช้Floor/ Ceilingแทนการปัดไปรอบ ๆ sprite / hovers (หนึ่งพิกเซลต่างกัน) และยังคงพร่ามัว

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 …

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

2
อินพุตฝั่งเซิร์ฟเวอร์
ขณะนี้ในเกมของฉันลูกค้าไม่มีอะไรนอกจากเป็น renderer เมื่อมีการเปลี่ยนแปลงสถานะอินพุตไคลเอนต์จะส่งแพ็กเก็ตไปยังเซิร์ฟเวอร์และย้ายผู้เล่นราวกับว่ากำลังประมวลผลอินพุต แต่เซิร์ฟเวอร์มีตำแหน่งสุดท้ายที่บอกตำแหน่ง วิธีนี้ใช้งานได้ดีโดยทั่วไปยกเว้นปัญหาที่สำคัญอย่างหนึ่ง: การหลุดจากขอบ โดยทั่วไปหากผู้เล่นเดินไปที่ขอบพูดหน้าผาและหยุดทันทีก่อนที่จะออกจากขอบบางครั้งในวินาทีต่อมาเขาจะหายตัวไปจากขอบ นี่เป็นเพราะแพ็คเก็ต "ฉันหยุดกด W" ถูกส่งหลังจากเซิร์ฟเวอร์ประมวลผลข้อมูล นี่คือแผนภาพความล่าช้าเพื่อช่วยให้คุณเข้าใจสิ่งที่ฉันหมายถึง: http://i.imgur.com/Prr8K.png ฉันสามารถส่งแพ็กเก็ต "W Pressed" แต่ละเฟรมเพื่อให้เซิร์ฟเวอร์ประมวลผล แต่ดูเหมือนว่าจะเป็นวิธีแก้ปัญหาแบนด์วิดท์ที่มีราคาแพง ความช่วยเหลือใด ๆ ที่ชื่นชม!

1
Xbox thumbstick ที่ใช้ในการหมุนสไปรต์สูตรพื้นฐานทำให้มัน“ ติด” หรือรู้สึก“ เหนียว” ที่ระยะ 90 องศา! คุณจะหมุนอย่างราบรื่นได้อย่างไร?
ฉันใช้สูตรพื้นฐานมากในการคำนวณมุมของเทพดา (ยานอวกาศ) ที่ควรจะหันหน้าไปทางบนพื้นฐานของ thumbstick Xbox คอนโทรลเลอร์เช่นคุณใช้ thumbstick เพื่อหมุนเรือ ในวิธีการอัพเดทหลักของฉัน: shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y); ในวิธีการวาดหลักของฉัน: spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1); อย่างที่คุณเห็นมันค่อนข้างเรียบง่ายฉันเอาเรเดียนปัจจุบันจากนิ้วหัวแม่มือและเก็บมันไว้ในทุ่นshuttleAngleแล้วใช้นี่เป็นอาร์กิวเมนต์มุมการหมุน (เป็นเรเดียน) สำหรับวาดรูปกระสวย ด้วยเหตุผลบางอย่างเมื่อฉันหมุน sprint มันให้ความรู้สึกเหนียวที่มุม 0, 90, 180 และ 270 องศา มันต้องการที่จะตั้งถิ่นฐานที่มุมเหล่านั้น มันไม่ให้การหมุนที่ราบรื่นและเป็นธรรมชาติเหมือนกับที่ฉันรู้สึกในเกมที่ใช้กลไกที่คล้ายคลึงกัน PS: ตัวควบคุม Xbox ของฉันไม่เป็นไร!
9 xna  c#  sprites  rotation  gamepad 

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

4
การเรนเดอร์พิกเซลที่สมบูรณ์แบบสำหรับชุดเรนเดอร์เป้าหมายด้วย Quad เต็มหน้าจอ
ฉันมีปัญหาบางอย่างในการแสดงผลกลุ่มของค่าที่แสดงผลเป้าหมาย ค่าไม่เคยจบลงในช่วงที่ฉันต้องการ โดยพื้นฐานแล้วฉันใช้รูปสี่เหลี่ยมเต็มหน้าจอและพิกเซลเชดเดอร์เพื่อแสดงผลพื้นผิวเป้าหมายของชุดเรนเดอร์ของฉันจากนั้นตั้งใจจะใช้พิกัดพื้นผิวเป็นพื้นฐานสำหรับการคำนวณบางอย่างในเดอร์ พิกัดพื้นผิวของช่วงควอดจาก (0,0) ที่มุมบนซ้ายถึง (1,1) ที่มุมล่างขวา ... ปัญหาคือหลังจากการแก้ไขค่าเหล่านี้จะไม่มาถึงที่ส่วนพิกเซลเช่น . ตัวอย่าง: ฉันแสดงผลเป็นพื้นผิว 4x4 และตัวแบ่งส่วนในกรณีนี้เพียงแค่แสดงพิกัดพื้นผิว (u, v) ในช่องสีแดงและสีเขียว: return float4(texCoord.rg, 0, 1); สิ่งที่ฉันต้องการออกจากมันคือพื้นผิวที่พิกเซลที่ด้านซ้ายบนคือ RGB (0,0,0) และทำให้เป็นสีดำพิกเซลที่ด้านบนขวาคือ RGB (255,0,0) และสว่าง สีแดงและพิกเซลที่ด้านล่างซ้ายคือ RGB (0,255,0) - สีเขียวสดใส อย่างไรก็ตามฉันได้รับที่นี่แทน (การเรนเดอร์รูปสี่เหลี่ยมตรงไม่มีการแก้ไข) พิกเซลด้านบนซ้ายเป็นสีดำ แต่ฉันได้สีแดงเข้มและเขียวเข้มที่มุมอื่น ๆ เท่านั้น ค่า RGB ของพวกเขาคือ (191,0,0) และ (0,191,0) ฉันสงสัยอย่างยิ่งว่ามันเกี่ยวข้องกับตำแหน่งการสุ่มตัวอย่างของรูปสี่เหลี่ยม: พิกเซลด้านบนซ้ายอย่างถูกต้องสุ่มตัวอย่างที่มุมบนซ้ายของรูปสี่เหลี่ยมและได้รับ (0,0) เป็นพิกัด …

4
การใช้ XNA ContentPipeline เพื่อส่งออกไฟล์ในเครื่องที่ไม่มี XNA GS แบบเต็ม
เกมของฉันใช้ Content Pipeline เพื่อโหลด spriteSheet ตอนรันไทม์ ศิลปินของเกมส่ง spritesheet ที่ดัดแปลงแล้วมาให้ฉันและฉันจะสร้างในเครื่องของฉันและส่งโครงการที่อัปเดตให้เขา ดังนั้นฉันกำลังมองหาวิธีสร้างไฟล์ xnb ในเครื่องของเขา (นี่คือเอาต์พุตของไพพ์ไลน์เนื้อหา) โดยที่เขาไม่ต้องติดตั้งสตูดิโอ XNA Game แบบเต็ม 1) ฉันไม่ต้องการให้ศิลปินของฉันติดตั้ง VS + Xna (ฉันรู้ว่ามีรุ่นฟรีของ VS แต่จะไม่ขยายขนาดเมื่อเราเพิ่มผู้คนในทีมมากขึ้น) 2) ฉันไม่สนใจที่จะใช้เครื่องมือแก้ไข / แก้ไขนี้ใน Xbox เพื่อให้โซลูชัน Windows ใช้งานได้เท่านั้น 3) ฉันรู้ตัวเลือก MSBuild แต่พวกเขาต้องการ XNA แบบเต็ม ฉันค้นคว้าบล็อกของ Shawn และพบตัวเลือกในการใช้ Msbuild Sampleหรือตัวเลือกใหม่ใน XNA 4.0 ที่ดูมีแนวโน้มที่นี่แต่ดูเหมือนว่าจะมีข้อ จำกัด เหมือนกัน: จำเป็นต้องติดตั้ง …

2
ฟังก์ชั่นสำหรับการเคลื่อนไหวของดวงอาทิตย์?
ดังนั้นเมื่อสไปรต์ดวงอาทิตย์ถูกวางที่ขอบฟ้า (x = 0, y = worldheight / 2) ฉันพยายามคิดฟังก์ชั่นเพื่อทำให้ดวงอาทิตย์ขึ้นแล้วตก วิธีที่ดีที่สุดในการทำเช่นนี้คือฟังก์ชั่นบาป แต่ฉันไม่รู้ว่าจะใช้มันอย่างไร หากใช้ y = sin (x) ดังนั้น x จะต้องอยู่ในช่วงระหว่าง 0 ถึง pi สำหรับเส้นโค้งเต็มขณะที่มีความเร็วคงที่สำหรับ X ความคิดหรือข้อเสนอแนะ? แก้ไข: ขอบคุณครับ!

3
การตรวจจับการชนกันของกระเบื้องที่มีประสิทธิภาพสำหรับสี่เหลี่ยมจำนวนมากหรือไม่
ขณะนี้ฉันกำลังทำเกมตามแบบตัวเอง (คิดว่า Terraria แต่แปลกน้อยกว่านี้ (ฉันคิดว่านั่นเป็นคำหรือไม่ขออภัยถ้าไม่ใช่) อย่างไรก็ตามตอนนี้ฉันมีระบบตรวจจับการชนกันของข้อมูลทำงานได้ดี มีบางสิ่งที่น่ายินดีเป็นอย่างยิ่งที่ได้เห็นผีสางไม่วิ่งผ่านบล็อก แต่แล้วฉันก็มีความคิดที่จะสร้างมาตรฐาน ความคิดที่ไม่ดี 1,000 สี่เหลี่ยมไม่มีปัญหา 10,000 สแควร์สำหรับ 3 ตัวอักษรเป็นความล่าช้า 100,000 squares (แผนที่ใหญ่มาก) สำหรับ 3 ตัวละครนั้นเล่นไม่ได้ ฉันมีปัญหาที่ฉันไม่ต้องการพิจารณาบล็อกที่อยู่ไกลจากผู้เล่นตัวละครไอเท็ม ฯลฯ แต่ฉันไม่ต้องการโหลดหน่วยความจำที่เหลืออยู่เหล่านั้นอย่างต่อเนื่อง นี่คืออัลกอริทึมของฉันจนถึงตอนนี้อย่าลังเลที่จะวิจารณ์ foreach (Block in level) { if (distance from block to player > a specified amount) ignore this block; else { get the intersection depth between …

2
ข้อดีและข้อเสียของ Lua vs. Python เป็นภาษาสคริปต์สำหรับแพลตฟอร์ม XNA / C # คืออะไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันกำลังคิดจะไปให้เป็นหนึ่งในความคิดโบราณของฉันสำหรับเกม จุดสำคัญของเกมนี้จะเป็นระดับที่เป็นไปได้ของการปรับแต่งการทำงานของสภาพแวดล้อมของเกมและวัตถุ (เช่นการปรับเปลี่ยนพฤติกรรมของอาวุธยานอวกาศ) สำหรับเกมนี้จะต้องมีสคริปต์ นอกจากนี้ฉันไม่ได้มุ่งหวังที่จะขายมันเป็นเพียงความท้าทายการเขียนโปรแกรมที่น่าสนใจสำหรับฉัน ในขณะที่ฉันส่วนใหญ่เป็น. NET ผู้ชายฉันจะใช้ XNA / C # สำหรับเกมเอง สำหรับการเขียนสคริปต์ฉันคิดว่าจะไปกับ Python หรือ Lua ฉันเคยมีประสบการณ์กับงูหลามมาก่อนและไม่มีอะไรขัดกับภาษาเลย Lua ในทางกลับกันเกือบจะใหม่ทั้งหมดสำหรับฉันนอกเหนือจาก World of Warcraft เล็กน้อยบางส่วนยังมีการดัดแปลงเพิ่มเติมที่ฉันทำที่นี่และที่นั่นและมันก็ดูมีแนวโน้ม ดังนั้นนี่คือคำถามของฉัน: ข้อดีและข้อเสียของ Lua vs. Python เป็นภาษาสคริปต์สำหรับแพลตฟอร์ม XNA / C # คืออะไร เป็นหนึ่งในนั้นใช้งานง่ายขึ้นด้วย XNA / C #? มีหนึ่งในนั้นมีข้อดีหรือข้อเสียบางประการเมื่อใช้กับ XNA / …
9 xna  c#  scripting 

4
ฉันควรใช้เทคนิคใดเพื่ออำนวยความสะดวกในการสื่อสารระหว่าง XNA GameComponents (หรือระหว่างองค์ประกอบของเกมประเภทใดก็ได้)
ฉันเริ่มโครงการเกม 'ถูกต้อง' ครั้งแรกของฉันและฉันก็โดนบล็อกที่พยายามตัดสินใจว่าองค์ประกอบของเกมใน XNA ควรสื่อสารอย่างไร จากเหตุการณ์การเขียนโปรแกรม GUI (Java) GUI ก่อนหน้าตัวจัดการและผู้ฟังดูเหมือนจะเป็นทางไปข้างหน้า ดังนั้นฉันจึงมี Event Bus บางประเภทที่ยอมรับการลงทะเบียนกิจกรรมและคลาสที่สมัครเป็นสมาชิกของกิจกรรมเหล่านั้นพร้อมกับตัวจัดการเพื่อจัดการกับพวกเขา ตัวอย่างเช่น (pseudocode): class SpriteManager Update(){ if(player.collidesWith(enemy) // create new 'PlayerCollisionEvent' } class HUDManager onPlayerCollisionEvent(){ // Update the HUD (reduce lives etc) } อย่างไรก็ตามฉันไม่แน่ใจเกี่ยวกับการตั้งค่ารหัส (ใน C #) ที่จะต้องทำสิ่งนี้ให้สำเร็จ อะไรคือสิ่งที่คอยติดตามเหตุการณ์ (รถบัสบางประเภท) และมันมีโครงสร้างอย่างไร ดูเหมือนจะมีการกล่าวถึงมากมายเกี่ยวกับบริการเกมโดยที่คุณสามารถลงทะเบียน GameComponent ในคลาส Game.cs หลักของคุณจากนั้นดึงข้อมูลจากที่ใดก็ได้ในรหัสของคุณที่มีการอ้างอิงถึงวัตถุ 'เกม' …

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