ThaiGameDevX - Thai Game Developers eXchange Forums
24 November 2014, 04:38:49 AM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News: หากมาครั้งแรก เชิญอ่าน ประกาศเจตนารมณ์ของ ThaiGameDevX และ กติกา ข้อตกลงในการใช้เว็บบอร์ด ครับ
 
   Home   Help Search Calendar Login Register  
Pages: [1]   Go Down
  Print  
Author Topic: ถาม: การเล็งเป้าเคลื่อนที่เร็วๆนะครับ  (Read 1621 times)
0 Members and 1 Guest are viewing this topic.
ปวีร์ (PentaX)
Veteran Developer
Sr. Member
*

จำนวน ชม/ไม่พอใจ: +47/-5
Offline Offline

Gender: Male
Posts: 369


Maid Lv.0


« on: 16 July 2009, 12:50:40 PM »

คือ งี้นะครับ

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

ทีนี้... นึกถึงการยิงไปยัง เป้าที่กำลังเคลื่อนที่ด้วยความเร็ว 1000m/s ในทิศทางใดๆ และตัวเราก็กำลังเคลื่อนที่ด้วยความเร็ว 1000m/s ในทิศทางใดๆ ด้วยเหมือนกันดูนะครับ... (ความเร็วกระสุน ที่ยังไม่เพิ่มความเร็วของตัวผู้เล่นเข้าไปที ก็อยู่ที่ 500m/s ฮะ)

การยิงไป ณ ตำแหน่งปัจจุบันของวัตถุ ผลก็คือ ยิงไม่โดนแหงๆ นอกจากว่า บินสวนกัน หรือบินตามกันอยู่

อยากจะถามหาวิธีที่จะคิด ตำแหน่งใหม่ ที่จะเล็งน่ะครับ
========================================

เหมือนกับจะมี clue อยู่ แต่ไม่รู้จะถูกรึเปล่า รู้สึกเหมือนยังขาดอะไรๆไป ก็คือ
1. หาระยะห่างระหว่างตัวยิง กับตัวเป้า
2. เอาระยะมาหารด้วยความเร็วกระสุน เอาเวลา
3. เอาเวลาที่ได้จากข้อสอง ไปคูณด้วยความเร็วในแต่ละแกนของตัวเป้า แล้วบวกเข้ากับตำแหน่งปัจจุบันของเป้า
4. เล็งไปที่ตำแหน่งนั้น
Logged

เกม ProjectNimbus



ติดตามผลงานพวกเราได้ที่นี่

http://www.facebook.com/pages/GameCrafterTeam/1818761
Thaina
Approved Member
Hero Member
*

จำนวน ชม/ไม่พอใจ: +29/-83
Offline Offline

Gender: Male
Posts: 810



« Reply #1 on: 16 July 2009, 07:31:25 PM »

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

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

ก็ สมการเส้นสามมิติ
X = PX1 + (S1NX1 * T)
Y = PY1 + (S1NY1 * T)
Z = PZ1 + (S1NZ1 * T)

ระยะห่างกระสุน
(X - PX2)2 + (Y - PY2)2 + (Z - PZ2)2 = TS2

S ก็คือ Speed N ก็คือทิศทางที่เป้าเคลื่อนที่ ส่วน T ก็คือเวลา

เราก็จับสมการมากลับ ให้หาค่า T ออกมาให้ได้
ก็ ที่ผมคิดออกคือ เอา S2 ไปหารในสมการสอง แล้วเราจะได้ "สมการของ T"
เอาไปแทนใน T ของสมการ 1 ทีละสมการ กำจัด T ออก แล้วค่อยๆกำจัด X กำจัด Y จนเหลือตัวแปรเดียว คำนวนออกมาให้ได้
แล้วก็เอาตัวแปรสุดท้ายที่ได้ กลับไปคำนวนหาค่า T ออกมา

คิดอีกที
เอา "สมการของ X" "สมการของ Y" "สมการของ Z" ในสมการ 1 มาจับยัดลงไปในสมการ 2 ทีละตัว น่าจะง่ายกว่าเยอะเลย
แล้วก็จับโยกๆค่า T เอาไปคำนวนออกมา หาให้ได้ว่า T ไหนที่ตรงกัน

แล้วเอา T กลับไปคำนวนตัวแปรที่เหลือ ด้วยสมการ 1
ก็จะได้ค่า X Y Z ที่คำนวนได้ว่า ยิงไปแล้วจะโดนพอดี

คงไม่ต้องทำให้ดู?
« Last Edit: 16 July 2009, 09:13:38 PM by Thaina » Logged
yod
Global Moderator
Hero Member
*****

จำนวน ชม/ไม่พอใจ: +150/-15
Offline Offline

Posts: 3,240


WWW
« Reply #2 on: 16 July 2009, 10:07:38 PM »

ที่คุณ Thaina ทำมาก็ ok แล้ว
เสริมนิดว่าถ้า AI มันเก่งขนาดยิงโดนหมด ก็ไม่ไหวอ่าครับ
มี 3 แบบเท่าที่นึกได้
1.กระสุนยิงช้ากว่าเป้า (ปกติ)  ก็ยิงไปปกติ ที่เหลือก็แค่ยิงดักหน้า ดักหลัง
2.homing missle กระสุนเลี้ยวเข้าหาเป้าหมายได้ กระสุนยิงช้ากว่าเป้า
3.ไม่ต้องมีกระสุน ยิงปุ๊บคำนวณเลยว่าโดนตรงไหน ใช้กับพวกเลเซอร์ ใน shooting หรือ พวก shotgun ใน fps
Logged

..
Thaina
Approved Member
Hero Member
*

จำนวน ชม/ไม่พอใจ: +29/-83
Offline Offline

Gender: Male
Posts: 810



« Reply #3 on: 16 July 2009, 10:18:31 PM »

4. ผมว่า ใช้ Random องศาเอาก็ได้นะ หาเป้าได้ ก็ ยิงสุ่มๆในองศาจำกัด ไม่ให้ตรงเป้าเป๊ะๆ (อาจจะไว้ที่ 90% - 100%)
Logged
นายตาหวาน (Mr.Tawan)
Global Moderator
Hero Member
*****

จำนวน ชม/ไม่พอใจ: +61/-36
Offline Offline

Gender: Male
Posts: 1,590


« Reply #4 on: 16 July 2009, 11:19:53 PM »

FPS ไม่ค่อยคำนวนความเร็วกระสุนเท่าไหร่ assume ไปว่ายิงไปก็โดนพอดี หลบไม่พ้น Tongue

หรือว่าคุณ Penta จะทำเกมยิงธนูล่ะครับ ??
Logged

Are you feeling fine?
眠れない夜には君の幻が...
She said, "Loving you made me happy everyday"
Thaina
Approved Member
Hero Member
*

จำนวน ชม/ไม่พอใจ: +29/-83
Offline Offline

Gender: Male
Posts: 810



« Reply #5 on: 16 July 2009, 11:50:03 PM »

เพนแท็กซ์ทำเกมเครื่องบินครับ

เห็นบอกใช้กับพวกป้อมปืนที่เป็นศัตรู
Logged
Pages: [1]   Go Up
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!