วิธีสร้าง plasma trail สำหรับยานอวกาศ


13

ฉันได้เห็นเกมสเปซที่น่าจับตามองมากมายที่ทุกคนใช้เอฟเฟกต์ที่คล้ายกัน ฉันสนใจที่จะทราบว่าเอฟเฟกต์เหล่านี้เกิดขึ้นได้อย่างไร

โดยเฉพาะฉันต้องการทราบว่าเส้นทางบางส่วนของยานอวกาศหรือขีปนาวุธนั้นสำเร็จได้อย่างไรโดยไม่ต้องใช้ทรัพยากรที่มีอยู่ทั้งหมด

สำหรับตัวอย่างของเอฟเฟกต์ฉันหมายถึงดูภาพหน้าจอของ Gimbalและแม้แต่วิดีโอที่ลิงก์เดียวกัน นอกจากนี้ยังมีเส้นทางขีปนาวุธในอีเธอร์ไอ

เทคนิคเหล่านี้เหมือนกันหรือไม่ ฉันสนใจ 2D เป็นหลัก แต่ฉันไม่สามารถจินตนาการได้ว่ามันจะแตกต่างกันมากเกินไป

ดังนั้นฉันจะไปเกี่ยวกับการสร้างลักษณะเช่นนี้ได้อย่างไร พวกเรากำลังพูดถึง pixel shaders, ผสมผสานโหมด / ตัวกรอง, ผล bitmap, ระบบอนุภาคหรืออะไร ไม่เจาะจงแพลตฟอร์มจริงๆ ฉันแค่กำลังมองหาทฤษฎี แต่ตัวอย่างหรือลิงก์ที่เฉพาะเจาะจงจะดีมาก และรายละเอียดที่ดียิ่งขึ้น

คำตอบ:


7

ดังนั้นฉันจะไปเกี่ยวกับการสร้างลักษณะเช่นนี้ได้อย่างไร พวกเรากำลังพูดถึง pixel shaders, ผสมผสานโหมด / ตัวกรอง, ผล bitmap, ระบบอนุภาคหรืออะไร ไม่เจาะจงแพลตฟอร์มจริงๆ ฉันแค่กำลังมองหาทฤษฎี แต่ตัวอย่างหรือลิงก์ที่เฉพาะเจาะจงจะดีมาก และรายละเอียดที่ดียิ่งขึ้น

จากทั้งหมดที่กล่าวมา

ถ้าคุณโผล่ผ่านรหัสที่มาของพวกเขาคุณอาจไม่ทราบได้อย่างแม่นยำว่าพวกเขาไม่ได้

อย่างไรก็ตามจากรูปลักษณ์ของเกมทั้งสองเกมทั้งสองมีสิ่งที่ดูเหมือนจะเป็นรูปทรงเรขาคณิตที่เชื่อมต่อและเส้นทางเรือ อาจไม่จำเป็นต้องเป็นระบบอนุภาคจุด - สไปรต์ขั้นพื้นฐาน แต่มันก็ไม่ใช่เรื่องยากเช่นกัน

เกมบางเกมจะใช้อัลกอริทึมเส้นโค้งและสร้างรายการจุดยอดจากนั้นและทำพื้นผิวเล็กน้อยด้วยพื้นผิวที่แตกต่างกันที่ใช้ที่จุดปลายทั้งสองของเส้นทางเพื่อที่จุดหนึ่งไอเสียดูร้อนและที่อื่น ๆ มันเย็นกว่าและ เส้นทางออกสู่อวกาศ

เรือรบของผู้เล่นเป็นกรณีที่น่าสนใจเพราะการเคลื่อนไหวไม่แน่นอนและคุณอาจต้องอัปเดตจุดควบคุมของอัลกอริทึมโค้งของคุณหรือจบการสุ่มตัวอย่างตำแหน่งเรือล่าสุดและสร้างตำแหน่งจุดยอดตามนั้น

ดูคำตอบนี้จากคำถามก่อนหน้านี้หากคุณต้องการมีบางสิ่งที่ไม่สามารถใช้งานได้จากจุดควบคุม สำหรับความต้องการของคุณการสุ่มตัวอย่างผู้เล่นอาจจะทำงานได้ดีขึ้นและเข้าใจได้ง่ายขึ้น

นี่คือสิ่งที่จะทำให้คุณนึกถึง:

เริ่มการสุ่มตัวอย่างตำแหน่งผู้เล่น จุดเหล่านี้จะสร้างส่วนของเส้นทางของคุณซึ่งสามารถสร้างรูปทรงเรขาคณิตได้ เป็นความคิดที่ดีที่จะแยกส่วนหางที่มีพื้นผิวแยก คุณอาจต้องการตรวจจับเมื่อผู้เล่นหมุนและเพิ่มความถี่ของเซกเมนต์เหล่านี้มิฉะนั้นคุณจะจบลงด้วยเส้นโค้งบล็อก ยกเว้นว่าเป็นเอฟเฟกต์ที่คุณกำลังทำ :)

ในบางเหตุการณ์เซ็กเมนต์จำเป็นต้องหยุดสร้างและเซ็กเมนต์ที่มีอยู่ควรเริ่มลดขนาดลงอย่างช้า ๆ เริ่มต้นจากส่วนของร่างกายที่อยู่ใกล้กับหางมากที่สุด (แต่ไม่ใช่หางเอง) นี่คือในกรณีที่ผู้เล่นชะลอตัวลง แต่ถ้าความเร็วที่เซ็กเมนต์ถูกลดขนาดลงให้ตรงกับความเร็วของเรือรบแล้วเซ็กเมนต์ใหม่จะถูกสร้างขึ้นในเวลาเดียวกับที่ถูกนำออกไป ดังนั้นสิ่งนี้ยังทำงานได้ดีสำหรับเรือรบที่เคลื่อนไหวเต็มไปด้วย ความยาวของเส้นทางจะเท่ากันเสมอ - ซึ่งให้กระแสของไหลที่สม่ำเสมอ

ส่วนหัวควรอยู่ในตำแหน่งปัจจุบันของผู้เล่น หากตรวจพบการหมุนใด ๆ ส่วนหัวที่มีอยู่จะถูกเพิ่มไปยังส่วนของร่างกายและส่วนหัวใหม่จะเริ่มขึ้น ทำซ้ำ แต่ละส่วนอาจมีความยาวสูงสุดเช่นกันทั้งนี้ขึ้นอยู่กับพื้นผิวของคุณ

สิ่งนี้ทำให้เรามีวิธีง่ายๆในการจำลองเอฟเฟกต์นี้: การทำงานนอกความคิดที่ว่าเอฟเฟกต์จะลดลง / ลดขนาดลงโดยตัวของมันเองยกเว้นว่าจะมีการแบ่งเซ็กเมนต์เพิ่มเติมและเล่นรอบ ๆ ด้วยความเร็ว


4

มีความเป็นไปได้ที่แตกต่างกันมากมายในการสร้างเส้นทางดังกล่าว คุณสามารถใช้เส้นอย่างง่ายรูปหลายเหลี่ยมเมฆจุดเป็นต้น

พวกเขาทั้งหมดมักจะขึ้นอยู่กับหนึ่งในสองแนวคิด:

  • ติดตามตำแหน่งก่อนหน้าและใช้สิ่งเหล่านี้เพื่อวาดหาง
  • ติดตามความเร็ว / ทิศทางและปรับหางตามที่

วิธีแรกเหมาะกว่าสำหรับสิ่งต่าง ๆ เช่นขีปนาวุธในขณะที่วิธีที่สองจะดีกว่าสำหรับสิ่งที่แนบมาบางชนิดที่ติดตามสิ่งต่าง ๆ (เช่นหางของมังกร)

การนำไปใช้งานที่ง่ายสำหรับส่วนท้ายของเครื่องยนต์นั้นไม่ซับซ้อน คุณจะต้องมีบัฟเฟอร์เพื่อเก็บตำแหน่งก่อนหน้า ฉันไม่ทราบว่าคุณใช้ภาษาใด แต่สำหรับเรื่องนี้ฉันจะใช้วงแหวนบัฟเฟอร์หรือบัฟเฟอร์ที่คล้ายกันบางประเภท (การลบอย่างรวดเร็วและการแทรกที่ปลาย)

เครื่องหมาย x / th ทุกเฟรมที่อัพเดท (คุณไม่ต้องทำมันเป็นร้อยครั้งต่อวินาที) คุณต้องวางองค์ประกอบที่เก่าที่สุด / สุดท้ายในบัฟเฟอร์ของคุณและเพิ่มตำแหน่งปัจจุบันไปที่ด้านหน้า (เฉพาะเมื่อใส่บัฟเฟอร์; ตรวจสอบให้แน่ใจว่ามันมีองค์ประกอบ n เสมอโดยที่ n กำหนดความยาวของหางของคุณ)

จากนั้นในระหว่างการวาดคุณเพียงแค่เริ่มต้นที่ตำแหน่งปัจจุบันของคุณและวาดชุดของเส้นผ่านจุดทั้งหมดในบัฟเฟอร์ของคุณในขณะที่ลดความทึบของคุณด้วยทุกจุดสุดยอดเพิ่มเติม

วิธีนี้คุณควรท้ายด้วยหางที่ดีและสะอาด ขึ้นอยู่กับแพลตฟอร์มของคุณคุณสามารถขยายสิ่งนี้ได้เช่นการใช้ shaders หรือโดยการพันหางกราฟิคที่สวยงามตามเส้นทางนั้น

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