﻿1
00:00:04,350 --> 00:00:04,760
‫สวัสดี

2
00:00:04,800 --> 00:00:05,190
‫ยินดีต้อนรับ.

3
00:00:05,190 --> 00:00:09,750
‫ในการบรรยายนี้ เราจะทำให้ตัวจับมีความน่าเชื่อถือมากขึ้น

4
00:00:09,750 --> 00:00:19,890
‫และเราจะทำให้เป็นไปได้ที่จะวางองค์ประกอบที่คว้าไว้เพื่อให้เราสามารถโยนมันทิ้งไปและโดยทั่วไปมีประโยชน์มากขึ้นเล็กน้อย

5
00:00:19,920 --> 00:00:21,870
‫มาดูวิธีการทำกัน

6
00:00:22,850 --> 00:00:35,990
‫เหตุผลที่เราไม่สามารถหยิบการ์กอยล์นี้ได้บ่อยครั้งก็เพราะว่าส่วนประกอบที่จำลองฟิสิกส์เพื่อประสิทธิภาพจะเข้าสู่โหมดสลีปเมื่อพวกมันหยุดนิ่งเป็นระยะเวลาหนึ่ง

7
00:00:35,990 --> 00:00:37,310
‫และนั่นคือสิ่งที่เราเห็น

8
00:00:37,310 --> 00:00:45,290
‫การจำลองฟิสิกส์ของการ์กอยล์นี้กำลังจะเข้าสู่โหมดสลีป และจะไม่ถูกปลุกเมื่อเราติดมันด้วยที่จับทางฟิสิกส์ของเรา

9
00:00:45,290 --> 00:00:51,400
‫ดังนั้นสิ่งที่เราต้องเรียนรู้ที่จะทำคือปลุกมันขึ้นมาเมื่อเราตีมันด้วยรอยทรงกลม

10
00:00:51,410 --> 00:00:56,420
‫ตอนนี้ ไปดูเอกสารประกอบเบื้องต้นของคุณที่เราเคยเห็นกัน

11
00:00:56,420 --> 00:01:03,260
‫องค์ประกอบดั้งเดิมของคุณคือสิ่งที่ส่งคืนโดยผลลัพธ์ Hit ของเรา แต่จริงๆ แล้วองค์ประกอบดั้งเดิมคืออะไร

12
00:01:03,440 --> 00:01:16,160
‫ดังนั้นในเอกสารประกอบจึงกล่าวไว้ว่าองค์ประกอบดั้งเดิมคือองค์ประกอบฉากที่มีหรือสร้างรูปทรงเรขาคณิตบางประเภทและแสดงผลหรือใช้เป็นข้อมูลการชนกัน

13
00:01:16,160 --> 00:01:21,770
‫โดยทั่วไปแล้ว องค์ประกอบดั้งเดิมคือสิ่งที่สามารถจำลองฟิสิกส์ได้

14
00:01:22,130 --> 00:01:27,830
‫ดังนั้นเราจึงสามารถคาดหวังว่าจะพบวิธีการจำลองทางฟิสิกส์ที่นี่

15
00:01:27,830 --> 00:01:32,030
‫และสิ่งที่ผมจะมองหาคือฟังก์ชันที่มีคีย์เวิร์ด wake อยู่ในนั้น

16
00:01:32,060 --> 00:01:37,820
‫เราจะตรวจสอบฟังก์ชันบางอย่างจนกว่าจะพบฟังก์ชันที่ระบุว่า Wake all ร่างกายที่แข็งกระด้าง

17
00:01:38,270 --> 00:01:43,610
‫วัตถุแข็งเป็นคำศัพท์ทางฟิสิกส์สำหรับวัตถุที่จำลองฟิสิกส์

18
00:01:43,610 --> 00:01:44,780
‫จึงเห็นว่ามีความเป็นโมฆะ

19
00:01:44,780 --> 00:01:46,700
‫ประเภทการส่งคืนไม่มีอาร์กิวเมนต์ใดๆ

20
00:01:46,700 --> 00:01:52,010
‫ดังนั้นเราควรเรียกสิ่งนี้ว่าเมื่อเราพยายามแนบมัน

21
00:01:52,010 --> 00:01:58,610
‫ดังนั้นถ้าเราไปคว้า CP ภายในคำสั่ง if เราไปถึงองค์ประกอบนี้แล้ว เราก็กำลังจะคว้ามัน

22
00:01:58,610 --> 00:02:04,550
‫สิ่งแรกที่เราต้องทำคือ เรามาสร้างตัวแปรเพื่อเก็บองค์ประกอบดั้งเดิมของคุณ

23
00:02:04,550 --> 00:02:17,990
‫ดังนั้นเราจะมีตัวชี้องค์ประกอบดั้งเดิมของคุณที่เรียกว่าชุดองค์ประกอบการตี ซึ่งเท่ากับองค์ประกอบการรับจุดของผลลัพธ์

24
00:02:18,530 --> 00:02:29,690
‫จากนั้นใช้ตัวชี้องค์ประกอบ Hit นั้น เราสามารถลูกศรปลุกวัตถุแข็งทั้งหมด จากนั้นใส่วงเล็บและเครื่องหมายอัฒภาคต่อท้าย

25
00:02:29,690 --> 00:02:35,900
‫ดังนั้นนี่ควรจะทำให้ส่วนประกอบนั้นเตะ ปลุกมันขึ้นมาเพื่อให้มันตอบสนองต่อการจัดการทางฟิสิกส์

26
00:02:35,930 --> 00:02:39,160
‫ตอนนี้เรามาแทนที่ตำแหน่งที่เราทำ Hit แล้ว

27
00:02:39,200 --> 00:02:49,460
‫อย่ารับส่วนประกอบในการเรียกที่จับฟิสิกส์ของเราเพื่อคว้าตำแหน่งส่วนประกอบเพราะตอนนี้เรามีตัวแปรสำหรับสิ่งนั้นแล้วมาคอมไพล์ใหม่เมื่อเสร็จแล้ว

28
00:02:49,460 --> 00:02:58,910
‫ไปข้างหน้าตีเล่นและปล่อยให้การ์กอยล์นั่งบนพื้นเล็กน้อยตอนนี้และปล่อยให้มันเข้านอนแล้วลองหยิบมันขึ้นมา

29
00:02:58,910 --> 00:03:05,120
‫และคุณจะสังเกตเห็นว่าเราไม่มีปัญหาในการหยิบมันขึ้นมา ปล่อยให้มันนอนราบกับพื้น อะไรก็ได้

30
00:03:05,120 --> 00:03:13,910
‫มันจะไม่เป็นไรและปลุกร่างกายที่แข็งทื่อของฟิสิกส์เหล่านั้น และเริ่มจำลองพวกมันเพื่อที่จะสามารถยกและคว้ามันได้

31
00:03:13,910 --> 00:03:23,300
‫ตอนนี้ คุณอาจสังเกตเห็นว่าขณะนี้เราไม่สามารถปล่อยที่จับฟิสิกส์ได้ ดังนั้นนั่นจะเป็นความท้าทายของคุณในการทำเช่นนี้ในฟังก์ชันการปลดปล่อย

32
00:03:23,360 --> 00:03:26,570
‫ดังนั้นคุณจะเรียกองค์ประกอบการปลดปล่อยบนที่จับฟิสิกส์นั้น

33
00:03:26,570 --> 00:03:29,660
‫นั่นคือฟังก์ชันที่มีอยู่ในตัวชี้ที่จับฟิสิกส์

34
00:03:29,840 --> 00:03:34,910
‫คุณจะต้องตรวจสอบก่อนว่าเรามีส่วนประกอบที่ถูกจับหรือไม่

35
00:03:34,910 --> 00:03:43,010
‫ดังนั้นหากคุณได้รับส่วนประกอบการคว้าที่ส่งคืนตัวชี้ไปยังส่วนประกอบการคว้า จุดนั้นจะถือเป็นโมฆะหากตัวจับฟิสิกส์ไม่ได้จับอะไรเลย

36
00:03:43,010 --> 00:03:48,530
‫ดังนั้นคุณสามารถใช้สิ่งนั้นเพื่อตรวจสอบว่าเรามีอะไรอยู่หรือไม่และปล่อยเฉพาะในกรณีที่เรากำลังคว้าอะไรบางอย่างอยู่

37
00:03:48,530 --> 00:03:53,090
‫และเป็นโบนัส คุณสามารถดูว่าเราตั้งเป้าหมายได้อีกครั้งหรือไม่

38
00:03:53,090 --> 00:03:58,070
‫เฉพาะในกรณีที่เรากำลังคว้าอะไรบางอย่าง แต่ดูวิดีโอและไปกันเลย

39
00:04:01,590 --> 00:04:02,470
‫ยินดีต้อนรับกลับ.

40
00:04:02,490 --> 00:04:06,090
‫เลยเข้าไปหยิบถ้วยกัน

41
00:04:06,230 --> 00:04:10,490
‫ไปที่ฟังก์ชั่นการปล่อยและลบบันทึกการวางจำหน่าย

42
00:04:10,500 --> 00:04:18,360
‫และในที่นี้เราจะใส่คำสั่ง if และเราจะบอกว่าถ้า และตอนนี้ เราจำเป็นต้องได้รับการจัดการทางฟิสิกส์ของเรา

43
00:04:18,360 --> 00:04:31,410
‫อย่างแรกเลย ให้คุณทำฟิสิกส์จัดการตัวชี้องค์ประกอบ ซึ่งเราจะเรียกการจัดการทางฟิสิกส์และตั้งค่าให้เท่ากับการจัดการทางฟิสิกส์

44
00:04:31,590 --> 00:04:40,770
‫แล้วเราจะบอกว่าถ้าตัวจัดการฟิสิกส์เท่ากับตัวชี้ว่าง เราต้องการไปข้างหน้าและกลับมาเพราะเราจะทำอะไรไม่ได้

45
00:04:40,770 --> 00:04:44,400
‫ปล่อยอะไรเลย

46
00:04:44,400 --> 00:04:52,650
‫ถ้าเราไม่มีการจัดการฟิสิกส์เลย เราต้องการตรวจสอบว่าขณะนี้เรากำลังถืออะไรกับการจัดการฟิสิกส์ของเราอยู่หรือไม่

47
00:04:52,650 --> 00:05:03,390
‫ดังนั้น ถ้า, ถ้า, ถ้าลูกศรจับทางฟิสิกส์ได้จับองค์ประกอบในวงเล็บไม่เท่ากับตัวชี้ null แล้วภายในเนื้อความของนี่ถ้าคำสั่งหมายความว่าเรามีบางอย่างที่จับได้อยู่ในขณะนี้

48
00:05:04,080 --> 00:05:17,730
‫ดีแล้ว เราจะทำส่วนประกอบการปล่อยลูกศรจัดการฟิสิกส์ ซึ่งกำลังจะปล่อยมันไปตามที่ชื่อจะแนะนำ

49
00:05:17,730 --> 00:05:24,450
‫และสิ่งหนึ่งที่ฉันไม่ได้ทำในโค้ดนี้ แต่น่าจะคุ้มค่าที่จะเพิ่มเข้าไปในโค้ดของคุณ ก่อนที่เราจะปล่อยส่วนประกอบ

50
00:05:24,450 --> 00:05:32,160
‫มันคุ้มค่าที่จะดำเนินการต่อและเรียกรับส่วนประกอบแล้วเพิ่มส่วนที่อ่อนแอทั้งหมดลงไปเหมือนที่เราทำ

51
00:05:32,160 --> 00:05:36,180
‫ก่อนที่เราจะคว้าส่วนประกอบ

52
00:05:36,180 --> 00:05:41,520
‫เพราะถ้าเราปลูกเป็นส่วนประกอบและไม่เคลื่อนไหวสักระยะหนึ่งก็อาจหลับไปได้เช่นกัน

53
00:05:41,520 --> 00:05:43,470
‫แล้วปล่อยไปก็ไม่เกิดผลอะไร

54
00:05:43,470 --> 00:05:56,790
‫ดังนั้นสิ่งนี้จึงคุ้มค่าที่จะเพิ่มเพราะมันจะจับกรณีมุมนั้นและเราไม่ต้องการกำหนดตำแหน่งเป้าหมายในขีดถ้าเรามีที่จับทางฟิสิกส์ที่ไม่ได้คว้าอะไรเลย

55
00:05:56,790 --> 00:06:02,190
‫ในองค์ประกอบติ๊กของเรา เราจะใส่คำสั่ง if ที่จะเหมือนกันทุกประการ

56
00:06:02,190 --> 00:06:11,730
‫จะบอกว่าลูกศรจับฟิสิกส์ จับองค์ประกอบไม่เท่ากับตัวชี้ค่าว่าง

57
00:06:11,760 --> 00:06:22,380
‫จากนั้นในเนื้อความของคำสั่ง if เราจะใส่การคำนวณตำแหน่งเป้าหมายและตำแหน่งเป้าหมายที่ตั้งไว้ในการจัดการทางฟิสิกส์นั้นด้วย

58
00:06:22,380 --> 00:06:24,330
‫ลองคอมไพล์ใหม่แล้วลองทำดู

59
00:06:24,330 --> 00:06:26,070
‫ไปกดเล่นกันได้เลย

60
00:06:26,970 --> 00:06:28,920
‫และลองคว้าการ์กอยล์

61
00:06:28,920 --> 00:06:33,420
‫แล้วถ้าฉันปล่อยเมาส์ มันก็ตกลงไปที่พื้นอีกครั้ง

62
00:06:33,420 --> 00:06:39,000
‫และดูเหมือนว่าจะไม่ได้รับผลกระทบจากการตื่นหรือหลับ

63
00:06:39,000 --> 00:06:43,610
‫ดูเหมือนว่าเราจะปลุกมันขึ้นมาไม่ว่าเราจะหยิบมันขึ้นมาทุกครั้งหรือไม่ก็ตาม

64
00:06:43,620 --> 00:06:46,950
‫ดูเหมือนว่าจะทำงานได้ตรงตามที่ฉันต้องการ

65
00:06:46,950 --> 00:06:47,910
‫มันไม่ติดขัด

66
00:06:47,910 --> 00:06:49,950
‫มันรู้สึกถูกต้อง

67
00:06:49,980 --> 00:06:56,520
‫สิ่งเดียวที่แปลกเล็กน้อยคือเมื่อฉันเดินเข้าไปในนั้น คุณจะเห็นว่ามันกระวนกระวายแปลกๆ

68
00:06:56,520 --> 00:06:59,550
‫เพราะมันชนกับเครื่องเล่นจริงๆ

69
00:06:59,550 --> 00:07:06,840
‫ตอนนี้ เราสามารถแก้ไขปัญหานี้เพียงเล็กน้อยโดยไปที่การ์กอยล์ของเราในบานหน้าต่างรายละเอียด เลือกหมวดหมู่ทั้งหมด

70
00:07:06,840 --> 00:07:15,510
‫เลื่อนลงมาที่การชนกัน และดูการตั้งค่าล่วงหน้าของการชนกันแบบกำหนดเองของเราและลงในการตอบสนองของออบเจกต์

71
00:07:15,510 --> 00:07:17,760
‫เราจะเห็นข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ในภายหลัง

72
00:07:17,760 --> 00:07:20,910
‫มีการตอบสนองวัตถุจำนำ

73
00:07:20,910 --> 00:07:25,650
‫โดยพื้นฐานแล้วจะบอกว่า ฉันควรจะชนกับเบี้ยหรืออะไร?

74
00:07:25,680 --> 00:07:27,570
‫การตอบสนองของฉันควรเป็นอย่างไรต่อจำนำ?

75
00:07:27,570 --> 00:07:31,740
‫ผมจะตั้งให้ทับซ้อนกับตัวจำนำ

76
00:07:31,740 --> 00:07:36,690
‫และนั่นหมายความว่าถ้ามันชนกับฉัน มันก็จะไม่สนใจมันเลย

77
00:07:36,690 --> 00:07:43,890
‫แล้วอีกอย่างที่เราต้องทำคือ เพราะจริงๆ แล้ว มันประกอบด้วยสแตติกเมช 2 อัน พวกมันมีการตั้งค่าการชนกันของมันเอง

78
00:07:43,890 --> 00:07:46,320
‫ฉันจะลงไปที่เนินดิน

79
00:07:46,320 --> 00:07:48,720
‫นั่นคือสิ่งที่อยู่ใต้การ์กอยล์

80
00:07:49,110 --> 00:07:52,350
‫และตรงนี้ ผมจะลดความซับซ้อนของสิ่งต่างๆ

81
00:07:52,350 --> 00:07:57,480
‫ฉันจะทำส่วนเนินดินไม่ให้ชนกัน

82
00:07:57,490 --> 00:08:00,300
‫ดังนั้นฉันจะเปลี่ยนเป็นค่าที่ตั้งไว้ล่วงหน้าไม่มีการชนกัน

83
00:08:00,510 --> 00:08:05,250
‫จากนั้นฉันจะไปข้างหน้าและตีเล่นคว้าการ์กอยล์จากพื้น

84
00:08:05,250 --> 00:08:09,540
‫และตอนนี้ คุณจะเห็นได้ว่าตอนที่ฉันวิ่งด้วย ไม่มีข้อผิดพลาดแปลกๆ

85
00:08:09,540 --> 00:08:14,730
‫ใดๆ เลย เพราะมันไม่ได้พยายามชนกับตาข่ายของผู้เล่น

86
00:08:14,760 --> 00:08:15,540
‫สิ่งที่ดี

87
00:08:15,540 --> 00:08:23,790
‫ในการบรรยายครั้งนี้ เราได้เรียนรู้วิธีทำให้การคว้านมีความน่าเชื่อถือมากขึ้น และเราจะปล่อยส่วนประกอบการคว้านได้อย่างไร

88
00:08:23,790 --> 00:08:24,510
‫สิ่งที่ดี

89
00:08:24,510 --> 00:08:26,190
‫เจอกันใหม่ตอนหน้าค่ะ

