﻿1
00:00:04,130 --> 00:00:10,460
‫لذا فإن الهدف من هذا الفيديو هو الحصول على مقذوفات يتم إطلاقها بالفعل عبر الهواء

2
00:00:10,460 --> 00:00:11,930
‫وتتصرف كما ينبغي.

3
00:00:12,020 --> 00:00:13,520
‫مرحبًا بعودتك.

4
00:00:13,550 --> 00:00:19,430
‫في هذا الفيديو ، نحن مهتمون بجعل مقذوفتنا تتصرف في الواقع كقذيفة وتتحرك.

5
00:00:19,610 --> 00:00:22,040
‫الآن ، هناك طرق مختلفة للتعامل مع هذا.

6
00:00:22,070 --> 00:00:28,220
‫إحدى الطرق هي تحديد موقع ودوران المقذوف يدويًا بأنفسنا.

7
00:00:28,250 --> 00:00:33,680
‫الآن ، سيتطلب ذلك منا بشكل عام إجراء التحديث في كل إطار ، لذلك من المحتمل أن نضع هذا

8
00:00:33,680 --> 00:00:34,940
‫في وظيفة التجزئة.

9
00:00:35,210 --> 00:00:41,810
‫طريقة أخرى هي ببساطة إضافة دفعة للقذيفة والسماح لمحرك الفيزياء بالسيطرة.

10
00:00:41,900 --> 00:00:48,440
‫في الأساس ، نحن نطبق قوة ونطلق تلك القذيفة ونترك الجاذبية تقوم بعملها ،

11
00:00:48,440 --> 00:00:51,380
‫وسوف تطير المقذوفة في الهواء.

12
00:00:51,410 --> 00:00:55,310
‫الآن ، هناك طريقة أخرى تتمثل في استخدام مكون الحركة.

13
00:00:55,340 --> 00:01:00,560
‫الآن ، هذا نوع خاص من المكونات نضيفه إلى فئة المقذوفات الخاصة بنا.

14
00:01:00,560 --> 00:01:06,230
‫وبعد تحديد بعض المعلمات على مكون الحركة ، سيتعامل عنصر الحركة

15
00:01:06,230 --> 00:01:08,060
‫مع حركة الممثل.

16
00:01:08,090 --> 00:01:15,860
‫الآن يحدث أن Unreal Engine لديه نوع من المكونات المدمجة المصممة خصيصًا للمقذوفات.

17
00:01:15,860 --> 00:01:20,210
‫لذلك يستفيد هذا من بعض الميزات المضمنة في Unreal Engine.

18
00:01:20,210 --> 00:01:26,120
‫ومن خلال القيام بذلك ، نسمح لمكون الحركة بالتعامل مع الحركة لنا بناءً على الإعدادات التي

19
00:01:26,120 --> 00:01:27,020
‫نقدمها.

20
00:01:27,020 --> 00:01:29,360
‫إذن هذه هي الطريقة التي سنستخدمها.

21
00:01:29,360 --> 00:01:35,750
‫لذلك نود إضافة عنصر حركة مقذوف إلى فئة المقذوف لدينا ، وهذا ما سيتعامل

22
00:01:35,750 --> 00:01:38,690
‫مع حركة الكائن المقذوف.

23
00:01:38,690 --> 00:01:45,440
‫لذلك عندما ننتج قذيفة في العالم ، يمكن إعداد عنصر حركة المقذوف الذي ينتمي إلى فئة

24
00:01:45,440 --> 00:01:52,190
‫المقذوفات وتخصيصه بناءً على المتغيرات في فئة حركة المقذوف التي حددناها.

25
00:01:52,220 --> 00:01:58,340
‫سنقوم الآن بتعيين اثنين من هؤلاء ، مثل سرعته الأولية وسرعته القصوى ومكون حركة المقذوف

26
00:01:58,340 --> 00:02:02,750
‫، سوف يقوم في الواقع بتحريك المقذوف في العالم بالنسبة لنا.

27
00:02:02,780 --> 00:02:06,290
‫الآن ، ها هي صفحة التوثيق غير الواقعية للمحرك.

28
00:02:06,290 --> 00:02:07,940
‫مكون حركة المقذوفات.

29
00:02:07,940 --> 00:02:13,130
‫هذا هو المكون الذي نهتم به وسترى أنه يقول أن مكون حركة المقذوف

30
00:02:13,130 --> 00:02:16,700
‫يقوم بتحديث موضع مكون آخر أثناء تحديده.

31
00:02:16,700 --> 00:02:19,340
‫بشكل افتراضي ، سينقل مكون المسار.

32
00:02:19,370 --> 00:02:20,900
‫الآن ها هو التضمين.

33
00:02:20,900 --> 00:02:26,060
‫وإذا واصلت التمرير لأسفل ، فسترى بعض المتغيرات التي يمكن تعيينها على مكون

34
00:02:26,060 --> 00:02:26,810
‫الحركة.

35
00:02:26,810 --> 00:02:30,740
‫لذا قم بالتمرير خلال هذا وإلقاء نظرة وشاهد ما هي الخيارات.

36
00:02:30,770 --> 00:02:36,770
‫نضيف الآن مكون حركة مقذوف إلى صفنا بنفس الطريقة التي نضيف بها أي مكون آخر ، مما يعني أنك

37
00:02:36,770 --> 00:02:39,350
‫تعرف بالفعل كيفية القيام بذلك.

38
00:02:39,350 --> 00:02:45,980
‫لذا فإن التحدي الخاص بك هو الذهاب إلى فئة المقذوفات وإضافة متغير مؤشر مكون حركة المقذوف

39
00:02:45,980 --> 00:02:49,310
‫وفضح هذا بجعله مرئيًا في أي مكان.

40
00:02:49,310 --> 00:02:54,140
‫وبهذه الطريقة يمكننا بسهولة تعديل مكون حركة المقذوف من داخل المخططات.

41
00:02:54,150 --> 00:02:59,560
‫أنت الآن بصدد إنشاءه في منشئ المقذوف باستخدام إنشاء كائن فرعي افتراضي.

42
00:02:59,570 --> 00:03:05,900
‫لا تنس تضمين الرأس المناسب وتعيين السرعة الأولية ومتغيرات السرعة القصوى لمكون حركة

43
00:03:05,900 --> 00:03:06,920
‫المقذوف.

44
00:03:06,920 --> 00:03:12,650
‫اختر الآن القيم الخاصة بك لهذه الأشياء وقم بتعيينها في المنشئ ثم قم بتشغيل اللعبة.

45
00:03:12,650 --> 00:03:18,530
‫ستقوم بضبط السرعة الأولية والسرعة القصوى في لوحة التفاصيل عن طريق تحديد المكون

46
00:03:18,530 --> 00:03:19,790
‫في مخطط المقذوف.

47
00:03:19,790 --> 00:03:25,910
‫وسيمنحك هذا القليل من الخبرة في تعديل المعلمات والتجريب كمطور.

48
00:03:25,910 --> 00:03:30,080
‫لذا أوقف الفيديو مؤقتًا وأنشئ مكون حركة المقذوف الآن.

49
00:03:32,900 --> 00:03:33,180
‫تمام.

50
00:03:33,230 --> 00:03:39,380
‫لذا فأنا هنا في مقذوف H وربما أضفت المكون الخاص بك في القسم الخاص.

51
00:03:39,380 --> 00:03:41,780
‫لذا إذا فعلت ذلك ، فلديك الغرائز الصحيحة.

52
00:03:41,780 --> 00:03:43,730
‫سنجعل هذا متغيرًا خاصًا.

53
00:03:43,730 --> 00:03:44,180
‫حسنا.

54
00:03:44,180 --> 00:03:48,040
‫إذا لم تقم بذلك ، فيمكنك نقله بسهولة إلى القسم الخاص إذا كنت ترغب في ذلك.

55
00:03:48,050 --> 00:03:54,560
‫الآن ، سيكون هذا مكون حركة مقذوف U ، وهذا مؤشر.

56
00:03:54,560 --> 00:03:58,610
‫ويمكننا ببساطة تسمية عنصر حركة المقذوف هذا.

57
00:03:58,760 --> 00:04:05,300
‫الآن ، سأقوم بإعطاء هذه الخاصية U وببساطة سأجعلها مرئية في أي مكان.

58
00:04:06,020 --> 00:04:08,210
‫الآن ، ربما أعطيته فئة.

59
00:04:08,210 --> 00:04:13,130
‫إذا لم يكن الأمر كذلك ، فلا بأس بذلك تمامًا ، لكنني سأعطيها فئة وأسميها حركة.

60
00:04:13,130 --> 00:04:15,650
‫لذلك لدينا عنصر حركة المقذوف.

61
00:04:15,650 --> 00:04:20,660
‫سأترك الإعلان الأمامي وأرى ما إذا كان بإمكاني الابتعاد عن التجميع الآن

62
00:04:20,660 --> 00:04:24,290
‫هنا في CP المقذوف ، وسأقوم بتضمين ملف الرأس.

63
00:04:24,290 --> 00:04:31,340
‫لذا بالعودة إلى صفحة التوثيق ، سأقوم بنسخ هذا التضمين ولصقه ببساطة هنا في قذيفة.

64
00:04:31,340 --> 00:04:34,250
‫والآن أنا جاهز لبناء المكون الخاص بي.

65
00:04:34,250 --> 00:04:42,440
‫لذلك سأقول مكون حركة المقذوف وسأستخدم إنشاء كائن فرعي افتراضي

66
00:04:42,440 --> 00:04:48,140
‫والنوع سيكون مكون حركة المقذوف.

67
00:04:48,470 --> 00:04:55,760
‫وبالنسبة للنص ، سأقوم ببساطة بتسمية عنصر حركة المقذوف هذا تمامًا مثل هذا.

68
00:04:55,760 --> 00:04:59,300
‫هناك الفاصلة المنقوطة الخاصة بي وهناك لدينا.

69
00:04:59,330 --> 00:05:07,850
‫الآن وفقًا للتعليمات ، سنقوم بتعيين حركة المقذوف ، والسرعة القصوى للمكون

70
00:05:07,850 --> 00:05:14,810
‫، وسأعطي هذا سرعة أولية ، على سبيل المثال ، 1300 فهرنهايت.

71
00:05:14,810 --> 00:05:17,600
‫القيمة الصحيحة.

72
00:05:17,600 --> 00:05:25,490
‫الآن سأقوم بتعيين السرعة الأولية لمكون حركة المقذوف ، وسأضبطها على نفس القيمة.

73
00:05:25,910 --> 00:05:31,190
‫لذا فإن السرعة الأولية ستكون مدى سرعة مكون المقذوف عند بدء تشغيله.

74
00:05:31,190 --> 00:05:33,710
‫وبالطبع ، لن تتجاوز السرعة القصوى أبدًا.

75
00:05:33,860 --> 00:05:35,750
‫دعنا نمضي قدمًا ونجمع هذا.

76
00:05:36,050 --> 00:05:42,200
‫حسنًا ، لقد تلقيت خطأ في التجميع وإذا صعدت سأرى أنها تشير إلى المقذوف h.

77
00:05:42,350 --> 00:05:47,240
‫لنعد إلى المقذوف H وهو مقذوف H 27.

78
00:05:47,240 --> 00:05:51,020
‫إنه يشير إلى السطر 27 وهذا هو هذا الخط هنا.

79
00:05:51,140 --> 00:05:56,090
‫ونحصل على عنصر حركة المقذوف هذا ليس عضوًا في مقذوف.

80
00:05:56,120 --> 00:05:59,990
‫تذكر ، كان هذا هو نوع الخطأ الذي رأيناه عندما لم نعلن إعادة التوجيه.

81
00:05:59,990 --> 00:06:06,590
‫لذلك يمكننا بسهولة إعادة توجيه إعلان هذا باستخدام الكلمة الأساسية للفصل وإعادة التجميع مرة أخرى ونحصل على

82
00:06:06,590 --> 00:06:07,400
‫تجميع ناجح.

83
00:06:07,400 --> 00:06:12,830
‫مرة أخرى ، هذه هي الطريقة التي يمكننا بها معرفة ما إذا كان مكونًا معينًا يتم تضمينه افتراضيًا أم لا.

84
00:06:12,830 --> 00:06:17,270
‫ورأينا أن هذا ليس كذلك مع تجميع ناجح.

85
00:06:17,270 --> 00:06:18,890
‫لنعد إلى المحرر.

86
00:06:19,280 --> 00:06:26,030
‫حسنًا ، لقد عدت إلى المحرر وسأذهب إلى المخططات والممثلين وهنا قذيفة BFP.

87
00:06:26,300 --> 00:06:28,190
‫حتى هنا NP قذيفة.

88
00:06:28,190 --> 00:06:32,090
‫الآن أرى أن عنصر حركة المقذوفات موجود هنا.

89
00:06:32,390 --> 00:06:38,870
‫وفي لوحة التفاصيل ، يمكنك أن ترى أسفل المقذوف لدينا السرعة الأولية والسرعة القصوى ويمكنك التمرير

90
00:06:38,870 --> 00:06:43,280
‫ومشاهدة الكثير من المعلمات الأخرى التي يمكننا تعيينها أيضًا.

91
00:06:43,400 --> 00:06:44,840
‫لذلك دعونا نلعب اختبار هذا.

92
00:06:44,840 --> 00:06:49,190
‫سأقوم بالضغط على play ثم ترك النقر والتحقق من ذلك.

93
00:06:49,190 --> 00:06:51,200
‫مقذوفاتنا تتحرك.

94
00:06:51,200 --> 00:06:55,550
‫إنهم يطيرون في الهواء ويتوقفون بمجرد أن يصطدموا بشيء ما.

95
00:06:55,550 --> 00:07:00,260
‫الآن ، ما نود فعله في النهاية هو تفجيرها وإحداث ضرر.

96
00:07:00,260 --> 00:07:02,780
‫لكن هذه نقطة انطلاق رائعة.

97
00:07:02,780 --> 00:07:08,420
‫الآن دعنا نتحرك في نطاق إطلاق النار ونرى ما إذا كانت الأبراج ستنتج قذيفة.

98
00:07:08,420 --> 00:07:09,740
‫وبالطبع لا يفعلون.

99
00:07:09,740 --> 00:07:13,640
‫والسبب هو أننا لدينا فئة فرعية من المتغير TW.

100
00:07:13,640 --> 00:07:19,310
‫لذا ، إذا كنت تتساءل لماذا لم تكن الأبراج تنتج مقذوفات في الواقع ، فربما لم تكن قد حددت

101
00:07:19,310 --> 00:07:19,730
‫ذلك.

102
00:07:19,730 --> 00:07:25,370
‫لذلك دعونا نمضي قدمًا ونذهب إلى البرك والبركة الصافرة والبرج ونفتح مخططًا كاملاً.

103
00:07:25,370 --> 00:07:29,960
‫المحرر ووضعنا فئة المقذوفات في قسم القتال.

104
00:07:29,960 --> 00:07:37,790
‫هذه هي فئتنا الفرعية لذلك إذا قمنا بتعيين هذا على قذيفة BP الآن يجب أن يبدأ برجنا في إنتاج المقذوفات

105
00:07:37,790 --> 00:07:38,780
‫أيضًا.

106
00:07:38,780 --> 00:07:41,960
‫لذلك دعونا ندخل في نطاق النار وها هو لدينا.

107
00:07:41,960 --> 00:07:43,910
‫إنها تطلق مقذوفات علينا.

108
00:07:43,910 --> 00:07:46,550
‫لذلك هذا يبدو رائعا.

109
00:07:47,030 --> 00:07:48,950
‫لذلك لدينا الآن مقذوفات.

110
00:07:48,950 --> 00:07:51,230
‫لذلك دعونا نلقي نظرة على خطة القسم الخاصة بنا.

111
00:07:51,230 --> 00:07:56,900
‫لقد أنشأنا بالفعل خزانًا يمكنه التحرك في جميع أنحاء العالم ونحن الآن نتعامل مع الإدخال باستخدام

112
00:07:56,900 --> 00:07:59,150
‫مفاتيح WASD ونقرات الماوس.

113
00:07:59,150 --> 00:08:05,510
‫لقد أنشأنا فئة برج العدو ، وأطلقنا عليها اسم البرج في C ++ وأضفنا وظائف إطلاق النار باستخدام

114
00:08:05,510 --> 00:08:06,590
‫المقذوفات.

115
00:08:06,590 --> 00:08:11,240
‫الآن بعد ذلك ، نحتاج إلى التعامل مع الأضرار الصحية والدمار في هذه اللعبة.

116
00:08:11,240 --> 00:08:15,770
‫هذه هي خطواتنا التالية وتلك التي ستظهر في مقاطع الفيديو القادمة.

117
00:08:15,770 --> 00:08:21,890
‫والآن بعد أن أضفنا مكونًا لحركة المقذوفات ، أصبح لدينا الآن مقذوفات فعلية.

118
00:08:21,890 --> 00:08:26,990
‫سأراك في الفيديو التالي عندما نبدأ في الحديث عن كيف يمكننا جعل هذه المقذوفات

119
00:08:26,990 --> 00:08:29,270
‫تنفجر بالفعل وتسبب الضرر.

120
00:08:29,690 --> 00:08:30,650
‫سأراك قريبا.

