top of page
التحكم في دوران الاعب
دعونا الآن نضع البرمجيات الازمة لنجعل الشخصية تدور بالإتجاه المعاكس في حال الحركة يساراً
( الضغط على زرA) ولفعل ذلك فعلينا بالرجوع للنقطة(MovingRightLeft) ونضع بعض التعديلات

1- علينا بإنشاء متغير (variable) ونسميه (moveright)


ذلك المتغير هو من نوع boolean فهو لا يعطي سوى قيمتين إما صحيحة أو خاطئة, قمنا بإنشائه لكي نحفظ القيمة التي ستجعل الشخصية تذهب يمينا في البرنامج, ويمكننا هذا من إستدعاء هذا المتغير متى ما أردنا ذلك
2- علينا بإنشاء نقطة(greater) اكبر من 0

اذا كانت قيمة المدخل MovingRightLeft اكبر من صفر فسيعني ذلك أنه سيتحرك جهة اليمين وإذا كان أقل من صفر فسيعني ذلك أنه سيتحرك جهة اليسار
3- علينا بإنشاء نقطة(branch)

branch هي من حالات الشرط أي أنها تعطي إما قيمة صحيحة أو خاطئة
4- علينا الآن بسحب المتغير الذي أنشأناه قبل قليل والذي يدعى (moveright)

عند سحبنا للمتغير يجب أن نضغط على (set) وذلك لأننا نريد أن نعرف المتغير وحفظه
وأن نضع علامة الصح في المربع لكي نخبر البرنامج أنه هكذا الشرط صحيح


تم الآن حفظ قيمة moveright بأنه في حال كان قيمة المدخل (MovingRightLeft) أكبر من 0 وكان الشرط صحيحاً وكل ذلك تم حفظه في المتغير (moveright)
5- علينا بإنشاء نقطة(less) أقل من 0

اذا كانت قيمة المدخل MovingRightLeft أقل من صفر فسيعني ذلك أنه سيتحرك جهة اليسار
6- علينا بإنشاء نقطة branch أخرى نخرج من branch الأولى, ونضع المتغير moveright مرة أخرى

تم الآن حفظ قيمة moveright بأنه في حال كان قيمة المدخل(MovingRightLeft) أصغر من 0 وكان الشرط خاطئاً فلن تذهب الشخصية يمينا بل ستذهب يساراً

7- نقوم بتوصيلهم جميعا في النقطة add movement input لكي تتحرك الشخصية
بعد تعريفنا للمتغير moveright وإنشاء البرمجيات الازمة لجعل الشخصية تتحرك يميناً ويسارً في حال تحقق الشروط فالآن نحن جاهزين لوضع البرمجيات الازمة لجعل الشخصية تدور بالإتجاه المعاس في حال التحرك يساراً
1- علينا بسحب حركة الشخصية (character movement) من قائمة component

2-نحصل على سرعة حركة الشخصية عن طريق الكتابة في مربع البحث(get velocity)

نحن لا نريد سوى أن نجعل الشخصية تتحرك يميناً أو يساراً أي يعني في محور X فقط
3- لذلك فعلينا أن نضغط بالفارة اليسار على velocity ثم نضغط split struct pin لكي نستطيع تقسيم سرعة الشخصية على جميع المحاور

4- الكتابة في مربع البحث compare float

يقوم compare float بمقارنة قيم السرعة(vectors) مع القيمة صفر
5- الحصول على النقطة (يد التحكم) (get controller)
6- الحصول على النقطة is valid لنتأكد أن التحكم صحيح

7- نستخرج من (get controller) النقطة (set control rotation) لنضع مستوى الدوران للشخصية في حال كانت قيمة السرعة أكبر من 0

8- نستخرج من داخل النقطة (set control rotation) في جزء (new rotation) نقطة جديدة بأسم
(make rotator)

بعد تعريفنا للمحور الجديد في حال كانت قيمة السرعة اكبر من 0, فيجب أن تكون جميع المحاور في make rotator تساوي 0 والسبب في ذلك هو لأنه: لن يتغير مستوى الدوان في حال الذهاب باليمين كما بالصورة

9- ننسخ كل ما يتعلق بالدوران ونربطه ب compare float في حال كان العدد اقل من 0


10- نجعل محور الدوران Z في حال كانت قيمة السرعة اقل من صفر (180 درجة)

11- نستدعي المتغير moveright مرة أخرى ونشبكه مع branch في حال كانت السرعة للمتغير تساوي 0 وفي حال كان صحيحا اذا فسيذهب لليمين وإذا كان خاطئاً يذهب لليسار, يصبح كما في الصورة

12- نشبك كل ما فعلناه مع حدث( event tick) لكي تحصل كل تلك البرمجيات عند بدء اللعب

13- سنواجه مشكلة وهي أن الشخصية ستبدأ دائما مواجهةً للجهة اليسرى ولحلها فعلينا أن نجعل المتغير moveright يعمل دائماً في بداية اللعب عن طريق الضغط عليه وجعل القيمة فعالة دائماً

13- نذهب لخيار spring arm ونجعل مستوى الدوران من relative إلى world


سبب وضعنا لمحور الحركة إلى العالم(world) هو لأنه في نقطة (add movement input) فالحركة تتأثر بالعالم ولي س بالنسبة للشخصية

أرجوا أن يكون الشرح واضحاً وشكراً لحسن قرائتكم
bottom of page