วิธีการทำให้แน่ใจว่าวัตถุหมุนได้เข้าเป้าด้วยปลายด้านขวา


25

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

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

ฉันได้ดูภาพจากกล้องที่คล้ายกันของ killcam ที่ช้ามาก ๆ และทุกครั้งที่มีการโยนอาวุธมันจะหมุนไปในอากาศและในที่สุดก็จะมีดาบที่ชี้ไปที่เป้าหมาย สำหรับเกมที่ระยะการขว้างปาสอดคล้องกันนี่จะค่อนข้างตรงไปตรงมา แต่ฉันไม่แน่ใจว่าจะทำนายได้อย่างไรเนื่องจากมีปัจจัยที่คาดเดาไม่ได้หลายอย่างที่เกี่ยวข้องเช่น ทิศทางของมีด, การหมุนของมีด, ตำแหน่งของศัตรู, ระยะทางจากศัตรู ฯลฯ หากเป็นไปได้ฉันไม่ต้องการใช้ตรรกะการทำนายที่ซับซ้อนเนื่องจากเกมจะเป็นอุปกรณ์ระดับต่ำ มีวิธี "ควันและกระจก" เพื่อแก้ปัญหานี้หรือไม่?

ตัวอย่าง: https://youtu.be/0fav8lFpBko?t=42s


15
มีดตีใบมีดเป้าหมายก่อนเสมอไม่เหมือนจริงโดยเฉพาะอย่างยิ่งเมื่อเราพูดถึงเป้าหมายเคลื่อนที่
ธีระโรจน์

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

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

2
ปัญหานี้โดดเด่นพอที่มีบทความเกี่ยวกับเรื่องนี้ของ TVTropes: The Blade Always Pointy End In
Mason Wheeler

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

คำตอบ:


35

ปลอม

ดูวิดีโอที่คุณเชื่อมโยงดูในแบบสโลว์โมชั่น ... เอ๊ะอะไรนะ กล้องกระโดดในตอนท้ายและมีดอยู่ในหมวกของเป้าหมายแล้ว

เพียงปลอมมัน เมื่อระยะทางจากมีดไปยังเป้าหมายมีขนาดเล็กให้กระโดดตัดไปที่มีดอย่างน่าอัศจรรย์ในเป้าหมาย

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


การทำนายที่ซับซ้อน

ตั้งแต่อัตราที่มีดหมุนอยู่นอกเหนือการควบคุมของผู้เล่น

ถูกแล้ว. มันอยู่นอกเหนือการควบคุมของผู้เล่น อย่างไรก็ตามไม่เกินการควบคุมของคุณ ...

หากคุณสามารถคำนวณระยะทางที่มีดได้ต้องเดินทางคุณสามารถกำหนดอัตราการหมุนได้เพื่อให้มีดตีใบมีดก่อน

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

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

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

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

แน่นอนว่าอุปสรรคจะเกิดขึ้นในขณะที่มีดอยู่ที่นั่น ...


เป็นจริง

คุณจะไม่ทำให้มีดมีดตีครั้งแรก 100% ของเวลาโดยเฉพาะอย่างยิ่งกับเป้าหมายเคลื่อนที่ เพียงแค่ยอมรับว่ามีดขว้างปาไม่ใช่อาวุธที่เชื่อถือได้ ดังนั้นมีทางเลือกที่จะตีกลับเมื่อมันกระทบกับอันดับแรก คุณสามารถตรวจสอบว่ามันตีที่จับก่อนโดยการตรวจสอบการวางแนวและเปรียบเทียบกับทิศทางไปยังจุดชน


1
อาฉันไม่เห็นการกระโดดตัดมันช่างฉลาดเหลือเกิน มันชัดเจนมากเมื่อฉันดูทีละเฟรมตามที่คุณแนะนำ
FrontEnd

14

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

หากคุณไม่ทำเช่นนั้นก็โอเคที่จะโกงโดยกำหนดการหมุนเมื่อโดนและอาจซ่อนด้วยสาดเลือด เหมือนนักมายากลถ้าคุณทำเร็วพอที่ผู้เล่นจะไม่สังเกตเห็น

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

1 : มีบางสไตล์ที่มีดไปที่ใบมีดก่อนเช่นกัน


4
+1: สาดน้ำเลือด ดีเทคนิคมายากล แก้ไข: หรือคลาวด์ฝุ่นสำหรับรุ่นที่ไม่มีเลือด
ธีระโรจน์

2
@Theraot และ / หรือทำให้อัตราการหมุนเร็วพอที่ผู้ชมจะไม่สามารถติดตามว่ามันชี้ไปที่ใด
Perkins

14
  1. คำนวณระยะทางเส้นตรงไปยังเป้าหมาย

  2. แต่ละเฟรมตั้งค่ามุมของมีดให้เป็น 2PI * (ที่เหลือตรงเส้นตรงระยะทาง) / (ดั้งเดิมเส้นตรงระยะห่าง) * ที่ต้องการตัวเลขการหมุน

อัตราส่วนการหมุนจะแตกต่างกันเล็กน้อยหากคุณไม่ขยับมีดเป็นเส้นตรง แต่จะไม่มีใครสังเกตเห็น

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


4

มีดขว้างปาจริงถูกออกแบบมาให้มีโอกาสสูงมากที่จะตีใบมีดก่อน ออกแบบมีดของคุณตามนั้น

ชุดมีดขว้างจากWikipedia : ชุดมีดขว้างจากวิกิพีเดีย

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

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

มีดที่ถูกโยนโดยจับปลายใบมีดและจับที่ด้ามจับตามทิศทางการโยน


2

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

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


1

โยนมีดที่สมบูรณ์แบบ?

ในขณะนี้คุณบอกว่าคุณกำลังหมุนมีดผ่านภาพเคลื่อนไหว คุณใช้พารามิเตอร์อะไรในการควบคุมมุม? หมายเลขเฟรม? เวลาเล่นเกม? ปรับขนาดด้วยอัตราการหมุนโดยพลการหรือไม่

หากคุณใช้พารามิเตอร์ (ระยะทางเคลื่อนย้าย) / (ระยะทางรวมกับเป้าหมาย) แทนด้วยการปรับสเกลที่เหมาะสมโดย pi และ (จำนวนเทิร์น + 0.5) ดังนั้นมีดจะแน่นอนมาถึงจุดแรกอย่างน่าอัศจรรย์เสมอ


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

@TimB ทำงานได้ดีกว่าในการอธิบาย แต่การแก้ปัญหาที่เสนอของ Neil เป็นวิธีการที่ดี ปรับเปลี่ยนความเร็วในการเคลื่อนไหวของมีดปั่นของคุณเพื่อที่ว่าเมื่อถึงเป้าหมายแล้วมีดจะอยู่ในตำแหน่ง นี่เป็นเรื่องง่ายกว่า (สำหรับโปรแกรมและการคำนวณ) กว่าการคำนวณพาราโบลาวิถีที่เกี่ยวข้องกับเป้าหมายการเคลื่อนที่ ฯลฯ สำหรับ "การปรับสเกลที่เหมาะสมโดย PI" ที่น่าจะเป็นแค่ 2 เนื่องจาก number_of_revolutions นั้นเป็นตัวแปรอื่นใน Neil's pseudoequation หากเป็นภาพเคลื่อนไหวแบบเฟรมคุณก็แค่ปรับขนาดดัชนีของคุณและลืมเรื่อง Pi
AC
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.