หลายแหล่งที่มาของการเคลื่อนไหวในระบบเอนทิตี
ฉันค่อนข้างใหม่กับแนวคิดของระบบเอนทิตีที่ได้อ่านสิ่งต่าง ๆ (ส่วนใหญ่เป็นประโยชน์บล็อกที่ยอดเยี่ยมนี้และคำตอบนี้ ) แม้ว่าฉันจะมีปัญหาเล็กน้อยในการทำความเข้าใจว่าบางสิ่งง่าย ๆ เช่นเดียวกับที่สามารถจัดการตำแหน่งของวัตถุด้วยแหล่งที่มาที่ไม่ได้กำหนดจำนวนมาก นั่นคือฉันมีหน่วยงานของฉันซึ่งมีองค์ประกอบตำแหน่ง ฉันมีเหตุการณ์บางอย่างในเกมที่บอกเอนทิตีนี้ให้ย้ายระยะทางที่กำหนดในเวลาที่กำหนด เหตุการณ์เหล่านี้สามารถเกิดขึ้นได้ตลอดเวลาและจะมีค่าแตกต่างกันสำหรับตำแหน่งและเวลา ผลก็คือพวกเขาจะรวมกัน ในโซลูชัน OO แบบดั้งเดิมฉันมีMoveByคลาสบางประเภทที่มีระยะทาง / เวลาและอาเรย์ของผู้ที่อยู่ในคลาสอ็อบเจ็กต์เกมของฉัน แต่ละเฟรมฉันจะวนซ้ำทั้งหมดMoveByและนำไปใช้กับตำแหน่ง หาก a MoveByถึงเวลาสิ้นสุดแล้วให้ลบออกจากอาร์เรย์ ด้วยระบบเอนทิตี้ฉันสับสนนิดหน่อยว่าฉันควรทำซ้ำพฤติกรรมแบบนี้อย่างไร หากมีเพียงหนึ่งในเหล่านี้ในแต่ละครั้งแทนที่จะสามารถรวมพวกเขาเข้าด้วยกันมันก็จะค่อนข้างตรงไปตรงมา (ฉันเชื่อ) และมีลักษณะเช่นนี้: PositionComponent มี x, y MoveByComponent มี x, y, time Entityซึ่งมีทั้งPositionComponentและMoveByComponent MoveBySystemที่รูปลักษณ์สำหรับนิติบุคคลที่มีทั้งส่วนประกอบเหล่านี้และเพิ่มมูลค่าของไปMoveByComponent PositionComponentเมื่อtimeถึงมันจะลบองค์ประกอบจากเอนทิตีนั้น ฉันสับสนเล็กน้อยว่าฉันจะทำสิ่งเดียวกันได้อย่างไรด้วยการเคลื่อนไหวหลายอย่างด้วยกัน ความคิดเริ่มต้นของฉันคือฉันจะมี: PositionComponent, MoveByComponentเช่นเดียวกับข้างต้น MoveByCollectionComponentซึ่งมีอาร์เรย์ของMoveByComponents MoveByCollectionSystemที่มองหาเอนทิตีที่มีPositionComponentและ a MoveByCollectionComponent, วนซ้ำMoveByComponents ข้างในนั้น, ใช้ / ลบตามความจำเป็น ฉันเดาว่านี่เป็นปัญหาทั่วไปมากขึ้นของการมีองค์ประกอบเดียวกันจำนวนมากและต้องการให้ระบบที่เกี่ยวข้องดำเนินการกับแต่ละองค์ประกอบ …