الدرس الثالث : تحريك الكميرا
سنعلمك كيفية تغيير مواضع و دوران الكميرا مستخدما ازرار لوحة
Rem Setup sync
Sync On
Sync Rate 30
Rem Create 5 cubes and place randomly
For x = 1 to 5
Make object cube x,100
Position object x,Rnd(2000),0,Rnd(2000)
Next x
Rem Main loop
Do
Rem Store camera angle
caY#= Camera angle Y()
Rem Control input for camera movement
If Upkey()=1 then Move camera 10
If Leftkey()=1 then Yrotate Camera Wrapvalue(caY#-5)
If Rightkey()=1 then Yrotate Camera Wrapvalue(caY#+5)
Rem Refresh Screen
Sync
Loop
سوف نبدأ درسنا بالحديث عن الحلقة التكراية "For Next" .
For x = 1 to 5
Make object cube x,100
Position object x,Rnd(2000),0,Rnd(2000)
Next x
الحلقة التكراية "For Next" تستخدم لتنفيذ امر او مجموعة اوامر ونضع رقم عدد التكرار ، لقد استخدمنا المتغير x لتخزين عدد الأرقام اللتى ستنفذ داخل الحلقة ، دائما داخل الحلقة التكرارية "For Next" نستخدم العبارة to لكى ننفذ رقم المرات اللتى نريد تنفيذها داخل الحلقة ، فى حالتنا نحن حددنا التكرار من الرقم 1 الى الرقم 5 ، وقد وضعنا الأوامر اللتى نريد تنفيذها داخل جسم ال loop او الحلقة التكرارية كما سميناها ، لقد استخدمنا العبارة next والمتغير العددى x لكى نخبر البرنامج ان هذه هى نهاية الحلقة التكرارية وايضا لينقص فى قيمة المتغير x ،، داخل ال loop نحن صنعنا الأوبجكت مكعب ، واعطينا اسم الأوبجكت نفس اسم المتغير المستخدم داخل الحلقة التكرارية ، بعد ذلك استخدمنا الأمر Position Object لموضع الأوبجكت داخل احداثيات مشهدنا ، اول رقم فى الأمر Position Object هو رقم الأوبجكت اللذى سنحدد موضعه ، وقد استعضنا عن هذا الرقم بالمتغير X ، أما الثلاثة ارقام اللتى بعد رقم الأوبجكت وهم الأحداثيات X - Y - Z هم احداثيات الأبجكت ، ومكان الأحداثيات X - Z نحن استخدمنا الأمر RND ،،الأمر RND يستخدم لتوليد رقم عشوائى يبدأ من صفر ويكتب الرقم بين علامتى الأقواس ، فى كل مرة سينفذ الأمر "Position Object" سيتم وضع الأوبجكت الجديد داخل الأحداثيات اللتى اعلاناها لل X - Z ، وطبعا فى مثالنا نحن اعطينا الأحداثى Y الرقم صفر .
If Upkey()=1 then Move camera 10
امرنا التالى هو الأمر "Move camera" وهذا الأمر يشبة الأمر "Move Object" ماعدا ان طبعا اننا فى الأمر "Move camera" لا نحدد رقم للأبجكت ، الرقم اللذى بعد الأمر "Move camera" هو رقم مقدار الوحدات اللتى نريد تحديدها لحركة الكميرا وذلك عندما يتم الضغط على مفتاح (سهم لأعلى) فى كل مرة داخل الدائرة الرئيسية main loop .
If Leftkey()=1 then Yrotate Camera Wrapvalue(caY#-5)
If Rightkey()=1 then Yrotate Camera Wrapvalue(caY#+5)
ان الأمر "YRotate Camera" يعتبر شبه الأمر "YRotate Object" ، ما عد ان هذا الأمر "YRotate Camera" يلف الكميرا حول المحور y ،، يجب عليك ان تفهم كيف يتم تحريك موضع الكميرا ، حاول ان تتلاعب فى قسم المثال وتجرب من نفسك حاول التغيير فى الرقم 10 فى الأمر move camera ، حاول ان تغير فى yrotate camera الى مثلا xrotate camera وأنظر للنتيجة أو حاول ان تغير فى قيم الأمر rnd لترى ما سيحدث ، يجب عليك التجربة بنفسك لتثقل نفسك اكثر بالمواهب اللتى علمتها لك .
ملاحظة : قد تجد فى بعض الأسطر ان الكود معكوس والسبب طبعا صفحات الوب اللتى اكتب فيها الدرس ، وللتغلب على تلك المشكلة ومعرفة الكود بشكله الصحيح انسخ الكود مباشرة داخل برنامج الدركبيسك