‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะเห็นสิ่งต่าง ๆ จากมุมมองของผู้เล่น
‫เราจะยึดวิวพอร์ตของผู้เล่น ตำแหน่งและการหมุนของกล้องเป็นหลัก เพื่อที่ว่าเมื่อเรากดปุ่มทริกเกอร์
‫เราสามารถวาดกล้องดีบั๊กได้
‫พวกตัวแดงๆ พวกนี้ กล้องกล่องแดงตัวเล็กๆ ที่แสดงให้เราเห็นว่าวิวพอร์ตนั้นอยู่ที่ไหน
‫และเราสามารถยืนยันได้ว่า
‫จากนั้นเราก็สามารถใช้สิ่งนั้นในภายหลังสำหรับ raytracing สำหรับปืน
‫มาดำดิ่งและดูการกระทำทั้งหมดกัน
‫ขอเริ่มการบรรยายนี้ด้วยคำถาม
‫ดังนั้น หากคุณกำลังเล็งผ่านวิวพอร์ตของคุณในลักษณะนี้ และคุณกำลังพยายามจัดแนวตรงกลางหน้าจอของคุณกับศูนย์บัญชาการ
‫D บน D หรือศูนย์บัญชาการศูนย์ ไม่ว่ามันจะเป็นอะไรก็ตาม
‫และฉันตั้งเป้าหมายว่าฉันจะมุ่งไปที่อะไร
‫ฉันคาดหวังว่าจะโดนอะไร?
‫คุณอาจบอกว่า อืม ฉันคาดหวังว่ามันจะถึงศูนย์นั้น
‫แซม นั่นดูเหมือนจะเป็นคำตอบที่ชัดเจน
‫นั่นไม่จำเป็นว่าคุณจะต้องตีอะไร ขึ้นอยู่กับว่าคุณทำสิ่งต่าง ๆ อย่างไร คุณทำการหล่อใหม่อย่างไร
‫มาดูกลยุทธ์ที่เรามีในการหล่อใหม่กัน
‫สิ่งที่ชัดเจนที่สุดคือคุณพูดว่า เรากำลังยิงปืนออกไป ดังนั้นเราจะทำการหล่อกระบอกปืนใหม่
‫หรืออีกอย่าง การตั้งค่านี้ ซึ่งค่อนข้างหยาบมาก โดยพื้นฐานแล้ว เป็นการจัดตั้งบุคคลที่สามของเรา
‫เรามีกล้องกลับมาที่นี่
‫เรามีตัวละคร เรามีปืน
‫และเขากำลังพยายามยิงใส่ตัวละครเป้าหมายอื่นที่นี่
‫อย่างแรกเลย เราเอาปืนออกมาทำใหม่อย่างบริสุทธิ์ใจ
‫อาจพลาดเพราะกล้องของเราไม่ได้ชี้ไปที่ที่ปืนกำลังชี้ ไม่จำเป็น
‫แม้ว่าพวกมันอาจจะชี้ไปในทิศทางเดียวกัน แต่ก็เบี่ยงเบนจากกันเล็กน้อย
‫ดังนั้นพวกเขาจึงไม่จำเป็นต้องตีสิ่งเดียวกัน
‫แต่คุณอาจเลือกว่าต้องการแคสต์ใหม่จากกล้องแทน
‫นั่นหมายความว่าสิ่งที่กล้องกำลังมองอยู่จะเป็นสิ่งที่ถูกโจมตีและโดยทั่วไปแล้วจะรู้สึกเป็นธรรมชาติมากขึ้นในเกมบุคคลที่สาม
‫เมื่อคุณอยู่ในเกมมุมมองบุคคลที่หนึ่ง สิ่งต่างๆ จะเข้ามาใกล้ขึ้นเล็กน้อย เพราะบ่อยครั้งที่คุณอยู่ใกล้ถังเบียร์มาก
‫แต่แม้ในเกมมุมมองบุคคลที่หนึ่ง กฎนี้มักจะเป็นเช่นนั้น
‫คุณคงไม่อยากเคลื่อนที่ไปรอบๆ บริเวณที่จุดเล็งอยู่บนหน้าจอ
‫โดยทั่วไปแล้ว คุณจะมี UI เล็กๆ น้อยๆ ที่วางซ้อนไว้ตรงกลางหน้าจอ และนั่นคือที่ที่คุณจะเล็งลง
‫นั่นคือเหตุผลที่เรามักจะทำการฉายรังสีด้วยอาวุธที่หล่อด้วยรังสีตามวิวพอร์ตนี้
‫โชคดีที่มีวิธีให้เราได้วิวพอร์ตนี้ และเราทำจากคอนโทรลเลอร์ เราจะได้วิวพอร์ตของคอนโทรลเลอร์
‫นั่นทำให้เราต้องไปที่ตัวละคร หาคอนโทรลเลอร์ของตัวละคร จากนั้นค้นหาตำแหน่งวิวพอร์ตและการหมุนของมัน
‫และสิ่งที่เราจะทำในการบรรยายนี้คือลองนึกภาพและยืนยันว่าตำแหน่งและการหมุนของวิวพอร์ตนั้นเป็นสิ่งที่เราคาดหวัง
‫และเราจะทำอย่างนั้นโดยวาดตัวช่วยดีบั๊ก
‫ตอนนี้ตัวช่วยการดีบักอยู่ในไฟล์ส่วนหัวและชื่อไฟล์ส่วนหัวเป็นการดีบัก
‫ผู้ช่วย
‫ตลกดีที่ฉันเชื่อหรือวาดวาดผู้ช่วยดีบัก
‫ที่หนึ่ง
‫และถ้าเราไปดู F 12 นี้เพื่อนำทางไปยังไฟล์ส่วนหัว ถ้าคุณมีมันอยู่แล้วในไฟล์รวมของคุณ
‫เราจะมองหากล้องที่เรียกว่า Camera Draw debug camera
‫และนี่ดึงบางอย่างที่ดูเหมือนไดอะแกรมของฉันตรงนี้ เป็นรูปสามเหลี่ยมหรือรูจมูกนิดหน่อยที่เราสามารถใช้ได้
‫แล้วจะเอาอะไรเข้าไป?
‫มันจะนำตำแหน่งของกล้องตัวนั้นไปในโลก การหมุนของกล้องดังกล่าว
‫ดังนั้นสถานที่ การหมุน มุมมอง
‫เราจะตั้งค่านั้นอาจเป็นค่าเริ่มต้นเช่น 90 องศา
‫มีมาตราส่วน มีค่าเริ่มต้นของสี
‫สิ่งเหล่านี้ผิดนัดทั้งหมด
‫ดังนั้นเราจึงสามารถใช้ค่าเริ่มต้นนั้นได้
‫เรามาลองวาดกล้องดีบั๊กที่นี่ในปืนของฉัน และเราจะใส่มันในวิธีทริกเกอร์แบบดึง เพราะนั่นเป็นเหตุผลที่เรากำลังทำงานของเรา
‫มันต้องการอย่างแรกเลยมันคืออะไร?
‫มันเป็นโลกใหม่
‫ดังนั้นเราจึงได้โลกของเรา
‫แต่เราต้องวาดสิ่งต่อไปที่จะเป็นที่ตั้ง
‫ขอแค่ตำแหน่งนักแสดงในขณะนี้และทำการหมุนเวียนนักแสดงด้วย
‫แล้วสิ่งสุดท้ายที่เราต้องการคือขอบเขตการมองเห็น
‫ลองไปที่มุมมอง 90 องศา ซึ่งเป็นเพียงสิ่งสุ่มที่นั่น และเราสามารถดำเนินการต่อและรวบรวม และดูว่าสิ่งนี้ปรากฏขึ้นหรือไม่
‫แล้วมาตีกันเล่นๆตีกัน
‫ปุ่มทริกเกอร์
‫ฉันไม่เห็นอะไรนี่
‫ลองทำ F 8 และดูว่าเราจะเข้าใกล้ได้ไหม
‫ยังไม่แสดงกล้องชนิดใดในนี้
‫ฉันสงสัยว่ามันเล็กมากจริงหรือ
‫อีกตัวเลือกหนึ่งที่นี่คือ เราอาจต้องการมีเส้นต่อเนื่อง
‫นั่นหมายความว่าเราจำเป็นต้องระบุทุกอย่างใน C++ เพื่อให้เราสามารถตั้งค่ามาตราส่วนของเราเป็นหนึ่งได้
‫เราอาจเพิ่มเป็นสองส่วนก็ได้ เผื่อว่าขนาดที่เป็นปัญหา
‫เราสามารถเลือกสีที่มองเห็นได้ชัดเจนขึ้น อาจจะเป็นสีแดง
‫ดังนั้นสี F, ทวิภาค, ทวิภาค, แดง
‫จากนั้นเราก็สามารถลองให้เส้นที่คงเส้นคงวาเป็นจริงและลองใช้เส้นนั้นเพื่อวัดขนาด
‫เลยเรียบเรียงใหม่
‫และกระโดดลงเล่น
‫และเราไปที่นั่น
‫เราตี.
‫ทริกเกอร์
‫และคุณจะเห็นว่ามันแสดงกล่องกล้องเล็กๆ ที่เรากดไก และการหมุนและตำแหน่งถูกกำหนดโดยปืนและตำแหน่งและการหมุน
‫ตอนนี้เราเลยอยากลองรับวิวพอร์ตแทน
‫อย่างที่บอกไปแล้วนี่จะอยู่บนคอนโทรลเลอร์ของเรา
‫ลองดูที่ Controller H และอีกครั้ง เราต้องการหนึ่งในเฟรมเวิร์กของเกม และเราจะมองหาวิวพอร์ตที่นี่
‫ฉันขอโทษ?
‫ที่จริงแล้ว มุมมองคือคำที่เรากำลังมองหาอยู่ และมีอยู่สองสามคำที่นี่
‫ให้นักแสดงมีมุมมองที่จะมองผ่านสายตาของนักแสดง
‫แต่จริงๆ แล้วเราต้องการเล่นมุมมอง ซึ่งสำหรับผู้ควบคุมดวงตาจะใช้ดวงตา แต่สำหรับผู้เล่นจะใช้กล้องของผู้เล่น
‫นั่นคือสิ่งที่เราต้องการ
‫เราต้องการรับมุมมองผู้เล่น
‫แต่ก่อนอื่น เราต้องจับคอนโทรลเลอร์นั้นให้ได้ก่อน
‫และวิธีที่จะทำคือ อย่างแรกเลย เราต้องทำให้เจ้าของของเราจำไว้ว่าเมื่อเราเปิดตัวละครยิง
‫CP และเราลงไปหรือขึ้นไปเล่น Begin ของเรา คุณจะเห็นว่าเรากำลังตั้งค่าปืน เจ้าของที่จะเป็นตัวละคร
‫นั่นหมายความว่าในปืนเราสามารถไปทางอื่นได้
‫เราสามารถพูดได้ว่า ได้เจ้าของ และนั่นจะทำให้เรากลายเป็นตัวละครของมือปืน
‫ตอนนี้คงไม่รู้ว่าเป็นตัวละครชู้ตติ้ง
‫รู้แค่ว่าเป็นนักแสดง
‫ดังนั้นเราจะต้องทำแคสต์ที่นี่
‫ดังนั้นเราจะคัดเลือกตัวละคร A Shooter
‫และที่จริงแล้ว เราไม่จำเป็นต้องรู้อะไรมากเท่ากับความจริงที่ว่ามันเป็นตัวละครในแนวยิง
‫ก็เพียงพอแล้วที่จะรู้ว่ามันคือเบี้ย และเบี้ยใดๆ ก็สามารถครอบครองปืนนี้ได้ แม้ว่าจะไม่ใช่ตัวละครของนักกีฬาก็ตาม
‫ดังนั้นพยายามและไม่เจาะจงให้มากที่สุด
‫ทำไมมันถึงต้องจำนำด้วยล่ะ?
‫มันจะต้องจำนำเพราะเราต้องได้ผู้ควบคุมและจำนำเท่านั้นที่จะครอบครองโดยผู้ควบคุม
‫ลองใส่สิ่งนี้ลงในตัวแปร
‫มันจะเป็น -- ดาวแล้วเจ้าของ -- จะเป็นชื่อของตัวแปร
‫จากนั้นเราต้องตรวจสอบว่านี่ไม่ใช่โมฆะ
‫และผมจะทำสิ่งนี้ด้วยเส้นซับเดียวที่บอกว่าถ้ามันเป็นโมฆะ เรากลับก่อนกำหนดจากทริกเกอร์พูลของเรา
‫เพื่อที่เราจะได้ไม่ต้องเสี่ยงกับการพยายามเรียกอะไรก็ตามด้วยตัวชี้ค่าว่าง
‫จากนั้นเราก็สามารถเป็นเจ้าของโรงรับจำนำ รับตัวควบคุม และเราต้องการบันทึกไว้ในตัวควบคุม A
‫สตาร์ และคนนี้สามารถเป็นเจ้าของได้
‫คอนโทรลเลอร์
‫เช่นนั้น
‫และอีกครั้ง เราต้องการตรวจสอบว่านี่ไม่ใช่ค่าว่างเพราะเราจะเรียกใช้เมธอดในนั้น
‫และเราไม่สามารถเรียกเมธอดบนพอยน์เตอร์ null ได้
‫มันทำให้ไม่จริง ไม่มีความสุข และผิดพลาด
‫นี่คือจุดที่เราสามารถควบคุมเจ้าของของเราได้แล้ว
‫และเราน่าจะเรียกกันว่าจุดเล่นจุดนั้นได้
‫ความท้าทายสำหรับคุณในการกำหนดตำแหน่งและการหมุนนั้นมาถึงแล้ว
‫การใช้ฟังก์ชันใหม่นั้น คุณสามารถดูลายเซ็นได้
‫อีกครั้งเราไปที่ Controller H ก่อนไฟล์และดูที่เล่นมุมมอง
‫ลองดูว่าจากลายเซ็นนี้ คุณสามารถหาวิธีใช้เพื่อรับตำแหน่งและการหมุนที่เราต้องการส่งต่อไปยังผู้ช่วยดีบักการวาดของเราหรือไม่
‫แล้วคุณจะจำได้ว่านี่คือการใช้พารามิเตอร์
‫ดังนั้นให้แก้ไขพารามิเตอร์ของคุณ วาดกล้องดีบั๊กโดยใช้ข้อมูลโค้ดที่เราเพิ่งเขียนและทดสอบในวิวพอร์ต
‫ไปและคลิกปุ่มทริกเกอร์สองสามครั้งในสถานที่ต่าง ๆ และดูว่ากล้องนั้นจบลงที่ใดแสดงวิดีโอหยุดชั่วคราวและไปกันเลย
‫ตกลง.
‫ยินดีต้อนรับกลับ.
‫จึงได้เล่นมุมมอง
‫ฉันจะคัดลอกชื่อของเมธอดและนำมาไว้ที่นี่เพราะเป็นพารามิเตอร์ขาออก
‫ฉันจะต้องประกาศตัวแปรก่อนที่ฉันต้องการให้ค่าเหล่านั้นเข้าไป
‫ฉันมีตำแหน่งเวกเตอร์ F
‫เรามีการหมุน F rotator
‫และเราต้องการส่งต่อสิ่งเหล่านี้เป็นข้อโต้แย้ง
‫ขอผมแก้ไขการเยื้องตรงนั้นสักหน่อย
‫และเราจะผ่านสถานที่ การหมุน
‫และเรารู้ว่าเนื่องจากเพิ่งมีการประกาศไว้ที่นี่เมื่ออ่านข้อความนี้ เราจึงเดาได้ว่าตอนนี้ไม่มีพารามิเตอร์แล้ว
‫แม้ว่า C++ จะไม่ได้มีประโยชน์ด้านไวยากรณ์ในเรื่องนี้ก็ตาม
‫จากนั้นเราสามารถส่งผ่านตำแหน่งนี้แทนตำแหน่งของนักแสดง และเราสามารถส่งการหมุนนี้แทนการหมุนที่แอ็คทีฟไปยังกล้องดีบักการวาดของเรา
‫และเราสามารถดำเนินการสร้างคอมไพล์นั้นและทดลองใช้ในตัวแก้ไขได้
‫ดูเหมือนว่าการรวบรวมจะเสร็จสมบูรณ์
‫ไปเล่นกันเถอะ
‫และเมื่อฉันกดทริกเกอร์ คุณจะเห็นกล้องปรากฏขึ้นเหนือมุมมองของฉัน
‫นั่นเป็นสัญญาณที่ดี
‫ถ้าฉันถอยออกมาอีกนิด คุณจะเห็นว่าคุณไปที่นั่น
‫เรามีกล้องเหล่านี้ที่ชี้ไปในทิศทางที่ถูกต้องจากที่ที่ฉันเพิ่งมองไป
‫คุณคงนึกภาพออกว่าเราจะยิงรังสีออกมาจากกล้องตัวนั้นที่ส่วนท้ายของกล้องได้อย่างไร
‫แล้วลองไปชนบางอย่างที่ฉันกำลังดูอยู่ตอนนั้น
‫และนั่นคือสิ่งที่เราจะทำในการบรรยายครั้งต่อไป
‫แล้วเจอกัน.