จะคาดเดาได้อย่างไรว่าผู้เล่น AI ควรสกัดกั้นลูกฟุตบอลไว้ที่ใดหลังจากถูกเตะ?

Aug 18 2020

คำถามนี้เคยถูกถามหลายครั้งก่อนหน้านี้ แต่คำตอบส่วนใหญ่จะให้คำตอบสำหรับปัญหาที่ถือว่าลูกบอล (เป้าหมาย) เคลื่อนที่ด้วยความเร็วคงที่

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

ฉันได้แนบรูปภาพเพื่อให้เห็นภาพ

ฉันรู้ตำแหน่งของลูกบอลความเร็วปัจจุบันของลูกบอลตำแหน่งของผู้เล่น AI ความเร็วคงที่ของผู้เล่น AI ฉันจะหาจุดดังกล่าวที่ผู้เล่น AI สามารถสกัดกั้นบอลได้อย่างไร?

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

นี่คือรหัส C # (Unity) ที่ฉันมีจนถึงตอนนี้:

public Vector3 CalculateIntercept()    
{       
     Vector3 pos = Ball.GetInstance().transform.position;
     Vector3 dir = Ball.GetInstance().GetVelocity();
     dir.y = transform.position.y;

     float dist = (pos - transform.position).magnitude;
     return pos + (dist / 6.17f) * dir; //6.17 is the AI player's constant speed.
}

ไม่มีการลากบอล แต่มีวัสดุฟิสิกส์ที่มีแรงเสียดทาน ฉันคิดว่าจะแก้ปัญหานี้ได้ฉันอาจต้องพิจารณาเรื่องการเร่งความเร็ว

โปรดช่วยฉันคิดออก ขอบคุณ!

คำตอบ

Natalo77 Aug 18 2020 at 16:58

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