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

คำถามคณิตศาสตร์ที่เกี่ยวข้องกับคณิตศาสตร์เรขาคณิตแคลคูลัสสูตรและการคำนวณอื่น ๆ ที่ใช้ในการพัฒนาเกม

3
ทำไมต้องใช้ Time.deltaTime ในฟังก์ชั่น Lerping
เพื่อความเข้าใจของฉัน, ฟังก์ชั่น Lerp สอดแทรกระหว่างสองค่า ( aและb) โดยใช้ค่าที่สาม ( t) ระหว่างและ0 1ที่t = 0ค่า a ถูกส่งคืน at ที่t = 1ค่าbจะถูกส่งคืน ที่ 0.5 ค่าครึ่งทางระหว่างaและbจะถูกส่งกลับ (ภาพต่อไปนี้เป็นแบบสเต็ปสเตปซึ่งมักจะเป็นการแก้ไขแบบลูกบาศก์) ฉันได้ดูฟอรัมและคำตอบนี้ฉันพบบรรทัดของรหัสต่อไปนี้:transform.rotation = Quaternion.Slerp(transform.rotation, _lookRotation, Time.deltaTime); ฉันคิดกับตัวเองว่า "เป็นคนโง่เขาไม่มีความคิดอะไรเลย" แต่เนื่องจากมีผู้โหวตมากกว่า 40+ ครั้งฉันจึงได้ลองและแน่นอนว่ามันใช้ได้ดี! float t = Time.deltaTime; transform.rotation = Quaternion.Slerp(transform.rotation, toRotation, t); Debug.Log(t); ผมได้รับค่าสุ่มระหว่าง0.01และสำหรับ0.02 tฟังก์ชั่นไม่ควรแก้ไขตามหรือไม่ ทำไมค่าเหล่านี้สแต็ก มันเกี่ยวกับ lerp อะไรที่ฉันไม่เข้าใจ?

3
Attack vs Defense และใครคือผู้ชนะ? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันอยู่ในขั้นตอนการสร้างเกมง่ายๆใหม่ในมือถือและฉันใช้เวลาหลายวันในส่วนต่อไปนี้ เพื่อความง่ายสมมติว่าฉันมีนักสู้สองคน คุณลักษณะเฉพาะของพวกเขาคือการโจมตีและการป้องกัน เมื่อการโจมตีครั้งแรกสิ่งเดียวที่สำคัญคือการโจมตีของเขาและการป้องกันของฝ่ายตรงข้าม และในทางกลับกัน. พวกเขาไม่มีอุปกรณ์สิ่งของความแข็งแกร่งหรือสุขภาพ เพียงแค่โจมตีเทียบกับการป้องกัน ตัวอย่าง: นักสู้ 1: การโจมตี: 50, การป้องกัน: 35 นักสู้ 2: โจมตี 20 ป้องกัน: 80 กระบวนการต่อสู้จะเป็นการโจมตีเพียงครั้งเดียวซึ่งจะเป็นตัวตัดสินผู้ชนะ ดังนั้นจึงไม่มีการโจมตีหรือปัดเศษหลายครั้ง ฉันไม่ต้องการทำให้มันยาก แต่เพิ่มรุ่นที่ไม่คาดคิด นักสู้ที่มีการจู่โจมต่ำกว่าจะสามารถชนะนักสู้อีกคนที่มีการป้องกันที่ดีกว่าได้ (แต่ไม่ใช่ทุกครั้ง) ความคิดแรกของฉันคือทำให้มันเป็นเส้นตรงและเรียกเครื่องมือสร้างตัวเลขสุ่ม If Random() < att1 / (att1 + def2) { winner = fighter1 } else { winner …

2
วิธีการแยกมุมออยเลอร์จากเมทริกซ์การแปลง?
ฉันมีความเข้าใจง่าย ๆ เกี่ยวกับเอ็นจิ้นเกมเอนทิตี / องค์ประกอบ องค์ประกอบการแปลงมีวิธีการในการกำหนดตำแหน่งท้องถิ่นการหมุนในท้องถิ่นตำแหน่งทั่วโลกและการหมุนทั่วโลก หากการแปลงกำลังถูกกำหนดตำแหน่งใหม่ระดับโลกดังนั้นตำแหน่งในท้องถิ่นก็จะเปลี่ยนแปลงเช่นกันเพื่ออัปเดตตำแหน่งในกรณีเช่นนี้ฉันแค่ใช้การแปลงเมทริกซ์โลคอลปัจจุบันไปยังเมทริกซ์การแปลงของผู้ปกครอง ก่อนหน้านี้ฉันไม่มีปัญหาฉันสามารถรับเมทริกซ์การแปลงเฉพาะที่ได้ แต่ฉันกำลังดิ้นรนกับวิธีอัปเดตตำแหน่งในท้องถิ่นและค่าการหมุนในการแปลงสภาพ ทางออกเดียวที่ฉันมีในใจคือการแยกค่าการแปลและการหมุนจาก localMatrix ของการแปลง สำหรับการแปลมันค่อนข้างง่าย - ฉันแค่เอาค่าคอลัมน์ที่ 4 แต่การหมุนคืออะไร วิธีการแยกมุมออยเลอร์จากเมทริกซ์การแปลง? วิธีแก้ปัญหานั้นถูกต้องหรือไม่: เพื่อหาการหมุนรอบแกน Z เราสามารถหาความแตกต่างระหว่างเวกเตอร์แกน X ของ localTransform และเวกเตอร์แกน X ของ parent.localTransform และเก็บผลลัพธ์ในเดลต้าแล้ว: localRotation.z = atan2 (Delta.y, Delta .x); เช่นเดียวกับการหมุนรอบ X & Y เพียงแค่ต้องสลับแกน

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

1
สร้างเอฟเฟกต์คลื่นไซด์ 2 มิติจากเกม Worms
ฉันพยายามสร้างคลื่น / ผลกระทบน้ำจาก Worms ใหม่ (ดูที่นี่http://youtu.be/S6lrRqst9Z4?t=31s ) จากสิ่งที่ฉันเข้าใจว่าไม่ใช่สไปรท์จริงๆมันสร้างขึ้นโดยกระบวนการเช่นคลื่นบาป มีใครสร้างบางอย่างเช่นนี้มาก่อนหรือไม่ หรือความคิดใดที่ฉันจะไปเกี่ยวกับเรื่องนี้?

1
ทำไม OnCollisionEnter ของ Unity ถึงไม่ให้ค่ามาตรฐานกับฉันและวิธีที่เชื่อถือได้ที่สุดในการรับมันคืออะไร
Unity's on collision event ให้การชนวัตถุที่ให้ข้อมูลเกี่ยวกับการชนที่เกิดขึ้นกับคุณ (รวมถึงรายการContactPointsพร้อม hit normals) แต่สิ่งที่คุณไม่ได้รับคือพื้นผิวมาตรฐานสำหรับคอลไลเดอร์ที่คุณยิง นี่คือภาพหน้าจอเพื่ออธิบาย เส้นสีแดงจากและสายสีฟ้าจากContactPoint.normalRaycastHit.normal นี่เป็นตัวอย่างของ Unity ที่ซ่อนข้อมูลเพื่อให้ API ที่ง่ายขึ้นหรือไม่ หรือเทคนิคการตรวจจับการชนกันแบบเรียลไทม์มาตรฐาน 3 มิติไม่เพียงรวบรวมข้อมูลนี้หรือไม่ และในส่วนที่สองของคำถามอะไรคือวิธีที่แน่นอนและค่อนข้างมีประสิทธิภาพในการทำให้พื้นผิวเป็นปกติสำหรับการชน ฉันรู้ว่าการฉายรังสีให้ผิวหน้าของคุณเป็นปกติ แต่ดูเหมือนว่าฉันจำเป็นต้องทำ raycast หลายครั้งเพื่อทำสิ่งนี้ให้สำเร็จในทุกสถานการณ์ (อาจจะเป็นจุดติดต่อ / การรวมแบบปกติคิดถึงการชนในการโยนครั้งแรกหรือคุณอาจต้องเฉลี่ย บรรทัดฐานของจุดติดต่อเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด) วิธีการปัจจุบันของฉัน: สำรองข้อมูลCollision.contacts[0].pointตามปกติของมันตี Raycast ตามปกติเมื่อตะกี้สำหรับfloat.MaxValueบนCollision.collider หากล้มเหลวให้ทำซ้ำขั้นตอนที่ 1 และ 2 โดยไม่ใช้วิธีปกติ หากล้มเหลวให้ลองขั้นตอนที่ 1 ถึง 3 ด้วย Collision.contacts[1] ทำซ้ำ 4 จนสำเร็จหรือจนกว่าจะหมดคะแนนการติดต่อ Vector3.zeroให้ขึ้นผลตอบแทน นี่ดูเหมือนจะจับทุกอย่าง แต่สิ่งที่ทำให้ฉันรู้สึกไม่สบายใจและฉันไม่แน่ใจว่าจะทดสอบว่าวิธีนี้ใช้ได้ผลในกรณีที่เพียงพอ มีวิธีที่ดีกว่า? …

2
อัลกอริทึมในการยิงที่เป้าหมายในเกม 3 มิติ
สำหรับผู้ที่จำ Descent Freespace มันมีคุณสมบัติที่ดีที่จะช่วยให้คุณเล็งไปที่ศัตรูเมื่อยิงขีปนาวุธหรือเลเซอร์ที่ไม่ใช่ homing: มันแสดงเล็งด้านหน้าของเรือรบที่คุณไล่ล่าบอกว่าจะยิงเพื่อเคลื่อนที่ เป้า ฉันลองใช้คำตอบจาก/programming/4107403/ai-algorithm-to-shoot-at-a-target-in-a-target-in-a-2d-game?lq=1แต่มันเป็นแบบ 2D ดังนั้นฉันจึงลอง ปรับตัว ฉันแยกย่อยการคำนวณเพื่อแก้จุดตัดสำหรับระนาบ XoZ และบันทึกพิกัด x และ z แล้วแก้จุดตัดสำหรับระนาบ XoY และเพิ่มพิกัด y ไปยัง xyz สุดท้ายที่ฉันเปลี่ยนเป็นพื้นผิวแล้ว พิกัด. แต่แน่นอนว่ามันใช้งานไม่ได้อย่างที่ควรหรืออย่างอื่นฉันจะไม่โพสต์คำถาม จากสิ่งที่ฉันสังเกตเห็นหลังจากพบ x ในระนาบ XoZ และใน XoY the x ไม่เหมือนกันดังนั้นบางสิ่งต้องผิด float a = ENG_Math.sqr(targetVelocity.x) + ENG_Math.sqr(targetVelocity.y) - ENG_Math.sqr(projectileSpeed); float b = 2.0f * (targetVelocity.x * …
11 mathematics  ai  aiming 

3
จะย้ายวัตถุไปตามเส้นรอบวงของวัตถุอื่นได้อย่างไร?
ฉันไม่ได้คณิตศาสตร์เลยที่มันเจ็บ แต่สำหรับคุณบางคนนี่น่าจะเป็นเค้กชิ้นหนึ่ง ฉันต้องการย้ายวัตถุรอบวัตถุอื่นตามอายุหรือเส้นรอบวงของมันบนเส้นทางวงกลมที่เรียบง่าย ในขณะที่อัลกอริทึมเกมของฉันรู้วิธีเคลื่อนย้ายและวางสไปรต์ที่ขอบของสิ่งกีดขวางและตอนนี้มันรอจุดต่อไปที่จะเคลื่อนที่ขึ้นอยู่กับเงื่อนไขต่าง ๆ ดังนั้นปัญหาทางคณิตศาสตร์นี่คือวิธีการรับตำแหน่ง(aX, aY)และ( bX, bY)เมื่อฉันรู้ว่า Center (cX, cY),ตำแหน่งของวัตถุ(oX, oY)และระยะทางที่ต้องย้าย(d)
11 java  mathematics 

5
บางคนสามารถอธิบาย (เหตุผล) ความหมายของโคลัมกับแถวหลักในการคูณ / การเรียงต่อกันได้หรือไม่
ฉันพยายามที่จะเรียนรู้วิธีสร้างเมทริกซ์มุมมองและการฉายภาพและการเข้าถึงความยากลำบากในการใช้งานของฉันเนื่องจากความสับสนของฉันเกี่ยวกับสองมาตรฐานสำหรับเมทริกซ์ ฉันรู้วิธีคูณเมทริกซ์และฉันเห็นว่าการแปลงก่อนการคูณจะเปลี่ยนผลลัพธ์ทั้งหมดดังนั้นความต้องการคูณในลำดับที่แตกต่างกัน สิ่งที่ฉันไม่เข้าใจคือสิ่งที่มีความหมายโดยเฉพาะ 'notational Convention' - จากบทความที่นี่และที่นี่ผู้เขียนยืนยันว่ามันไม่ต่างกับวิธีการจัดเก็บเมทริกซ์หรือโอนไปยัง GPU แต่ในวินาที หน้าเมทริกซ์นั้นเห็นได้ชัดว่าไม่เทียบเท่ากับวิธีการวางในหน่วยความจำสำหรับแถวหลัก และถ้าฉันดูเมทริกซ์ที่มีประชากรในโปรแกรมของฉันฉันจะเห็นส่วนประกอบการแปลที่ใช้องค์ประกอบที่ 4, 8 และ 12 ระบุว่า: "โพสต์การคูณด้วยเมทริกซ์คอลัมน์หลักสร้างผลลัพธ์เช่นเดียวกับการคูณล่วงหน้าด้วยเมทริกซ์แถวหลัก" ทำไมในตัวอย่างของรหัสต่อไปนี้: Matrix4 r = t3 * t2 * t1; Matrix4 r2 = t1.Transpose() * t2.Transpose() * t3.Transpose(); Does r! = r2และเหตุใด pos3! = pos สำหรับ : Vector4 pos = wvpM * new Vector4(0f, …


4
ทำอย่างไรจึงจะทำให้วัตถุสูญเสียความเร็วได้น้อยลงเมื่อความเร็วเพิ่มขึ้น
ฉันกำลังพัฒนาเกมใน Flash และฉันต้องการความช่วยเหลือเล็กน้อย ถือได้ว่าเป็นปัญหาทางคณิตศาสตร์ วัตถุของฉันบินด้วยความเร็วXและวัตถุของฉันสามารถชนกับก้อนหินได้ เมื่อมันชนกับหินฉันต้องการวัตถุของฉันที่จะทำลายหินและดำเนินการต่อ แต่มีความเร็วน้อยกว่า ง่ายต่อการเขียนโค้ดยากและเขียนสิ่งที่ชอบ: myVelocity -= 10;แต่ปัญหาหลักของฉันคือฉันต้องการให้ความเร็วลดลงน้อยกว่าความเร็วเริ่มต้นที่สูงขึ้น ตัวอย่างเช่น: ถ้าความเร็วเป็น 300 ฉันอยากให้มันลด 10 และถ้าเป็น 200 ฉันอยากให้มันลด 20 สามารถใช้สูตรบางอย่างได้ไหม

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

1
มุมของการสะท้อน
ฉันมีเกมนี้ ฉันมีปืนใหญ่ที่กึ่งกลางบล็อกรอบปืนใหญ่และแผ่นรองรอบบล็อก นี่คือลักษณะของเกม: ฉันจัดการเพื่อให้ได้การชนกันของแต่ละพิกเซลและลูกบอลของฉัน " สะท้อน " เมื่อสัมผัสกับบล็อคด้วยคณิตศาสตร์ต่อไปนี้: Ball.Direction = 2 * (Block.Direction - Ball.Direction) + 180; โดยที่เส้นสีฟ้าคือทิศทางของลูกบอลและเส้นสีดำ (เส้นฐาน) คือพื้นผิวบล็อก Directionเป็นมุมที่แสดงเป็นเรเดียน (ซึ่งสามารถแปลงเป็นองศาได้) ลูกบอลถูกย้ายโดย: // Event.ENTER_FRAME x += Math.sin(Direction) * Velocity; y -= Math.cos(Direction) * Velocity; จนถึงตอนนี้ดีมาก ปัญหาของฉันมาถึงตอนนี้โดยใช้แผ่นอิเล็กโทรนิกส์ (3 บล็อกที่มีขนาดใหญ่และมืดรอบ ๆ บล็อกสีขนาดเล็ก) ในขณะที่พวกเขาหมุนมุมผิวจะเปลี่ยนไป ยิ่งไปกว่านั้นลูกบอลควรตีที่ด้านข้างด้วยดังนั้นฉันจะวัดทิศทางของการตีและทิศทางการเคลื่อนที่ของลูกบอลได้อย่างไร ป.ล. : ถ้าจำเป็นฉันสามารถจัดหารหัสและ swf ที่เล่นได้ แก้ไข ตกลงปัญหาเกี่ยวกับมุมได้รับการแก้ไขด้วยเวกเตอร์แต่ฉันยังคงมีปัญหากับการชนด้านข้างและด้านหลัง …

1
การย้ายวัตถุไปตามเส้นโค้งในขณะที่หมุน
ฉัน woud ต้องการที่จะย้ายวัตถุไปตามเส้นโค้ง ที่จุดใดจุดหนึ่งบนเส้นโค้งฉันต้องการให้วัตถุเปลี่ยนความเร็วและหมุนตัวเองไปตามแกนของมัน ลองนึกภาพเครื่องบินที่บินไปยังปลายทาง มันมีเส้นทางที่มันจะต้องปฏิบัติตามรวมถึงจะปรับความเร็วและทิศทางของมันตลอดทาง (หัวเรื่อง, แก่น, ธนาคาร) ฉันขอข้อมูลเริ่มต้นได้จาก: สิ่งที่ชนิดของเส้นโค้งเพื่อใช้ในการได้อย่างราบรื่นสอดแทรกวัตถุ สูตรใดที่จะใช้สำหรับการประมาณค่าที่เชื่อถือได้ซึ่งฉันสามารถควบคุมความเร็วของการเคลื่อนที่ของวัตถุได้ ข้อมูลใดที่ควรส่งออกจากแอปพลิเคชันการเขียน 3D ฉันควรใช้ quaternions slerp ()เพื่อสิ่งนี้หรือไม่? หากคุณรู้เกี่ยวกับหนังสือที่ครอบคลุมหัวข้อนี้อย่างมีประสิทธิภาพนั่นจะเป็นหนังสือที่ดีที่สุด ขอขอบคุณ.

3
อะไรคือเส้นโค้งที่พบได้บ่อยที่สุดในการพัฒนาเกม
แสดงรายการ splines ทั่วไปที่พบในการพัฒนาเกมจำนวนจุดที่วิธีการจำเป็นต้องสอดแทรกเส้นโค้งและวิธีสร้างชนิดข้อมูลที่ช่วยให้คุณได้รับการแก้ไขจุดโค้ง ตัวอย่าง: เส้นโค้ง Bezier, B-Splines, Cubic Splines ฯลฯ PS: ฉันวางสิ่งนี้เป็นวิกิชุมชนเพื่อให้เราสามารถแสดงรายการการแก้ไขอิสระทุกชนิด

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