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

C # เป็นภาษาการเขียนโปรแกรมที่มีการจัดการพิมพ์อย่างรุนแรงรวบรวมขยะที่สร้างโดย Microsoft ร่วมกับแพลตฟอร์ม. NET

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 

1
การจัดระเบียบระดับ / ห้องในโลกตามข้อความสไตล์โคลน
ฉันกำลังคิดที่จะเขียนเกมผจญภัยแบบข้อความขนาดเล็ก แต่ฉันไม่แน่ใจว่าฉันควรออกแบบโลกจากมุมมองทางเทคนิคอย่างไร ความคิดแรกของฉันคือการทำใน XML ออกแบบสิ่งต่อไปนี้ ขอโทษสำหรับกอง XML ขนาดใหญ่ แต่ฉันรู้สึกว่าสำคัญที่จะต้องอธิบายสิ่งที่ฉันทำอย่างเต็มที่ <level> <start> <!-- start in kitchen with empty inventory --> <room>Kitchen</room> <inventory></inventory> </start> <rooms> <room> <name>Kitchen</name> <description>A small kitchen that looks like it hasn't been used in a while. It has a table in the middle, and there are some cupboards. …

3
วาดอนุภาคเป็นหยดเรียบ
ฉันยังใหม่กับการพัฒนาเกม / กราฟิกและฉันเล่นกับอนุภาค (ใน 2D) ฉันต้องการวาดอนุภาคใกล้ ๆ กันเป็นหยดของเหลวหรือน้ำ ฉันไม่ต้องการวาดวงกลมใหญ่ทับซ้อนกันเพราะหยดนั้นจะไม่ราบรื่น (และใหญ่เกินไป) ฉันไม่รู้ฟิสิกส์จริง ๆ แต่ฉันคิดว่าสิ่งที่ฉันต้องการคือสิ่งที่ดูเหมือนกับแรงตึงผิว ฉันไม่พบสิ่งใดใน stackexchange หรือบน Google (บางทีฉันอาจไม่รู้คำหลักที่ถูกต้องใช่ไหม) จนถึงตอนนี้ฉันได้พบวิธีแก้ปัญหาที่เป็นไปได้สองข้อ แต่ฉันไม่สามารถหาข้อมูลที่เป็นรูปธรรมเกี่ยวกับอัลกอริทึมได้ หนึ่งในนั้นคือการคำนวณลำเรือเว้าของอนุภาคที่ฉันคิดว่าเป็นหยด ฉันสามารถคำนวณหยดได้โดยการสร้างระดับความเท่าเทียม (ในความสัมพันธ์ "ใกล้กัน") แปลกพอฉันยังไม่ได้สามารถที่จะหาใด ๆขั้นตอนวิธีการอธิบายวิธีการคำนวณเรือเว้า โพสต์จำนวนมาก (และในกลุ่มสแต็กแลกเปลี่ยน) เชื่อมโยงไปยังห้องสมุดหรือผลิตภัณฑ์เชิงพาณิชย์ที่ทำเช่นนี้ (ฉันต้องการให้ไลบรารีทำงานใน C #) แต่ไม่มีอัลกอริทึมใด ๆ วิธีนี้อาจมีปัญหากับวงกลมของอนุภาคซึ่งจะไม่ตรวจจับพื้นที่ว่างตรงกลาง ในขณะที่วิจัยลำเรือเว้าฉันพบสิ่งที่เรียกว่ารูปร่างอัลฟ่า ซึ่งดูเหมือนจะเป็นสิ่งที่ฉันต้องการจะทำ แต่เช่นเดียวกับลำเรือเว้าฉันไม่พบแหล่งที่มาเพื่ออธิบายวิธีการใช้งานจริง ฉันพบเอกสารการนำเสนอบางอย่าง แต่ไม่เพียงพอที่จะดำเนินการต่อไป มันเป็นความลับที่ทุกคนรู้ดียกเว้นฉัน: - / หลังจากคำนวณฮัลล์เว้าหรือรูปร่างอัลฟาฉันต้องการที่จะทำให้มันเป็นเส้นโค้งเบซิเยร์ที่จะทำให้มันราบรื่นและดี แม้ว่าฉันจะพบว่าวิธีการของฉันซับซ้อนไปหน่อยฉันอาจจะพยายามแก้ไขสิ่งนี้ในทางที่ผิด? หากคุณสามารถแนะนำวิธีแก้ไขปัญหาอื่น ๆ ของฉันหรืออธิบายสิ่งที่ฉันขาดหายไปฉันจะมีความสุขและขอบคุณมาก :-) ขอบคุณ

2
ฉันจะสร้างคอลเลกชันของมินิเกมใน XNA ได้อย่างไรซึ่งผู้ใช้สามารถดาวน์โหลดชุดของมินิเกมและ. exe หลักสามารถรันได้โดยไม่ต้องมีการแก้ไข
ฉันกำลังสร้างเกมพีซีใน XNA จริงๆแล้วมันเป็นชุดของมินิเกม (มี 3 มินิเกมในขณะนี้) อย่างไรก็ตามฉันวางแผนที่จะสร้างและเพิ่มมากขึ้นใน 'แพ็ค' ที่สามารถดาวน์โหลดได้ คำถามของฉันคืออะไรวิธีที่ดีที่สุดเพื่อให้บรรลุนี้ ขณะนี้ความคิดของฉันคือ: สร้างอินเทอร์เฟซ 'เกม' สร้างเกมไปยังส่วนต่อประสานนี้ แต่สร้างเป็น. dll ให้ไฟล์. exe หลักสแกนไดเรกทอรีและโหลดใน. dll ที่รันไทม์ ฉันไม่ได้ยุ่งกับความคิดมาก แต่ฉันรู้ว่ามีแอปพลิเคชันอย่างน้อยที่ใช้วิธีการปลั๊กอินนี้ (Notepad ++ ดูเหมือนว่า) แต่ฉันไม่แน่ใจว่าเกมใดที่ทำ (แม้ว่าฉันจะแน่ใจ ต้องมีอยู่) อย่างไรก็ตามดูเหมือนว่านี่เป็นปัญหาที่ได้รับการแก้ไขก่อนหน้านี้ดังนั้นฉันสงสัยว่ามีรูปแบบใดของการปฏิบัติที่ดีที่สุด
12 xna  c# 

2
ทำไม Unity ใช้ภาพสะท้อนเพื่อรับวิธีการอัพเดต
ทำไมสามัคคีสะท้อนการใช้เพื่อการเข้าถึงMonoBehaviourวิธีการเช่นข้อความAwake, Update, Start, ... ? การใช้ภาพสะท้อนจะไม่ช้าหรือไม่ ทำไมไม่ได้ใช้ประโยชน์จากวิธีการอื่น ๆ เช่นTemplate Method? มันสามารถนิยามเมธอดเป็นนามธรรมในMonoBehaviourคลาสฐานและบังคับให้คลาสย่อยนำไปใช้
12 unity  c#  performance 

1
การสร้างระบบรายการที่แข็งแกร่ง
จุดประสงค์ของฉันคือการสร้างระบบไอเท็มแบบโมดูลาร์ / แบบทั่วไปที่สามารถจัดการสิ่งต่าง ๆ เช่น: รายการที่อัปเกรดได้ (+6 Katana) ตัวดัดแปลงทางสถิติ (ความชำนาญ +15) ตัวดัดแปลงไอเท็ม (โอกาส X% ที่จะทำความเสียหาย Y, โอกาสที่จะถูกแช่แข็ง) รายการที่ชาร์จใหม่ได้ (พนักงาน Magic กับประเพณี 30) Set Items (ติดตั้ง X 4 ชุดเพื่อเปิดใช้งานคุณสมบัติ Y) หายาก (ทั่วไป, ไม่ซ้ำใคร, ตำนาน) ทำให้ไม่ลงรอยกัน (แบ่งเป็นวัสดุหัตถกรรมบางอย่าง) Craftable (สามารถสร้างขึ้นด้วยวัสดุบางอย่าง) ใช้งานได้ (5 นาที% พลังโจมตี X, รักษา +15 hp) * ฉันสามารถแก้ไขคุณสมบัติที่เป็นตัวหนาในการตั้งค่าต่อไปนี้ ตอนนี้ฉันพยายามเพิ่มตัวเลือกมากมายเพื่อสะท้อนสิ่งที่ฉันมีในใจ ฉันไม่ได้วางแผนที่จะเพิ่มคุณสมบัติเหล่านี้ทั้งหมดที่จำเป็น แต่ฉันต้องการที่จะสามารถใช้งานได้ตามที่เห็นสมควร …

5
จะจัดการกับการชนในเกมที่มีส่วนประกอบได้อย่างไร
พยายามพาดหัวของฉันในการจัดการกับการชนในเกมที่ออกแบบมาสำหรับส่วนประกอบต่างๆ ฉันเห็นตัวอย่างมากมายที่มีการเรียงลำดับบางอย่างPhysicsComponentที่เพิ่มเข้าในรายการส่วนประกอบของเอนทิตี แต่การใช้งานจริงทำให้ฉันสับสน เพื่อให้สามารถใช้งานได้PhysicsComponentต้องมีการเข้าถึงโลกรอบตัว สิ่งนี้ไม่สมเหตุสมผลกับฉัน ส่วนประกอบไม่ควรไม่รู้ว่าเป็นเพียงแค่คอนเทนเนอร์ (เอนทิตี) แต่เป็นคอนเทนเนอร์ของคอนเทนเนอร์ (โลก)? สำหรับฉันแล้วมันดูเหมือนว่าระดับหรือฉากควรรักษารายการของเอนทิตีเหล่านี้และการอัปเดตเกมทุกครั้ง คำถามของฉันคือประการแรกไม่ว่าจะเป็นการออกแบบที่ดีหรือไม่และประการที่สองจะตัดสินได้อย่างไรว่าเอนทิตีใดสามารถชนกันได้ ฉันสมมติว่าเอนทิตีแข็งสามารถใช้อินเทอร์เฟซ IRigidBody ว่างเพื่อให้ระดับสามารถกำหนดเอนทิตีที่อยู่ในรายการสนับสนุนการชนกัน แต่นี่เป็นการทำลายการออกแบบส่วนประกอบหรือไม่? แต่ควรมีส่วนประกอบ RigidBody ที่ว่างเปล่าแทนหรือไม่ นี่อาจจะดีกว่าเพราะมันอาจไม่ว่างเสมอไปและวิธีนี้เป็นวิธีที่พิสูจน์ได้ในอนาคต ปัญหาเดียวของเรื่องนี้ก็คือความซับซ้อน ฉากจะต้องวนซ้ำไม่เพียง แต่ทุกเอนทิตีเท่านั้น แต่ยังรวมถึงองค์ประกอบของเอนทิตีทุกอันเพื่อพิจารณาว่ามีส่วนประกอบ RigidBody นี้หรือไม่ ประการที่สามเมื่อพวกเขาชนกันทั้งสองหน่วยงานควรได้รับแจ้งอย่างใดและฉันไม่แน่ใจว่าจะทำสิ่งนี้ได้อย่างไร สมมติว่าทั้งสองเอนทิตีมี HealthComponent และเมื่อพวกเขาชนทั้งสุขภาพของพวกเขาจะลดลงตามมูลค่าโดยพลการ 5. ฉันคิดว่ามันเป็นความรับผิดชอบของฉากที่จะจัดการเรื่องนี้เมื่อตรวจพบการชนกันระหว่างสองเอนทิตี้? แต่ฉากนั้นรับผิดชอบมากเกินไปหรือไม่? ฉันเห็นว่าสิ่งนี้อาจหลุดพ้นจากมือและไม่สะดวกสบายเมื่อฉากรับผิดชอบหลาย ๆ สิ่งที่เอนทิตีไม่ควรเข้าถึง (?) แก้ไข:คำถามได้รับการอัปเดตพร้อมรายละเอียดเพิ่มเติม

3
ฉันต้องการกำจัดรูปแบบการออกแบบที่ทำให้ทุกอย่างคงที่และเป็นสากล แต่อย่างไร
ฉันทำดันเจี้ยนเล็ก ๆ น้อย ๆ ในอวกาศและฉันอยากจะฟังคำแนะนำบางอย่างเกี่ยวกับวิธีสร้างแบ็กเอนด์ของเครื่องยนต์ที่ดีกว่า โดยทั่วไปปัจจุบันทุกอย่างขึ้นอยู่กับ crapload ของผู้จัดการ: BackgroundManager: มีAddBackground(image, parallax)วิธีในการสร้างเอฟเฟกต์ฉากหลังที่ยอดเยี่ยม ConfigManager: อ่าน / สร้างไฟล์ config และเก็บข้อมูลที่อ่านจากไฟล์ config นั้น DrawManager: มีDraw(sprite)วิธีการวาดสิ่งที่จะหน้าจอและสิ่งที่ชอบSetView(view), GetView()ฯลฯ EntityManager: เก็บเอนทิตีที่ใช้งานอยู่ทั้งหมดและมีวิธีการเพิ่มลบและค้นหาเอนทิตี DungeonManager (ที่จริงเรียกว่า GridManager แต่นี่คือความเรียบง่าย): มีวิธีการชอบGenerateDungeon(), PlaceEnemies(), PlaceFinish()ฯลฯ ตอนนี้ฉันยังไม่ได้บอกรายชื่อผู้จัดการทั้งหมดของฉันดังนั้นฉันคิดว่าสิ่งนี้ต้องเปลี่ยน เกมของฉันขึ้นอยู่กับหน้าจอซึ่งทำให้มันน่ารำคาญมากขึ้นเพราะฉันไม่ต้องการครึ่งหนึ่งของสิ่งที่ผู้จัดการของฉันกำลังจัดการอยู่เช่นเมนูหลัก (ฉันไม่ต้องการฟิสิกส์ / เอนทิตี / ดันเจี้ยนในเมนูหลักของฉัน !) ตอนนี้ฉันคิดเกี่ยวกับการทำให้ผู้จัดการไม่คงที่และให้ ScreenMainGame เป็นตัวอย่างของผู้จัดการเฉพาะเกมทั้งหมด แต่นั่นทำให้การโทร / รับอะไรก็ตามที่เกี่ยวข้องกับผู้จัดการเป็นเรื่องใหญ่ ... ตัวอย่างเช่นถ้าฉันต้องการดึงดันเจี้ยนของฉันจากสถานที่ใด ๆ ที่ไม่ได้อยู่ScreenMainGame.Draw()ฉันจะต้องทำสิ่งนี้ ... …

2
รหัสใดในสองรหัสนี้ที่ 'ดีกว่า' ทำให้ตัวแปรท้องถิ่นหรือตัวแปรคลาส?
ฉันสร้างเกมมากขึ้นและถามคำถามที่โง่กว่านี้ หวังว่าอันนี้จะสั้นมาก ฉันกำลังสร้างคลาสพื้นฐานที่เพิ่งย้ายวัตถุ Player โดยใช้กำลังกับคนที่แข็งทื่อ แต่มันทำให้ฉันสงสัยว่าฉันควรจะอ้างอิงคลาสกับ rb หรือเพียงแค่ตัวแปรท้องถิ่นในอัปเดตทุกเฟรมหรือไม่ (จำไว้ว่ามันมีอยู่แล้วใน Monobehaviour.GameObject ระดับผู้ปกครองสามัคคี) ฉันสงสัยว่าถ้าทำหลายตัวแปรในท้องถิ่นจะทำให้วงทั้งหมดช้าลง (โดยเฉพาะที่ฉันหมายถึงในฟังก์ชั่นของตัวเองไม่ใช่ในชั้นเรียน - หวังว่าฉันจะใช้คำศัพท์ที่ถูกต้อง) นี่คือสิ่งที่ฉันหมายถึงสองวิธีที่ฉันคิดทำ: public class Player : MonoBehaviour { private void FixedUpdate() { Rigidbody rb = GetComponent<Rigidbody>(); float v = Input.GetAxis("Vertical"); rb.AddForce(v * rb.transform.forward * Const.walkForce); } } หรือ... public class Player : MonoBehaviour { Rigidbody rb; …
11 unity  c#  game-loop 

2
วิธีการใส่เมาส์ล่าช้า?
ฉันมีเกมรถและแนวคิดก็คือผู้เล่นนั้นเมา ฉันต้องการอินพุตที่ล่าช้าจากเมาส์ซึ่งคุณเลื่อนเมาส์ไปทางด้านข้างเพื่อเลื่อน ฉันจะตั้งค่าการหน่วงเวลาคงที่ระหว่างอินพุตที่ผู้ใช้ให้และจำนวนเทิร์นของรถได้อย่างไร? ตอนนี้ฉันมีสิ่งนี้: h = Mathf.Lerp(h, (((Input.mousePosition.x / Screen.width) * 2) - 1), Time.deltaTime * 2); สิ่งที่เกิดขึ้นคือการเลี้ยวล่าช้า แต่ช้ามากกล่าวอีกนัยหนึ่งถ้าฉันเลื่อนเมาส์เร็วรถจะหมุนช้ามาก แต่ถ้าฉันหมุนตัวคูณเพื่อTime.deltaTimeให้รถหมุนเร็วขึ้น แต่เอฟเฟกต์ล่าช้าจะลดลง . ฉันจะทำสิ่งนี้ได้อีก
11 unity  c#  input  mouse 

2
ตรวจสอบว่าองค์ประกอบของวัตถุในเกมสามารถถูกทำลายได้หรือไม่
การพัฒนาเกมใน Unity ฉันใช้ประโยชน์อย่างมากมาย[RequireComponent(typeof(%ComponentType%))]เพื่อให้แน่ใจว่าส่วนประกอบต่างๆมีการพึ่งพาทั้งหมด ตอนนี้ฉันกำลังใช้ระบบการสอนที่เน้นวัตถุ UI ต่างๆ เพื่อทำการไฮไลต์ฉันกำลังอ้างอิงถึงGameObjectในฉากจากนั้นฉันโคลนด้วย Instantiate () จากนั้นปลดส่วนประกอบทั้งหมดที่ไม่จำเป็นสำหรับการแสดงซ้ำ ปัญหาคือว่าด้วยการใช้งานอย่างเสรีRequireComponentในองค์ประกอบเหล่านี้หลายคนไม่สามารถลบออกได้ในลำดับใด ๆ เนื่องจากมันขึ้นอยู่กับส่วนประกอบอื่น ๆ ซึ่งยังไม่ถูกลบ คำถามของฉันคือ: มีวิธีการตรวจสอบว่าComponentสามารถลบออกจากที่GameObjectแนบมากับปัจจุบันได้หรือไม่ รหัสที่ฉันโพสต์ใช้งานได้ทางเทคนิค แต่มันมีข้อผิดพลาด Unity (ไม่ติดในบล็อค try-catch ดังที่เห็นในภาพ นี่คือรหัส: public void StripFunctionality(RectTransform rt) { if (rt == null) { return; } int componentCount = rt.gameObject.GetComponents<Component>().Length; int safety = 10; int allowedComponents = 0; while (componentCount …
11 unity  c# 

2
จะรอการดำเนินการ async / coroutines ได้อย่างไร
ฉันกำลังมองหาวิธีทั่วไป / นำมาใช้ซ้ำเพื่อรอ coroutines และการดำเนินการแบบอะซิงโครนัสให้เสร็จใน Unity 5 คล้ายกับawaitคำสำคัญของ C # 5 วิธีที่ง่ายที่สุดที่ฉันนึกได้ก็คือ: public class SomeUtility { public bool IsDoingSomething { get; private set; } public IEnumerator DoSomethingAsync() { IsDoingSomething = true; yield return new WaitForSeconds(2); IsDoingSomething = false; } } และจากนั้นใน coroutine อื่น: while(!someUtilityInstance.IsDoingSomething) yield return null; อย่างไรก็ตามมันไม่ได้ดีมากเพราะมันจะตัดโค้ดที่มีwhileคำสั่งไม่สามารถใช้ซ้ำได้ (ต้องการอินสแตนซ์และคลาสเฉพาะแม้กระทั่งสำหรับฟังก์ชั่นยูทิลิตี้ง่าย ๆ …

2
A * การค้นหาเส้นทางสำหรับสิ่งกีดขวางแบบไดนามิกและผู้เล่นทำการบล็อก
สวัสดีฉันกำลังสร้าง TD ใน Unity 5 และต้องการความช่วยเหลือเกี่ยวกับ Pathfinding ของฉัน ฉันจะใช้การหาเส้นทางของ Arons A *สำหรับ AI ของฉันซึ่งทำให้ฉันสามารถใช้วัตถุแบบไดนามิกและอัปเดตเส้นทางในช่วงเวลาทำงาน อย่างไรก็ตามในเกมของฉันฉันต้องการให้ผู้เล่นสามารถบล็อกมินเนียนด้วยป้อมปราการพิเศษซึ่งจะบังคับให้มินเนี่ยนโจมตี "บล็อกทาวเวอร์" แทนการผ่านไปยังปลายทางของพวกเขา ฉันจะทำสิ่งนี้ได้อย่างไร ภาพเพื่อความชัดเจนมากขึ้น:
11 unity  c#  2d  ai  path-finding 

2
ใน Unity เหตุใดจึงเพิ่ม Vector2 และ Vector3 ที่ไม่ชัดเจน แต่การกำหนดไม่ใช่
ให้เวกเตอร์สองตัวต่อไปนี้: Vector3 v3 = Vector3.one; Vector2 v2 = Vector2.one; บรรทัดนี้ไม่ชัดเจน: v3 += v2; // Unity reports dimension ambiguity ในขณะที่การมอบหมายนี้ไม่ได้: v3 = v2; // Unity assigns despite different dimensions ทำไมนี้
11 c#  unity  2d  3d  vector 

2
การสอดแทรกระหว่างสองสถานะเครือข่าย
ฉันมีเอนทิตีจำนวนมากในฝั่งไคลเอ็นต์ที่ถูกจำลอง (ความเร็วของพวกเขาถูกเพิ่มลงในตำแหน่งของพวกเขาตามเฟรมต่อเฟรม) และฉันปล่อยให้พวกเขาตายนับเอง พวกเขาส่งการอัปเดตเกี่ยวกับที่ที่พวกเขาเห็นครั้งสุดท้ายและการเปลี่ยนแปลงความเร็วของพวกเขา มันใช้งานได้ดีและผู้เล่นคนอื่นเห็นงานนี้พบ อย่างไรก็ตามหลังจากที่ในขณะที่ผู้เล่นเหล่านี้เริ่ม desync หลังจากเวลา นี่เป็นเพราะเวลาแฝง ฉันต้องการทราบวิธีแก้ไขปัญหาระหว่างรัฐดังนั้นพวกเขาจึงอยู่ในตำแหน่งที่ถูกต้อง ฉันรู้ว่าผู้เล่นคนใดถูกมองเห็นเมื่อเร็ว ๆ นี้และความเร็วปัจจุบันของพวกเขา แต่การสอดแทรกไปยังสถานะที่เห็นล่าสุดทำให้ผู้เล่นเลื่อนไปข้างหลัง - ฉันไม่สามารถใช้ความเร็วเลยสำหรับลูกค้าคนอื่น ๆ และเพียง 'lerp' พวกเขาไปในทิศทางที่เหมาะสม แต่ฉันรู้สึกว่าสิ่งนี้จะทำให้เกิดการเคลื่อนไหวที่ขรุขระ ทางเลือกคืออะไร?

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