ระบบฟิสิกส์ช่วยให้คุณจำลองพฤติกรรมทางกายภาพในโลกแห่งความเป็นจริง เช่น การชนและแรงต่างๆ
โมดูลวิชาฟิสิกส์
ฟิสิกส์เป็น mod ที่โหลดมาตามค่าเริ่มต้น
คุณสามารถปรับเปลี่ยนการตั้งค่าฟิสิกส์ทั่วโลกได้ที่นี่:
- ทิศทางและขนาดของแรงโน้มถ่วง
- วัสดุทางกายภาพเริ่มต้น โปรดดูส่วนการชน - วัสดุทางกายภาพด้านล่าง
- เกณฑ์พลังงานโลก คำนวณพลังงานจลน์ของวัตถุโดยใช้สูตร:
m หมายถึงมวลของวัตถุเป็นกิโลกรัม
v แสดงถึงความเร็วทางกายภาพเป็น m/s
เมื่อ พลังงานจลน์ของวัตถุน้อยกว่าเกณฑ์นี้ วัตถุจะหยุดเคลื่อนที่ ตัวอย่างเช่น หากกำหนดเกณฑ์ไว้ที่ 0.5 วัตถุที่มีน้ำหนัก 1 กิโลกรัมจะหยุดเคลื่อนที่เมื่อความเร็วต่ำกว่า 1 เมตรต่อวินาที
- เกณฑ์การปะทะกันของตัวควบคุมตัวละคร ใช้ได้เฉพาะกับม็อดผู้เล่นที่เปิดใช้งาน [ใช้ตัวควบคุมตัวละครกับฟิสิกส์] หรือตัวควบคุมตัวละครแบบกำหนดเองทั้งหมด
สูตรโมเมนตัมคือ:
m คือมวล หน่วยเป็นกิโลกรัม
v คือความเร็วเป็น m/s
เมื่อเกิดการชนกัน โมเมนตัมของผู้เล่นและวัตถุแข็งที่กระทบจะถูกลบออก และโมดูลัสของความแตกต่างของโมเมนตัมบนเส้นตั้งฉากการชนจะถูกนำมาเปรียบเทียบกับเกณฑ์การชนของตัวควบคุมตัวละคร หากน้อยกว่าเกณฑ์นี้ วัตถุแข็งจะถูกผลักอย่างสม่ำเสมอ มิฉะนั้นจะเกิดการชนกันอย่างรุนแรง
โดยคร่าวๆ แล้ว พารามิเตอร์ที่ส่งผลต่อการชนกันอย่างรุนแรง ได้แก่:
-
ยิ่งมวลของผู้เล่นหรือตัวละครมากขึ้นเท่าใด ก็ยิ่งมีแนวโน้มที่จะเกิดการปะทะรุนแรงมากขึ้นเท่านั้น
-
ยิ่งความเร็วสัมพันธ์ระหว่างผู้เล่นหรือตัวละครกับวัตถุแข็งที่โดนโจมตีเร็วเท่าใด ก็ยิ่งมีแนวโน้มที่จะเกิดการปะทะกันอย่างรุนแรงมากขึ้นเท่านั้น
-
ยิ่งตั้งค่าเกณฑ์การปะทะของตัวควบคุมตัวละครให้สูงขึ้นเท่าไร โอกาสที่จะปะทะกันอย่างรุนแรงก็จะน้อยลงเท่านั้น
ตัวอย่างเช่น เมื่อเกณฑ์การชนของตัวควบคุมตัวละครถูกตั้งไว้ที่ 50 ผู้เล่นที่มีน้ำหนัก 50 กก. ที่เคลื่อนที่ด้วยความเร็ว 1 เมตร/วินาทีอาจชนอย่างรุนแรงกับวัตถุแข็งคงที่ที่มีมวลใกล้เคียงกับผู้เล่นหรือตัวละครในการชนกันแบบประสานงากัน
- ระดับกายภาพ การชนกันจะเกิดขึ้นที่ระดับต่างๆ กันหรือไม่นั้น ขึ้นอยู่กับการกำหนดค่าทางกายภาพ
วิธีกำหนดค่าเลเยอร์ฟิสิกส์ที่ไม่ใช่ค่าเริ่มต้นสำหรับผู้เล่น:
ปิดใช้งานการปะทะกันของระดับที่กำหนดเองและระดับเริ่มต้นในการกำหนดค่าฟิสิกส์:
คุณจะพบว่าผู้เล่นสามารถผ่านวัตถุใดๆ ในระดับฟิสิกส์เริ่มต้นได้โดยไม่รู้สึก:
วัตถุที่อาศัยการกระตุ้นการชนจะไม่กระตุ้นสิ่งใดสิ่งหนึ่งดังต่อไปนี้:
รูปร่างการชนและการชนกัน
มีส่วนประกอบพื้นฐานสองประการที่จำเป็นในการใช้วัตถุที่กำหนดเองกับระบบฟิสิกส์:
ส่วนประกอบรูปร่างการชน และ ส่วนประกอบการชน
สำหรับวัตถุส่วนใหญ่ คุณจะพบเพียงส่วนประกอบการปะทะกันหนึ่งส่วนเท่านั้น
เนื่องจากโดยทั่วไปแล้วไม่ใช่วัตถุที่กำหนดเอง:
สำหรับรูปร่างการชนที่กำหนดเองและวัสดุทางกายภาพ เราขอแนะนำให้คุณสร้างโหนดว่างใหม่และดำเนินการกับมัน:
รูปร่างการชน
ส่วนประกอบรูปร่างการชนจะกำหนดขอบเขตที่วัตถุจะชนกัน
ประเภทการชน:
ประเภทการชนจะกำหนดรูปร่างพื้นฐานของการชน เราจัดเตรียมรูปร่างพื้นฐานสามแบบ ได้แก่ ลูกบาศก์ ทรงกลม แคปซูล และการชนแบบตาข่าย
เครื่องชนตาข่ายเป็นรูปร่างการชนที่จำลองขึ้นตามขอบเขตของแบบจำลอง และมีความใกล้เคียงกับลักษณะที่ปรากฏของแบบจำลอง
สำหรับโหนดว่างที่สร้างขึ้น คุณต้องเพิ่มส่วนประกอบการเรนเดอร์แบบกำหนดเองเพื่อระบุรูปร่างและขนาดของกริด
สำหรับรูปร่างการชนพื้นฐาน คุณสามารถปรับเปลี่ยนตำแหน่ง ขนาด หรือปรับรูปร่างด้วยตนเองได้:
ลากจุดสีเหลืองบนกล่องการชนเพื่อปรับรูปร่างการชน
รูปทรงการชนแบบตาข่ายมีตัวเลือกให้นูนหรือไม่นูนก็ได้
Convex Polygons: ไม่ว่าจะชนกับ Mesh Colliders อื่นหรือไม่ Mesh Colliders ที่ไม่ได้เปิดใช้งาน Convex Polygons จะได้รับการสนับสนุนเฉพาะใน GameObjects ที่ไม่มีส่วนประกอบ Rigidbody เท่านั้น หากต้องการใช้ Mesh Collider กับส่วนประกอบ Rigidbody ให้เลือกตัวเลือก Convex Polygons
การชนกัน
วัสดุทางกายภาพ
วัสดุทางกายภาพกำหนดคุณสมบัติทางกายภาพบางประการของวัตถุที่ทำการชน
สำหรับวัตถุที่กำหนดเอง วัสดุทางกายภาพของการปะทะกันสามารถปรับแต่งได้ อย่างไรก็ตาม สำหรับวัตถุที่ไม่ได้กำหนดเองอย่างเป็นทางการส่วนใหญ่ วัสดุทางกายภาพจะไม่รองรับการปรับเปลี่ยน
สามารถสร้างไฟล์วัสดุทางกายภาพได้
คุณสามารถปรับเปลี่ยนคุณสมบัติต่อไปนี้ได้ในแผงตรวจสอบของไฟล์วัสดุทางกายภาพเพื่อให้วัตถุทั้งหมดที่ติดตั้งด้วยวัสดุทางกายภาพจะได้รับคุณสมบัติทางกายภาพที่สอดคล้องกัน
มันเป็นทริกเกอร์ใช่ไหม?
เมื่อทำเครื่องหมายที่ช่องกาเครื่องหมาย Is It a Trigger คอลไลเดอร์จะละเว้นการชนทางกายภาพแต่สามารถทริกเกอร์เหตุการณ์ได้
ซึ่งหมายความว่าวัตถุจะไม่เข้าร่วมในตรรกะการชนกันของฟิสิกส์แบบเริ่มต้น:
แต่เหตุการณ์การชนกันสามารถเกิดขึ้นได้:
ระดับกายภาพ
กำหนดระดับของฟิสิกส์ การชนกันที่ระดับต่างๆ จะเกิดขึ้นหรือไม่นั้น ขึ้นอยู่กับการกำหนดค่าในโมดูลฟิสิกส์
ริจิบอดี
ส่วนประกอบ Rigidbody ช่วยให้วัตถุได้รับการควบคุมทางกายภาพ ทำให้สามารถรับแรงต่างๆ ได้
หากต้องการเพิ่มส่วนประกอบ Rigidbody ก่อนอื่นคุณต้องมีส่วนประกอบ Collision
วัตถุแข็งแบ่งออกเป็นแบบสถิตย์ แบบพลศาสตร์ และแบบจลนศาสตร์
วัตถุแข็งแบบสถิต ส่วนใหญ่ใช้กับวัตถุที่ไม่มีความเร็วและไม่ได้รับแรง เช่น พื้นดิน กำแพง และวัตถุอื่นๆ ที่ไม่เคลื่อนที่ การปรับเปลี่ยนตำแหน่งและขนาดของวัตถุเหล่านี้จะเพิ่มประสิทธิภาพการทำงาน
วัตถุแข็งพลวัต ส่วนใหญ่ใช้กับวัตถุที่มีคุณสมบัติทางกล เช่น มวลและความเร็ว ซึ่งอาจได้รับผลกระทบจากแรง
คุณสามารถปรับเปลี่ยนพารามิเตอร์ที่เกี่ยวข้องกับฟิสิกส์ เช่น จุดศูนย์ถ่วงและมวลได้ภายใต้ตัวเลือก Dynamic Rigid Body นอกจากนี้ คุณยังสามารถเลือกล็อกแกนเฉพาะเพื่อให้วัตถุแข็งไม่เคลื่อนที่หรือหมุนตามที่กำหนดได้อีกด้วย
วัตถุแข็งแบบจลนศาสตร์ สามารถควบคุมด้วยมือให้เคลื่อนที่และหมุนได้ แต่จะไม่ได้รับผลกระทบจากการชนหรือแรงจากวัตถุแข็งอื่นๆ มักใช้ในการผลิตแอนิเมชันและเอฟเฟกต์พิเศษ
ตัวควบคุมตัวละคร
##ตัวควบคุมผู้เล่น FF
โดยค่าเริ่มต้น การกระทำของผู้เล่นกับตัวละครผู้เล่นจะได้รับการสืบทอดมาจากตัวควบคุมผู้เล่น FreeFire
ตัวควบคุมผู้เล่นพร้อมระบบฟิสิกส์
ในโมดูลผู้เล่น หลังจากเลือก [จะใช้ตัวควบคุมผู้เล่นที่มีเอฟเฟกต์ฟิสิกส์หรือไม่] แล้ว คุณสามารถปรับเปลี่ยนพารามิเตอร์ทางกายภาพของตัวควบคุมผู้เล่นบางตัวได้ ในกรณีนี้ ผู้เล่นจะเริ่มมีส่วนร่วมในการจำลองทางกายภาพในเกมในระดับหนึ่ง เช่น การกำหนดค่า [เกณฑ์การปะทะกันของตัวควบคุมตัวละคร] ในโมดูลฟิสิกส์จะเริ่มมีผล
<strong>ว่าจะใช้ตัวควบคุมผู้เล่นที่มีเอฟเฟกต์ทางกายภาพหรือไม่: </strong>เลือกเพื่อใช้ตัวควบคุมที่มีเอฟเฟกต์ทางกายภาพแบบกำหนดเองและขยายการกำหนดค่าที่เกี่ยวข้อง
<strong>ความสูงทั้งหมดรวมทั้งซีกบนและซีกล่าง:</strong> ความสูงของลำตัวที่ชนแคปซูลของตัวละคร
<strong>รัศมีของซีกโลกบนและล่าง : </strong>รัศมีของแคปซูลไม่สามารถเกิน 1/2 ของความสูง
<strong>คุณภาพ:</strong> คุณภาพผู้เล่น
<strong>มุมขึ้นสูงสุด:</strong> ทางลาดที่เกินมุมนี้จะไม่สามารถไต่ขึ้นได้ และผู้เล่นจะเริ่มไถลลงมา
<strong>การชดเชยแนวตั้งของขั้นตอน:</strong> ระยะทางที่ผู้เล่นสามารถเบี่ยงเบนออกจากการกำหนดค่าได้โดยไม่ต้องออกจากพื้นดินหรือถูกปิดกั้น โดยทั่วไปจะใช้เมื่อเคลื่อนที่ขึ้นและลงบันได
<strong>ระยะเคลื่อนที่ขั้นต่ำ:</strong> หากระยะที่ตัวควบคุมตัวละครต้องเคลื่อนที่น้อยกว่าค่านี้ ผู้เล่นจะยังคงไม่มีการเคลื่อนไหว
ความหนาของผิวหนัง: ความลึกที่วัตถุอื่น ๆ ได้รับอนุญาตให้ฝังเข้าไปในเครื่องชนของตัวละคร ซึ่งใช้เพื่อหลีกเลี่ยงการสั่นไหวหรือการติดขัด
<strong>แรงโน้มถ่วงที่คุณได้รับ:</strong> แรงโน้มถ่วงที่คุณได้รับในสามมิติ สำหรับตัวละครผู้เล่น การตั้งค่านี้จะแทนที่การตั้งค่าฟิสิกส์ทั่วไป
<strong>เปิดใช้งานการผลักแบบกำหนดเอง:</strong> เมื่อเปิดใช้งาน แรงที่ใช้โดยตัวละครเมื่อผลักวัตถุแข็งสามารถปรับแต่งได้ ขยายการกำหนดค่าที่เกี่ยวข้องหลังจากเปิดใช้งาน
<strong>ความแข็งแกร่งในการผลักที่กำหนดเอง:</strong> ปริมาณแรงที่ใช้เมื่อตัวละครผลักวัตถุแข็ง
<strong>ความสูงในการกระโดดหลายครั้ง:</strong>ความสูงในการกระโดดเมื่อทำการกระโดดหลายครั้ง
<strong> จำนวนสูงสุดของมัลติฮ็อป: </strong> จำนวนสูงสุดของการกระโดดที่รองรับโดยมัลติฮ็อปแต่ละอัน
<strong>การเคลื่อนที่ในอากาศ:</strong> เมื่อเปิดใช้งาน ผู้เล่นสามารถเปลี่ยนความเร็วในการเคลื่อนที่และทิศทางในอากาศได้
ตัวควบคุมตัวละครที่ปรับแต่งได้เต็มที่
ในตัวควบคุมอักขระที่กำหนดเองอย่างสมบูรณ์ คุณสามารถปรับแต่งตัวควบคุมอักขระได้อย่างสมบูรณ์โดยไม่มีข้อจำกัดใดๆ แต่ตัวควบคุมนี้ไม่มีฟังก์ชันเริ่มต้นใดๆ
ในการใช้ตัวควบคุมอักขระที่กำหนดเองโดยสมบูรณ์ คุณต้องใช้ส่วนประกอบของตัวควบคุมอักขระ และวัตถุที่ใช้เป็นอักขระที่ควบคุมไม่สามารถมีการชนกัน รูปร่างการชน วัตถุแข็ง และส่วนประกอบอื่นๆ
โปรดดูตัวอย่างด้านล่างสำหรับการใช้งานที่เฉพาะเจาะจง
ตัวอย่าง
เราจะอธิบายวิธีการใช้ตัวควบคุมอักขระแบบกำหนดเองโดยการสร้างตัวควบคุมอักขระโหมดแนวนอนแบบเรียบง่าย
ตั้งฉาก
เพียงสร้างฉากขึ้นมา
การสร้างตัวละครผู้เล่น
ที่นี่เราเพียงสร้างตัวละครผู้เล่นแบบง่าย ๆ
สร้างวัตถุว่าง:
เพิ่มส่วนประกอบตัวควบคุมอักขระลงในอ็อบเจ็กต์นี้
เพิ่มแอตทริบิวต์แบบกำหนดเองให้กับตัวควบคุมตัวละคร: สถานะ เราจะใช้สถานะเพื่อควบคุมการเคลื่อนไหวซ้ายและขวาของตัวละครผู้เล่นในภายหลัง
ในขณะนี้ตัวละครไม่มีรูปลักษณ์ ดังนั้นให้เพิ่มโหนดลูกเปล่าให้กับโหนดเปล่านี้เพื่อแสดงรูปลักษณ์
เพิ่มส่วนประกอบการเรนเดอร์แบบกำหนดเองสำหรับโหนดย่อยที่ว่างเปล่า
เลือกตาข่ายเป็นกระบอกสูบ
ในขณะนี้ ให้เลือกโหนดหลักและสังเกตตัวละครของเราในตัวแก้ไขฉาก
แคปซูลเมชเป็นส่วนประกอบตัวควบคุมอักขระของวัตถุหลัก และกระบอกสูบเป็นส่วนประกอบการเรนเดอร์แบบกำหนดเองของวัตถุย่อย เราพบว่าตัวควบคุมอักขระดูสูงกว่าที่เห็นเล็กน้อย และมีระยะที่เล็กกว่าโมเดล
ปรับความสูงที่สัมพันธ์กันของวัตถุย่อยและลักษณะของตัวควบคุมอักขระเพื่อให้ตรงกันคร่าวๆ
โปรดใส่ใจเป็นพิเศษ ว่าสำหรับตัวควบคุมตัวละคร ความสูงจะต้อง มากกว่า สองเท่าของรัศมี
ตั้งค่าตัวละครที่สร้างขึ้นเป็นพรีแฟบและเปลี่ยนชื่อเป็น New_player (หรือชื่ออื่นใดก็ได้ตามต้องการ) ลบวัตถุว่างที่ใช้ในฉาก
การเริ่มต้น
สร้างสคริปต์ทั่วโลกเพื่อบล็อกผู้เล่นเริ่มต้น สร้างผู้เล่นใหม่ และตั้งค่าวิธีการเคลื่อนที่
1. ล้าง UI เริ่มต้น
หากต้องการใช้ตัวควบคุมตัวละครแบบกำหนดเอง คุณต้องแก้ปัญหาตัวควบคุมผู้เล่นในตัวก่อน ตัวละครผู้เล่นไม่สามารถลบออกจากเกมได้ แต่เราสามารถใช้วิธีการบางอย่างเพื่อทำให้ไม่สามารถควบคุมหรือมองเห็นตัวละครผู้เล่นได้
โดยการปิดอินเทอร์เฟซ UI เริ่มต้น เราจะบล็อก UI ทั้งหมดที่สามารถจัดการเครื่องเล่นเริ่มต้นได้โดยตรง
2. ใช้กล้องที่กำหนดเอง
กล้องเริ่มต้นจะติดตามตัวละครผู้เล่นเริ่มต้น ดังนั้น เราจึงต้องใช้กล้องแบบกำหนดเองใหม่เพื่อสังเกตเฉพาะตัวละครผู้เล่นใหม่ที่เราสร้างขึ้นเท่านั้น
3. การจัดเก็บข้อมูลผู้เล่น
สร้างตัวแปรทั่วโลกเพื่อจัดเก็บตัวควบคุมตัวละครที่กำหนดเองของผู้เล่นแต่ละคน
4. ตั้งค่าวิธีการเคลื่อนไหว
เราควบคุมการเคลื่อนไหวโดยการตัดสินสถานะของตัวควบคุมตัวละคร โดยตั้งค่า 0 สำหรับไม่เคลื่อนไหว 1 สำหรับเคลื่อนไหวซ้าย และ 2 สำหรับเคลื่อนไหวขวา
ทุกครั้งที่มีการอัปเดต ตัวควบคุมที่กำหนดเองทั้งหมดจะดำเนินการวิธีการย้าย วิธีการย้ายจะตรวจสอบสถานะของตัวควบคุมผู้เล่น หากอยู่ในสถานะเคลื่อนที่ วิธีการจะย้ายเล็กน้อยไปในทิศทางที่สอดคล้องกัน
เมื่ออัปเดตเฟรมคงที่ เหตุการณ์จะถูกทริกเกอร์ที่ความถี่ 30 ครั้งต่อวินาที ซึ่งเทียบเท่ากับตัวควบคุมตัวละครที่เคลื่อนที่ด้วยความเร็ว 30*0.1=3 เมตร/วินาที
สร้าง UI การดำเนินการแบบกำหนดเอง
สร้าง UI เพื่อควบคุมการเคลื่อนไหวของตัวควบคุมตัวละครแบบกำหนดเอง
ปุ่มทั้งสามนี้ใช้สำหรับเคลื่อนผู้เล่นไปทางซ้าย ขวา และกระโดด
เพิ่มสคริปต์ลงในเอนทิตี UI และใช้ตรรกะการประมวลผลการโทรกลับ:
1.กระโดด
การกระโดดจะทำได้โดยใช้แรงกับตัวควบคุมอักขระที่กำหนดเอง
อินเทอร์เฟซแอปพลิเคชั่นบังคับสามารถเลือกความเร็วแอปพลิเคชั่นได้โดยตรง หลีกเลี่ยงการคำนวณแรงและมวล
- มือถือ
เราควบคุมการเคลื่อนไหวโดยการเปลี่ยนสถานะ จัดการสถานะของผู้เล่นโดยการกดและปล่อยปุ่มแยกกัน
เพิ่มการโทรกลับบนปุ่มเพื่อเรียกใช้วิธีการเหล่านี้ตามลำดับ
1.กระโดด
- มือถือ
ดีบัก
ตรรกะมันก็ทำงานได้ปกติ
เพิ่ม: การแก้ไขข้อบกพร่องของเลนส์
เมื่อใช้เลนส์ที่กำหนดเอง บางครั้งอาจยากที่จะกำหนดค่าพารามิเตอร์ของเลนส์ที่เหมาะสม
เราสามารถปรับแต่งกล้องระหว่างขั้นตอนการพัฒนาได้โดยการเพิ่ม UI เพื่อควบคุมกล้อง การใช้แนวคิดเดียวกันนี้สามารถช่วยให้คุณปรับประสิทธิภาพการควบคุมตัวละครของคุณให้เหมาะสมอย่างต่อเนื่องระหว่างขั้นตอนการแก้ไขข้อบกพร่อง
สร้าง UI
เราใช้ปุ่มเพื่อควบคุมการเคลื่อนที่ของเลนส์ขึ้น ลง ซ้าย ขวา ไปข้างหน้า และถอยหลัง และพิมพ์ค่าออฟเซ็ตเลนส์ปัจจุบันผ่านทางปุ่ม
การเขียนสคริปต์
เพิ่มสคริปต์สำหรับเอนทิตี UI
ขยับเลนส์โดยยกตัวอย่างการเคลื่อนตัวขึ้นด้านบน:
พิมพ์พารามิเตอร์เลนส์:
เพิ่มการโทรกลับ
เพิ่มการโทรกลับสำหรับแต่ละปุ่ม:
ลองยกตัวอย่างการเลื่อนขึ้น:
พิมพ์พารามิเตอร์เลนส์:
วิธีนี้ช่วยให้คุณปรับกล้องเพื่อให้ได้เอฟเฟกต์ที่คุณต้องการเมื่อแก้ไขเกม: