Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

درس جافا سكربت Array of GameObject

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • درس جافا سكربت Array of GameObject

    لوضع مصفوفة من نوع GameObject

    كود PHP:
    var  arrayofgameobject  :  GameObject[] ; 
    هنا عدد GameObject غير محدد


    -----------------------------------------------------------------------------------------------------------------

    ماذا لو اردنا وضع عدد لــــ GameObject

    مثلا يكون 20 GameObject في مصفوفة arrayofgameobject

    ملاحظه
    (في المصفوفه يتم العد من الرقم صفر انظر => 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 فيصبح المجموع 20 خانة)


    لاضافة عدد 20 GameObject هذا السكربت سيعطيك خطأ

    كود PHP:
    var  arrayofgameobject  :  GameObject[19] ; 



    لاضافة عدد 20 GameObject وهذا السكربت الصحيح

    كود PHP:
    var arrayofgameobject  GameObject[]= new  GameObject[19] ; 


    الان قارن بين السكربت الصحيح والسكربت الخطأ



    قبل ان ننطلق في شرحنااا
    يجب ان تعرف كيف تحدد طول هذه المصفوفة واقصد عدد GameObject في مصفوفة arrayofgameobject

    من خلال الامر التالي

    كود PHP:
    print(arrayofgameobject.Length
    -----------------------------------------------------------------------------------------------------------------


    الان كيف احدد GameObject معين في مصفوفة arrayofgameobject

    يتم ذلك بتحدد الخانة لهذه GameObject

    كود PHP:
    arrayofgameobject [4

    بعد ان حددنا GameObject في السكربت السابق ماذا بعد


    صلو على النبي علشان نكمل

    نريد مثلا استدعاء اسم هذا القيم GameObject وطباعة

    فنكتب التالي

    كود PHP:
    print(arrayofgameobject[4].name); 

    نريد ان نحدد مثلا موقعه وطياعتة

    كود PHP:
    print(howmany[0].transform.position); 

    -----------------------------------------------------------------------------------------------------------------

    الان نريد ان نحدد GameObject ونضعهم في مصفوفة باسم arrayofgameobject

    عن طريق tag لهذا GameObject

    نضع مربع ودائره واسطوانة ونغير التاج لهم ونجعله tag من نوع Player

    الان نضع هذا السكربت

    كود PHP:
    var arrayofgameobject  GameObject[] ;

    function 
    Start () {arrayofgameobject  GameObject.FindGameObjectsWithTag("Player")  ;} 
    الان ادخلناهم في المصفوفة


    وماذا بعد

    اذكرو الله اولا.... ثم نعود للشرح

    مثلا نريد طباعة جميع اسماء GameObject في مصفوفة التي تحمل اسم nameofgameobject

    نسختدم هذا السكربت

    كود PHP:
    for(var nameofgameobject GameObject in arrayofgameobject ){print(nameofgameobject.name);} 
    هنا قمنا بتعريف متغير باسم nameofgameobject وحددنا نوعه وهو GameObject

    وقلنا له ان هذا nameofgameobject يساوي GameObject الاول في مصفوفة arrayofgameobject

    ولكن for سوفة تستمر بالدوران وتجل nameofgameobject يساوي GameObject الثاني في مصفوفة arrayofgameobject

    وهكذا سيكون هنالك loop خلال الامر () for



    الان سنرى طريقة اخرى ::::



    او نستخدم هذا السكربت

    كود PHP:
    for(var =;arrayofgameobject.Length i++){print(arrayofgameobject[i].name);} 
    الان قارن بين السكربتين





    سيتم التحديث قريبااااااااااااااااااا والتفصيل اكثر رقم 1



    لقد تعرفنا على طريقة اضافة GameObject باستخدام tag الي مصفوفة باسم arrayofgameobject

    كود PHP:
    var arrayofgameobject  GameObject[] ;

    function 
    Start () {arrayofgameobject  GameObject.FindGameObjectsWithTag("Player")  ;} 



    الان سنتعرف على طريقة اخرى لاضافة GameObject الي مصفوفة باسم arrayofgameobject

    سنحتاج الي تحديد عدد معين من الخانات هكذا
    كود PHP:
    var arrayofgameobject  GameObject[]= new  GameObject[19] ; 
    بالتالي سينتج لنا 20 خانة فاضية تستوعب عدد 20 GameObject
    ثم نقوم بملأ هذه الخانات بـــGameObject نحدده بعينة ويتم ذلك

    طريقة تحديد GameObject بعينة يتم بهذا الكود .... بسحب الكائن وافلاته
    كود PHP:
    var anygameobject  :  GameObject 
    او
    بالبحث عن الكائن عن طريقة اسمه
    كود PHP:
    var anygameobject GameObject;
    anygameobject GameObject.Find("اسم الكائن"); 
    الان استطعنا تحديد GameObject بالطريقتين السابقتين سوف ندخلة الي مصفوفة باسم arrayofgameobject

    ويكون الكود كالتالي

    كود PHP:
    var  arrayofgameobject  :  GameObject[] = new GameObject[19]; ;
    var 
    anygameobject  :  GameObject ;

    function 
    Start () {
    arrayofgameobject[4]=anygameobject ;

    او

    كود PHP:
    var  arrayofgameobject  :  GameObject[] = new GameObject[19]; ;
    var 
    anygameobject GameObject;
    anygameobject GameObject.Find("اسم الكائن");

    function 
    Start () {
    arrayofgameobject[4]=anygameobject ;


    قارن بين الاثنين:::::: انتهيت من المقارنه صلي على النبي واذكر الله نرجع لدرسنااااااا

    الان رئيتهم الية ادخال GameObject في الخانة رقم 4 .......

    ملاحظه ( يمكن عمل ما ذكر سابقا بسحب GameObject وافلاته في الخانة رقم 4 مباشره )






    سيتم التحديث قريبااااااااااااااااااا والتفصيل اكثر رقم 2


    المشاركة الأصلية بواسطة matrixinc مشاهدة المشاركة
    بالنسبة ل x y ممكن يكون مثلا ما بنفس النقطة لكن يلمس الاوبجكت يعني تكون البوسيشن محددة برقم انا اريد ان يلتقط الاوبجكت حتى لو لم يكن بنفس الاكس المهم يلمسه
    يبدو اني اخطأت التعبير
    اريد شي مثل المستوي الاحداثي يعني خطين ينطلقان من اللاعب و يلتقطان اي شي لمسهما و يضعهم في مصفوفة
    بالنسبة للجواب الثاني : ممكن مثال ( كود )

    بصراحة ندمت اني ماساعدتك
    وما جاوبتك على سؤالك في وقتها لكن التحديث القادم سيكون الجواب



    --------------------------------------------------------------------------------------------------------

    الان سنطبق كل ما تعلمناه في سكربت واحد ..... سنصنع سكربت وضيفة

    ان يقوم باللتقاط كل GameObject نحدده عليه بالفأره ونضغط على زر الماوس الايسر

    فيتم ادخال هذا GameObject في مصفوفة لمرة واحد فقط ...........


    بالبداية نحدد المصفوفة وعدد الخانات ونضي ايضا متغير لتحديد رقم الخانة ويكون هذا المتغير من نوع int

    كود PHP:
    var  arrayofgameobject  :  GameObject[] = new GameObject[19]; 
    var 
    numberofgameobjectinarray 0


    الان نضع دالة function Update ونضع بداخلها شرط ...
    اذا تم الضغط على الزر الايسر من الفاره Input.GetButtonDown ("Fire1") 0_0
    سيتم استدعاء دالة إضافة GameObject للمصفوفه وهي باسم getgameobjectandPutinarray() 0_0

    ويكون الكود كالتالي

    كود PHP:
    var  arrayofgameobject  :  GameObject[] = new GameObject[19]; 
    var 
    numberofgameobjectinarray 0;
     
    function 
    Update()
     {
    if (
    Input.GetButtonDown ("Fire1"))
     {
     
    getgameobjectandPutinarray();
     }
     
     } 
    الان نقوم بكتابة دالة getgameobjectandPutinarray المختصه في إضافة GameObject الي المصفوفة

    كود PHP:
    function getgameobjectandPutinarray()
     {

     } 

    اولا نقوم بتحديد احداثي مؤشر الفارة واللذي يبتدي او ينطلق من الكاميرا بهذا الكود
    بذلك نكون عرفنا متغير نوعة احداثي Vector3 .....( وضيفتة ان يقوم بتحديد موقع مؤشر الفاره بالنسبة للكاميرا )

    كود PHP:
    var ray Camera.main.ScreenPointToRay (Input.mousePosition); 
    ثانيا نعرف متغير من نوع شعاع تصادمي ... (وضيفته ان يقوم بجلب المعلومات عن المجسمات التي اصتدمت به)
    بهذا الكود
    كود PHP:
      var hit RaycastHit

    الان نضع شرط اذا اصتدم الشعاع بــGameObject يتم جلب هذا ال GameObject ووضعة في مصفوفة

    نكتب الكود الشرط بهذه الطريقة
    كود PHP:
      if (Physics.Raycast (rayhit)) 
    ملاحظه (لوضع شعاع التصادم يتطلب منك ثلاث اوامر على الاقل
    الاول تحديد مكان شعاع التصادم اللذي ينطلق منه والامر الثاني يطلب منك تحديد اتجاه انطلاقة وقد استخدمنا ray لذلك الامرين

    واما الامر الثالث فهو يطلب منك طول هذا الشعاع وقد وضعنا او استخدمنا hit لذلك وهذا يعني انه طولة الي ماله نهاية وبدايته من الكاميرا المفعلة)


    بذلك نحصل على الكود الابتدائيه بهذه الصوره

    كود PHP:
    function getgameobjectandPutinarray()
     {
      
      var 
    ray Camera.main.ScreenPointToRay (Input.mousePosition); 
      var 
    hit RaycastHit;
      
      if (
    Physics.Raycast (rayhit))
            {
            
    هنا سنع بعض الاوامر  لاضافة القيم اوبجكت لمره واحده فقط
            
    {
     

     } 

    الان نكمل في اوامر اضافة الجيم اوبجكت عن اصتدامه بالشعاع وإضافة الي المصفوفة لمره واحده فقط

    اولا قبل اضافة الجيم اوبجكت نحدد هل هو موجود في المصفوفة او لا

    عن طريق عمل loop لاستعراض جميع الجيم اوبجكت في المصفوفة ومقارتنتها بالجيم اوبجكت اللذي اصتدم بالشعاع هل يساوي او لا

    بهذا الكود

    كود PHP:
                  for(var 0;arrayofgameobject.length;i++)
            {
             if(
    hit.collider.gameObject == arrayofgameobject[i]) 
             return;      
            } 
    هنا الاحتمال الاول ::
    ستم عمل لوب اوستعراض جميع الجيم اوبجكت وماقرنتها مع الجيم اوبجكت اللذي اصتدم به الشعاع
    فاذا كان احد هذه الجيم اوبجكت يساويه
    فانه الامر return سيوقف عمل loop والدالة بالكامل
    ولن يتم قراة الدالة function getgameobjectandPutinarray بالكامل

    هنا الاحتمال الثاني::
    ستم عمل لوب اوستعراض جميع الجيم اوبجكت وماقرنتها مع الجيم اوبجكت اللذي اصتدم به الشعاع
    فاذا كان احد هذه الجيم اوبجكت لا يساويه
    فانه الامر return لن يعمل وسوف تستمر loop الي النهاية ثم سيتم قراءة الدالة function getgameobjectandPutinarray بالكامل



    وهنا مربط الفرس اذا كان الاحتمال الثاني صحيح فاننا نضع هذا الامر لاضافة الجيم اوبجكت الي المصفوفة

    كود PHP:
               arrayofgameobject[numberofgameobjectinarray] = hit.collider.gameObject;
               
    numberofgameobjectinarray++; 

    الان نضع السكربت دالة function getgameobjectandPutinarray بالكامل

    كود PHP:
    function getgameobjectandPutinarray()
     {
      
      var 
    ray Camera.main.ScreenPointToRay (Input.mousePosition); 
      var 
    hit RaycastHit;
      
      if (
    Physics.Raycast (rayhit))
            {
                  for(var 
    0;arrayofgameobject.length;i++)
            {
             if(
    hit.collider.gameObject == arrayofgameobject[i]) 
             return;      
            }   
               
    arrayofgameobject[numberofgameobjectinarray] = hit.collider.gameObject;
               
    numberofgameobjectinarray ++;
         
            
            
            }
     

     } 

    والان نضيف السكربت بالكامل


    كود PHP:
    var  arrayofgameobject  :  GameObject[] = new GameObject[19]; 
    var 
    numberofgameobjectinarray 0;
     
    function 
    Update()
     {
    if (
    Input.GetButtonDown ("Fire1"))
     {
     
    getgameobjectandPutinarray();
     }
     
     }


    function 
    getgameobjectandPutinarray()
     {
      
      var 
    ray Camera.main.ScreenPointToRay (Input.mousePosition); 
      var 
    hit RaycastHit;
      
      if (
    Physics.Raycast (rayhit))
            {
                  for(var 
    0;arrayofgameobject.length;i++)
            {
             if(
    hit.collider.gameObject == arrayofgameobject[i]) 
             return;      
            }   
               
    arrayofgameobject[numberofgameobjectinarray] = hit.collider.gameObject;
               
    numberofgameobjectinarray ++;
         
            
            
            }
     

     } 


    انتهى الدرس سيييي يووووو


    وهذه اضافة لمن طبقو الدرس

    كود PHP:
                   if(numberofgameobjectinarray<arrayofgameobject.length-1)
                    
    numberofgameobjectinarray ++; 
    التعديل الأخير تم بواسطة لا اعلم; 02 / 03 / 2013, 02:23 PM.
    اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
    وتفتك باعدائك اعداء الدين



  • #2
    شكرا
    لكن ممكت تعلمني في سكربت الرصاص؟
    http://www6.0zz0.com/2013/02/17/16/269124573.jpg

    تعليق


    • #3
      المشاركة الأصلية بواسطة tcanny مشاهدة المشاركة
      شكرا
      لكن ممكت تعلمني في سكربت الرصاص؟

      هنالك خطوات تسبق كود الرصاصة يجب عليك تعلمها
      لن تستطيع الوصول الي معرفة كود الرصاصة الا بعد تعلم الاساسيات

      يجب تعلم الاساسيات بالبداية ياعزيزي وهذا الدرس يعتبر متقدم قليلا للمبتدئين

      انا ارسلت لك بالخاص كتاب تعليم اساسيات الجافا سكربت مع موقع لاخ ماس يشرح برنامج اليونتي بشكل وافي

      .................................................................................................... ..................................

      ربما سيتجدون الكثير من الاساله من المبتدئين لذلك
      اتمنى عدم التعليق على اسالت المبتدئين في موضوعي سارد عليهم بنفسي حتى لا يخرج الموضوع عن سياقة
      اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
      وتفتك باعدائك اعداء الدين


      تعليق


      • #4
        المشاركة الأصلية بواسطة لا اعلم مشاهدة المشاركة
        هنالك خطوات تسبق كود الرصاصة يجب عليك تعلمها
        لن تستطيع الوصول الي معرفة كود الرصاصة الا بعد تعلم الاساسيات

        يجب تعلم الاساسيات بالبداية ياعزيزي وهذا الدرس يعتبر متقدم قليلا للمبتدئين

        انا ارسلت لك بالخاص كتاب تعليم اساسيات الجافا سكربت مع موقع لاخ ماس يشرح برنامج اليونتي بشكل وافي

        .................................................................................................... ..................................

        ربما سيتجدون الكثير من الاساله من المبتدئين لذلك
        اتمنى عدم التعليق على اسالت المبتدئين في موضوعي سارد عليهم بنفسي حتى لا يخرج الموضوع عن سياقة
        اوك هات الاساسيات اانا بدي اتعلم بأي طريقة
        http://www6.0zz0.com/2013/02/17/16/269124573.jpg

        تعليق


        • #5
          شكرا على الشرح الاكثر من رائع
          و المصفوفات مهمة بالتأكيد في البرمجة
          بس عندي سؤال:
          في الكود : var howmany : GameObject[]= new GameObject[19] ;
          هل المعنى انه يحتوي 20 جيم اوبجكت ام انه يتّسع ل 20 جيم اوبجكت؟
          FaceBook
          Here

          Ask Me
          Here
          My Channel In Youtube
          Here

          ____________________________________________

          لكي تعيش عليك ان تتقن فن التجاهل باحتراف

          تعليق


          • #6
            يتسع 20 قيم اوبجكت وليس يحوي

            شكرا على السؤال المفيد
            اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
            وتفتك باعدائك اعداء الدين


            تعليق


            • #7
              اولا احب ان احيك على طريقة شرحك الوافية والامر الثانى عايز انبهك لخطأ مطبعى بسيط وهو انك فى اخر سطر فى الكود كتبت
              print(arrayofgameobject[0].name); بدل print(arrayofgameobject[i].name واتاسف لك مقدما لو كنت أسات فهمك

              تعليق


              • #8
                المشاركة الأصلية بواسطة matrixinc مشاهدة المشاركة
                شكرا على الشرح الاكثر من رائع
                و المصفوفات مهمة بالتأكيد في البرمجة
                بس عندي سؤال:
                في الكود : var howmany : GameObject[]= new GameObject[19] ;
                هل المعنى انه يحتوي 20 جيم اوبجكت ام انه يتّسع ل 20 جيم اوبجكت؟
                في المصفوفة يمكن أن تكون أماكن فارغة ، مثلا مصفوفة فيها 100 ، من بينهم واحدى فقط محجوزة والأخرى فارغة شيء طبيعي

                تعليق


                • #9
                  المشاركة الأصلية بواسطة ProToN مشاهدة المشاركة
                  اولا احب ان احيك على طريقة شرحك الوافية والامر الثانى عايز انبهك لخطأ مطبعى بسيط وهو انك فى اخر سطر فى الكود كتبت
                  print(arrayofgameobject[0].name); بدل print(arrayofgameobject[i].name واتاسف لك مقدما لو كنت أسات فهمك
                  شكرا اخوي بروتون علا الملاحظه لقد تم التصحيح
                  اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
                  وتفتك باعدائك اعداء الدين


                  تعليق


                  • #10
                    المشاركة الأصلية بواسطة oussama23 مشاهدة المشاركة
                    في المصفوفة يمكن أن تكون أماكن فارغة ، مثلا مصفوفة فيها 100 ، من بينهم واحدى فقط محجوزة والأخرى فارغة شيء طبيعي
                    في جزئيات صعب شرحها لكن بالتطبيق تتوضح
                    اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
                    وتفتك باعدائك اعداء الدين


                    تعليق


                    • #11
                      سلمت يداك أخي على هذا الشرح الرائع

                      تعليق


                      • #13
                        مشكور اخوي نارتو واخوي عمر على مروركم الطيب يسعدني تواجدكم وتقبلو تحياتي
                        اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
                        وتفتك باعدائك اعداء الدين


                        تعليق


                        • #14
                          تم الانتهاء من التحديث رقم 1
                          اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
                          وتفتك باعدائك اعداء الدين


                          تعليق


                          • #15
                            تم الانتهاء من التحديث رقم 2
                            اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
                            وتفتك باعدائك اعداء الدين


                            تعليق

                            يعمل...
                            X