top of page
التحكم في دوران الاعب

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

image.png

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

image.png
image.png

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

2- علينا بإنشاء نقطة(greater) اكبر من 0 

image.png

اذا كانت قيمة المدخل MovingRightLeft اكبر من صفر فسيعني ذلك أنه سيتحرك جهة اليمين وإذا كان أقل من صفر فسيعني ذلك أنه سيتحرك جهة اليسار 

3- علينا بإنشاء نقطة(branch) 

image.png

branch هي من حالات الشرط أي أنها تعطي إما قيمة صحيحة أو خاطئة 

4- علينا الآن بسحب المتغير الذي أنشأناه قبل قليل والذي يدعى (moveright)

image.png

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

image.png
image.png

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

5- علينا بإنشاء نقطة(less) أقل من 0

image.png

اذا كانت قيمة المدخل MovingRightLeft أقل من صفر فسيعني ذلك أنه سيتحرك جهة اليسار 

6- علينا بإنشاء نقطة branch أخرى نخرج من branch الأولى, ونضع المتغير moveright مرة أخرى

image_edited.jpg

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

image.png

7- نقوم بتوصيلهم جميعا في النقطة add movement input لكي تتحرك الشخصية

بعد تعريفنا للمتغير moveright وإنشاء البرمجيات الازمة لجعل الشخصية تتحرك يميناً ويسارً في حال تحقق الشروط فالآن نحن جاهزين لوضع البرمجيات الازمة لجعل الشخصية تدور بالإتجاه المعاس في حال التحرك يساراً

1- علينا بسحب حركة الشخصية (character movement) من قائمة component

image.png

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

image.png

نحن لا نريد سوى أن نجعل الشخصية تتحرك يميناً أو يساراً أي يعني في محور X فقط

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

image.png

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

image.png

يقوم compare float بمقارنة قيم السرعة(vectors) مع القيمة صفر

5- الحصول على النقطة (يد التحكم) (get controller) 

6- الحصول على النقطة is valid لنتأكد أن التحكم صحيح

image.png

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

image.png

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

image.png

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

image.png

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

image.png
image.png

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

image.png

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

image.png

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

image.png

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

image_edited.jpg

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

image.png
image.png

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

image_edited.jpg

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

bottom of page