วิธีใดที่ดีที่สุดในการสร้างตัวละคร 2D เพื่อให้สามารถใช้อุปกรณ์ต่าง ๆ ได้จำนวนมากเมื่อใช้งานจริง


14

ฉันต้องการสร้างเกม 2D แต่ฉันต้องการให้ตัวละครสวมใส่อุปกรณ์ต่าง ๆ มากมายในชุดค่าผสมที่แตกต่างกันเช่นเกม RPG หรือบางอย่าง

สมมุติว่าผู้ใช้เปลี่ยนไหล่และกางเกงของเขา / เธอนี่จะต้องแสดงให้ผู้เล่นเห็นและอุปกรณ์ต่าง ๆ เหล่านี้จะต้องทำตามแอ็คชั่นตัวละครต่าง ๆ

ฉันเห็นปัญหาเล็ก ๆ น้อย ๆ ที่ฉันต้องการรู้วิธี / อัลกอริทึม / สถาปัตยกรรมที่ดีที่สุดในการแก้ปัญหา

1 - สไปรต์หรือภาพเคลื่อนไหว

ฉันควรสร้างสไปรต์ที่แตกต่างกันสำหรับแต่ละอุปกรณ์ในแต่ละแอนิเมชั่นการกระทำหรือไม่

มันจะดีกว่าหรือไม่ที่จะให้สไปรต์อุปกรณ์และเคลื่อนไหวโดยตรงบนโค้ดเช่นการหมุนและการแปล (ใช้บางอย่างเช่น Tween บน Flash)

มีตัวเลือกที่ดีกว่านี้ไหม? (ฉันไม่ชอบความคิดด้านบน)

2 - ตำแหน่ง

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

หากเราพิจารณาส่วนหนึ่งของผู้ใช้เช่นหัวเขาจะเริ่มต้นที่ด้านหน้าแล้วเลี้ยวซ้าย

มันหมายถึงอย่างน้อย 3 ตำแหน่งที่แตกต่างกันสำหรับอุปกรณ์หัวแต่ละอัน (หมวก, หมวก, อะไรก็ตาม)

สิ่งนี้มีอิทธิพลต่อคำตอบของคำถาม # 1 อย่างแน่นอน วิธีที่ดีที่สุดในการบรรลุนั้นคืออะไร?

3 - เลเยอร์

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

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

มีวิธีที่ดีในการทำเช่นนั้น?

ฉันรู้ว่าคำถามนั้นค่อนข้างยาวและยากที่จะเข้าใจ แจ้งให้เราทราบหากคุณคิดว่าจะดีกว่าถ้ามีภาพวาดลองอธิบายแบบใดและฉันจะลองทำดู


คุณตั้งใจให้งานศิลปะของคุณอยู่ในระดับใด เช่นเดียวกับศิลปะพิกเซลย้อนยุค? หรือสไปรต์ HD เหล่านั้นหากคุณมีงานศิลปะใด ๆ ที่มีอยู่ที่จะช่วยฉันตอบสนองการปรับแต่งของฉัน
Jesse Dorsey

สวัสดี Noctrine ที่จริงฉันคิดว่ามันเป็นคำถามที่ "ศิลปะอิสระ" ฉันจะพยายามวาดคำอธิบายในช่วงสุดสัปดาห์นี้เพื่อให้เข้าใจง่ายขึ้น ขอบคุณ
homemdelata

คำตอบ:


8

ฉันคิดว่ามันดูเหมือนว่าคุณกำลังมองหาระบบภาพเคลื่อนไหวโครงกระดูก 2D หรือไม่? ฉันไม่รู้เกี่ยวกับระบบนอกระบบที่น่าเสียดายเพราะมันถูกแทนที่โดยแนวโน้มของเกม 3D-gfx-but-2D-2D


+1 มันง่ายกว่ามากถ้าคุณสร้างตัวละคร 3 มิติ
knight666

แต่สำหรับ "เกม 3D-gfx-but-2D" ฉันจะต้องพิจารณาหนึ่งในวิธีการแก้ปัญหาที่ฉันพูดถึงต่อไปมิฉะนั้นฉันจะต้องมีสไปรต์สำหรับการรวมไอเท็มใด ๆ ตัวอย่างเช่นชิ้นหน้าอกเดียวกันกับวงเล็บ 10 อัน ชิ้นส่วนจะสร้างภาพเคลื่อนไหว 10 ภาพ :(
homemdelata

ไม่จริงๆคุณมีเพียงจุดเชื่อมต่อบนโครงกระดูกและสามารถวางสิ่งที่คุณต้องการ
coderanger

2
ฉันได้สร้างไลบรารี่แอนิเมชั่นโครงกระดูก 2d แบบง่าย (โอเพ่นซอร์ส) สำหรับ XNA รวมถึงโปรแกรมแก้ไขที่ดี ลองดูyoutube.com/user/srekel#p/a/u/0/46LIoFNdG_4และyoutube.com/user/srekel#p/a/u/1/8sYkeu5k7XE
Srekel

นี่เป็นคำตอบที่ถูกต้องเกือบ จริงๆแล้วคุณทำให้ฉันเข้าใจว่าสิ่งที่ฉันกำลังมองหาคือระบบ 3D Skeletal สำหรับภาพเคลื่อนไหว 2D ฉันต้องการค้นหาอัลกอริทึมสำหรับสิ่งนั้น (ถ้ามี)
homemdelata

8

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

ทางเลือก "ขี้เกียจ" บางอย่าง:

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

2

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

เห็นได้ชัดว่านี่เป็นงานที่ต้องใช้แรงงานมากและด้วยเหตุนี้จึงมีชิ้นส่วนที่เป็นเอกลักษณ์ไม่กี่ชิ้นที่มีการเปลี่ยนชุดจานสีและจานที่ดัดแปลงด้วยจานสีจำนวนมาก

ในเกมที่ทันสมัยฉันขอแนะนำให้สร้างตัวละคร 3 มิติ หากคุณต้องการภาพ 2 มิติหรือแพลตฟอร์มของคุณไม่มีแรงม้าสำหรับ 3D จริงคุณยังคงมีแนวโน้มที่จะดีกว่าในการสร้างแบบจำลองทุกอย่างในแบบ 3 มิติการเรนเดอร์และจากนั้นปรับแต่งผลลัพธ์สุดท้ายด้วยมือ

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


ฉันพูดถึงคำตอบอื่น ๆ เป็นอย่างมากที่นี่: ฉันจะต้องพิจารณาหนึ่งในวิธีการแก้ปัญหาที่ฉันพูดถึงอย่างไรก็ตามไม่อย่างนั้นฉันจะต้องมีเทพดาสำหรับชุดรายการใด ๆ ตัวอย่างเช่นชิ้นหน้าอกชิ้นเดียวกันกับ 10 วงเล็บชิ้นที่แตกต่างกัน จะสร้างภาพเคลื่อนไหว 10 ภาพ :(
homemdelata

2
คุณต้องการคอมโพสิต "end sprite" ตอนรันไทม์ คุณไม่มีเทพดาสำหรับ "ผู้เล่น" คุณจะมีรายการสไปรต์ที่แสดงสำหรับแต่ละเฟรมภาพเคลื่อนไหว ดังนั้นหากผู้เล่นหันหน้าไปทางขวาคุณจะแสดง "ถุงมือซ้าย", "วงเล็บปีกกาซ้าย", "ตัวละครของผู้เล่น", "รองเท้าบูท", "กางเกง", "เสื้อเกราะ", "หมวกเกราะ", "หมวกเกราะด้านขวา" "ถุงมือขวา" ตามลำดับ จากนั้นให้คุณขยับชิ้นส่วนเกียร์แต่ละชิ้นอย่างอิสระลอยกลางอากาศ
ZorbaTHut

1

ตรวจสอบหนังสือของ James Da Silva ที่ซึ่งเขาอธิบายว่าเขาทำเครื่องล้างจานได้อย่างไร: Dead Samurai มันจะแสดงให้คุณเห็นว่า KISS สามารถแก้ไขปัญหานี้ได้อย่างไร ข้อเสนอแนะของการใช้ภาพเคลื่อนไหวโครงกระดูก 3 มิติหรือ 2 มิตินั้นมีความถูกต้องและค่อนข้างจะอยู่ในขอบเขตเดียวกัน


คุณสามารถเพิ่มลิงค์ได้ไหม?
homemdelata

อ๊ะเป็น James Silva อ๊ะ! amazon.com/Building-XNA-2-0-Games-Professionals/dp/1430209798/…
Kaj

0

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

การใช้เอ็นจิ้น 3 มิติก็เป็นทางออกที่ดีเช่นกันแม้ว่าสิ่งนี้จะนำมาซึ่งความท้าทายของตัวเอง


ใช่ว่าเกือบจะแล้ว เพิ่งได้คำตอบอื่น ๆ ว่าถูกต้อง แต่คำตอบนี้ใช้ได้เช่นกัน ที่ฉันแสดงความคิดเห็นในที่อื่น ๆ ผมจำเป็นต้องมีระบบโครงร่าง 3 มิติสำหรับการเคลื่อนไหว 2D :)
homemdelata
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.