Unconfigured Ad Widget

تقليص

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

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

[تجربة] ذكاء إصطناعي للعدو

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

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

    بخصوص استخدام SphereCastAll لا يعتمد على نقطة واحدة وانما مساحة كبيرة انت تحددها اذا اذا كان بجواره سيشاهده ايضا
    هذا ما اقوله ان الديستانس لا ياخذ بالحائط مثلا
    اعرف فطريقتك في الثكاء الاصطناعي رائعة و لكنها متعبة ايضا فإذا كانت البيئة كبيرة هل تريد تقسيم كل منطقة الى مربعات !!
    اما بالنسبة لل sphereCasrAll اسف فعلا قرات سطر و حكمت فورا
    FaceBook
    Here

    Ask Me
    Here
    My Channel In Youtube
    Here

    ____________________________________________

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

    تعليق


    • #32
      هناك طريقة اخرى لعمل دكاء اصطناعي وهي عن طريق توجيه المحور دوران البطل بطريقة تالية:

      اضغط على الصورة لعرض أكبر. 

الإسم:	dddd.jpg 
مشاهدات:	1 
الحجم:	13.8 كيلوبايت 
الهوية:	3283328
      المسارات الخضراء هي محور دوران المربعات وهي تدل ايضا عن طريق مرور البطل

      يبدا هدا دكاء برؤية الانمي للبطل بعدها يتجه لاقرب نقطة كان البطل بجانبها وطبعا النقاط شغلتها ادا كان البطل ضمن حدودها تتخد اتجاهه وبدالك كل مربع مر منه البطل يتخدج اتجاه البطل كما في الصورة الي بالاعلى والانمي دوره هو لما يصل لمربع معين ياخد اتجاه المربع وبالتالي يمكن يلحق بالبطل اينما دهب فالفكرة فقط انك تصمم سكربت مربع واحد يستطيع اتحاد اتجاه البطل كلما اقترب منه بمسافة معينة وتصمم سكربت واحد للانمي يمشي واي مربع كان بجانبه يتخد نفس اتجاهه ويبقى يشتغل في كل الظروف تضع فقط مربعات في الماب

      تعليق


      • #33
        المشاركة الأصلية بواسطة amineGS مشاهدة المشاركة
        هناك طريقة اخرى لعمل دكاء اصطناعي وهي عن طريق توجيه المحور دوران البطل بطريقة تالية:

        [ATTACH=CONFIG]79213[/ATTACH]
        المسارات الخضراء هي محور دوران المربعات وهي تدل ايضا عن طريق مرور البطل

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

        تعليق


        • #34
          سؤال رفيع هل بيئثر على الأف بى اس ولا لا ؟؟؟؟؟
          -:| My Games |:-
          AfterEarth Online SOON

          -:| Contact Us |:-
          Facebook Page :- NTStudio

          تعليق


          • #35
            المشاركة الأصلية بواسطة NTSoft مشاهدة المشاركة
            سؤال رفيع هل بيئثر على الأف بى اس ولا لا ؟؟؟؟؟
            مش فاهم ممكن توضح السؤال
            {قل لي وسوف أنسى, أرني ولعلي أتذكر, أشركني وسوف أفهم}

            تعليق


            • #36
              المشاركة الأصلية بواسطة NTSoft مشاهدة المشاركة
              سؤال رفيع هل بيئثر على الأف بى اس ولا لا ؟؟؟؟؟
              افتح البروفيلير وجربها

              ملك إنحصر وجوده فى مملكة خياله

              تعليق


              • #37
                المشاركة الأصلية بواسطة Shiny Arrow مشاهدة المشاركة
                افتح البروفيلير وجربها
                شرح Profiler
                http://vs1.3dbuzz.com/hb/Unity/Funda...6_Profiler.rar
                {قل لي وسوف أنسى, أرني ولعلي أتذكر, أشركني وسوف أفهم}

                تعليق


                • #38
                  انا بقول جربها انت

                  واتأكد
                  -:| My Games |:-
                  AfterEarth Online SOON

                  -:| Contact Us |:-
                  Facebook Page :- NTStudio

                  تعليق


                  • #39
                    مرحلة optimization بالنسبة ليا اخر مرحلة كل هدفى حاليا التمكن برمجيا ومعرفة دوال وافكار جديدة
                    {قل لي وسوف أنسى, أرني ولعلي أتذكر, أشركني وسوف أفهم}

                    تعليق


                    • #40

                      بعض الاعضاء سئل هل هذه الطريقة تسبب ثقل فى اللعبة ؟
                      الإجابة نعم
                      وهل يوجد حل لمنعه ؟
                      الاجابة نعم

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


                      كود:
                      #pragma strict
                      
                      var cells = new Array();       
                      var cellsList = new Array();    
                      var nearCells = new Array();    
                      var waitForGetCells : float = 2;
                      var patheInProgress : boolean = true;
                      var stage : int = 1;
                      
                      function Awake() {
                          cells = GameObject.FindGameObjectsWithTag('AIpathCell');
                          cellsList.length = cells.length;
                      }
                      
                      function Update() {
                      
                          if(patheInProgress && waitForGetCells <= 0)
                          {
                              // set stage 1
                              for(var nearCell : GameObject in nearCells)
                              {
                                  for(var i = 0; i < cells.length; i++)
                                  {
                                      if(cells[i] == nearCell)
                                          cellsList[i] = stage;
                                  }
                              }
                              
                              // set other stages
                              for (stage = 2; stage <= cells.length; stage++)
                              {
                                  for (i = 0; i < cells.length; i++)
                                  {
                                      if (cellsList[i] == stage - 1)
                                      {
                                          var cell = cells[i] as GameObject;
                                          for (var checkDoor : GameObject in cell.GetComponent(AIpathCell).links)
                                          {
                                              if (checkDoor != gameObject)
                                              {
                                                  for (var checkCell : GameObject in checkDoor.GetComponent(AIpathLink).nearCells)
                                                  {
                                                      for (var j : int = 0; j <= cells.length - 1; j++)
                                                      {
                                                          if (cells[j] == checkCell && cellsList[j] == null)
                                                              cellsList[j] = stage;
                                                      }
                                                  }
                                              }
                                          }
                                      }
                                  }
                              }
                              
                              patheInProgress = false;
                          }
                          else
                              waitForGetCells -= 1;
                      }
                      
                      function OnTriggerEnter(other : Collider) {
                          if(other.name == 'cell')
                              nearCells.Add(other.gameObject);
                      }
                      المشكلة فى السكرب الخاص بالعدو

                      كود:
                          #pragma strict
                      
                          var currentCell : GameObject;
                          var playerCell : GameObject;
                          var playerScript : player;
                          var closestLink : GameObject;
                          var closestSteps : float;
                          var waitToStart : float = 5;
                      
                          function Start () {
                              playerScript = GameObject.FindGameObjectWithTag('Player').GetComponent(player);
                          }
                      
                          function Update () {
                              if(waitToStart <= 0)
                              {
                                  playerCell = playerScript.currentCell;
                                  closestSteps = Mathf.Infinity;
                                  
                                  for(var link : GameObject in currentCell.GetComponent(AIpathCell).links)
                                  {
                                      var pathLink = link.GetComponent(AIpathLink);
                                      for(var i : int = 0; i < pathLink.cells.length; i++)
                                      {
                                          if(pathLink.cells[i] == playerCell)
                                          {
                                              var stepts : float = pathLink.cellsList[i];
                                              if(stepts < closestSteps)
                                              {
                                                  closestLink  = link;
                                                  closestSteps = pathLink.cellsList[i];
                                              }
                                          }
                                      }
                                  }
                              }
                              else
                                  waitToStart -= 1;
                              
                              // move
                              if(closestLink)
                              {
                                  if(currentCell == playerCell) 
                                      transform.position += (playerScript.transform.position - transform.position).normalized * 3.0 * Time.deltaTime;
                                  else
                                      transform.position += (closestLink.transform.position - transform.position).normalized * 3.0 * Time.deltaTime;
                              }
                              
                          }
                      
                          function OnTriggerEnter (other : Collider) {
                              if(other.name == 'cell')
                                  currentCell = other.gameObject;
                          }

                      المشكلة فى هذه السكربت انه يستمر بالعمل طوال اللعبة ومع هذه الخطوات المعقدة والكثيرة يحتاج الكثير من الوقت
                      والحل بسيط وهو عدم تشغيل الكود الا فى حالة غير اللاعب الغرفة (الخلية) الموجود فيها او فى حالة غير العدو الغرفة الموجود فيها
                      في غير هذه الحالات لا يحتاج سكربت العدو لاحتساب مكان العدو

                      التعديلات المطلوبة على سكربت العدو
                      اضافة متغير جديد لحفظ اخر خلية تواجد بها العدو

                      كود:
                      private var lastCell : GameObject;
                      ويتم تعديل شرط تشغيل الكود من
                      كود:
                              if(waitToStart <= 0)
                      الي

                      كود:
                      if(waitToStart <= 0 && (currentCell != lastCell || playerCell != playerScript.currentCell))
                      {قل لي وسوف أنسى, أرني ولعلي أتذكر, أشركني وسوف أفهم}

                      تعليق


                      • #41
                        وبخصوص هل ياخذ تقسم البيئة ورسم الخلايا وقت ليتم الانتهاء منه عن تجربة فى مساحة كبيرة لا يحتاج الا دقائق
                        {قل لي وسوف أنسى, أرني ولعلي أتذكر, أشركني وسوف أفهم}

                        تعليق


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


                          تعليق


                          • #43
                            بجد شغل جميل جدا

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

                            مشاء الله عليك اخ GameGun ربنا يوفقك
                            -:| My Games |:-
                            AfterEarth Online SOON

                            -:| Contact Us |:-
                            Facebook Page :- NTStudio

                            تعليق


                            • #44
                              المشاركة الأصلية بواسطة لا اعلم مشاهدة المشاركة
                              مشالله عليك فعلا هذا ما يحتاجه السكربت
                              التعديل سيغير كثيرااا في بطئ الجهاز
                              تسلم , وباذن الله تكون اسرع

                              المشاركة الأصلية بواسطة NTSoft مشاهدة المشاركة
                              بجد شغل جميل جدا

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

                              مشاء الله عليك اخ GameGun ربنا يوفقك
                              ربنا يخليك وبالتوفيق للجميع باذن الله
                              {قل لي وسوف أنسى, أرني ولعلي أتذكر, أشركني وسوف أفهم}

                              تعليق

                              يعمل...
                              X