Unconfigured Ad Widget

تقليص

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

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

[Unity3D] للكبار فقط : القفزة البعيدة

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

  • #46
    جربتة وما اشتغل جيدا
    -:| My Games |:-
    AfterEarth Online SOON

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

    تعليق


    • #47
      المشاركة الأصلية بواسطة NTSoft مشاهدة المشاركة
      هل القفزة على شكل منحنى مثل المبين بالفيديو فى الردود الاولى ام ماذا ؟



      تقريباً زي المنحنى

      ولكن قم بزيادة المتغير للقفزة حتى تصبح ما تريد منحنى بزاوية مبلان 90 درجة


      مع اللف الشخصية والدوران بالماوس 360 درجة

      تعليق


      • #48
        المشاركة الأصلية بواسطة NTSoft مشاهدة المشاركة
        جربتة وما اشتغل جيدا
        المراحل امامك

        ولكن انتظر قليلاً او قم بتحريك الشخصية حتى تثبت جاذبية الشخصية على الأرض

        لانها لها تأثير Raycast بحركة الماوس مع الجاذبية

        بعد دقائق تثبت الشخصية على الأرض بفعل نقصان جاذبية raycast على الشخصية

        في النهاية يتحرك بشكل طبيعي وبقفز بنقرة على الماوس في نقطة محددة تحددها انت

        قم بتغير المتغير في القفزة حتى تصبح زاوية ميلان 90

        تعليق


        • #49
          المشاركة الأصلية بواسطة omarzonex مشاهدة المشاركة
          المراحل امامك

          ولكن انتظر قليلاً او قم بتحريك الشخصية حتى تثبت جاذبية الشخصية على الأرض

          لانها لها تأثير Raycast بحركة الماوس مع الجاذبية

          بعد دقائق تثبت الشخصية على الأرض بفعل نقصان جاذبية raycast على الشخصية

          في النهاية يتحرك بشكل طبيعي وبقفز بنقرة على الماوس في نقطة محددة تحددها انت

          قم بتغير المتغير في القفزة حتى تصبح زاوية ميلان 90
          اوكى راح احاول بعدين هاليومين مشغول فى شىء طارء
          -:| My Games |:-
          AfterEarth Online SOON

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

          تعليق


          • #50
            المشاركة الأصلية بواسطة omarzonex مشاهدة المشاركة
            المراحل امامك

            ولكن انتظر قليلاً او قم بتحريك الشخصية حتى تثبت جاذبية الشخصية على الأرض

            لانها لها تأثير Raycast بحركة الماوس مع الجاذبية

            بعد دقائق تثبت الشخصية على الأرض بفعل نقصان جاذبية raycast على الشخصية

            في النهاية يتحرك بشكل طبيعي وبقفز بنقرة على الماوس في نقطة محددة تحددها انت

            قم بتغير المتغير في القفزة حتى تصبح زاوية ميلان 90

            المشاركة الأصلية بواسطة omarzonex مشاهدة المشاركة
            تقريباً زي المنحنى

            ولكن قم بزيادة المتغير للقفزة حتى تصبح ما تريد منحنى بزاوية مبلان 90 درجة


            مع اللف الشخصية والدوران بالماوس 360 درجة
            المشاركة الأصلية بواسطة omarzonex مشاهدة المشاركة
            هذه معدلة مع الأضافة متغيرات للماوس للتصحيح القفزة بالماوس


            يوجد فرق بين الكود الجاهز والمضافة كود اخر للقفزة بطريقة الخطأ العشوائي


            قارن بينهما وستلاجظ الفرق

            اخي عمر الوضع الا عشوائي في انتظار الدالة المتبعة في الكورة الممتدة المنبثقة من الا مركزيه

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

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

            اجدها مثل الطائر اللذي لا يطير الا بجناحان وبالنهاية ستجد انك وصلت الي الطريقه الصحيحه المختومة والمتذبذبه

            فقط قم بتعديل بعض الارقام واي ارقام لا اعرف ماهي ولكن جرب حظك


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


            تعليق


            • #51
              ضع مربع cube مع Rigidbody

              وضع معه هذا السكربت

              كود PHP:
              var power =450 ;
              var 
              okjump=true;
              function 
              Update ()
               {   
                   var 
              forward Vector3 transform.TransformDirection(Vector3(0,1,1));
                   if(
              okjump==true)
                       {
                       
              rigidbody.AddForce (forward power);
                       
              okjump=false;
                       }
               } 

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

              كود PHP:
              var Distance float;
              var 
              projectile GameObject;
              var 
              cube GameObject;
              var 
              okjumto true;
              var 
              timetojump =1.0 ;

                  function  
              Update()
                  {
                      if (
              Input.GetKeyDown("mouse 0"))
                      {
                          var 
              hit:RaycastHit;
                          var 
              ray :Ray Camera.mainCamera.ScreenPointToRay(Input.mousePosition);

                          if (
              Physics.Raycast(rayhit))
                          {
                             
              MousePoint = new Vector3(hit.point.x0hit.point.z);
                             
              Instantiate(projectileMousePointtransform.rotation);
                             
              cube.transform.LookAt(Vector3(MousePoint.x,cube.transform.position.y,MousePoint.z));
                                     if(
              okjumto==true)
                                     {
                                           
              jumto();
                                     }     
                          }
                      }
                          
              Distance Vector3.Distance(MousePoint,cube.transform.position);
                          print(
              Distance);
               
                  }
                  
                   function  
              jumto()
                  {
                  
              okjumto=false;
                  yield 
              WaitForSeconds(timetojump);
                  
              cube.GetComponent(NewBehaviourScript).okjump=true;
                  
              okjumto=true;
                  } 
              هذا السكربت يوجد به جيم اوبجكت عدد 2

              كود PHP:
              var projectile GameObject;
              var 
              cube GameObject
              الاول ضع به cube
              والثاني ضع به New Prefab خالي من الكولايدر حتى تنظر الي مكان النقطة


              المشكلة في تحديد قيمة قوة القذف rigidbody.AddForce تحتاج لمعرفة معادلة المقذوفات
              علشان تتحكم بقوة القذف بناءا على المسافة
              علما ان المسافة سيتم طباعتها بالكونسلت


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


              تعليق


              • #52
                اهلا شباب

                اسف على التاخير بس كان عندى مشاغل كتيرة ولسة ما خلصت

                المهم الكود هذا الذى توصلت الية وسيفى بالغرض

                كود:
                using UnityEngine;
                using System.Collections;
                
                [RequireComponent(typeof(CharacterController))]
                public class PlayerController : MonoBehaviour
                {
                    private CharacterController characterController;
                    public float Speed = 10;
                
                    public float Distance;
                    public float CurrentDistance;
                
                    public Vector3 MousePoint = new Vector3();
                    public Vector3 Direction = new Vector3();
                
                    public GameObject ForPosition;
                    public GameObject JumpCenter;
                
                    public bool Jumping = false;
                    public bool Walking = false;
                
                    void Start()
                    {
                        JumpCenter = new GameObject("JumpCenter");
                        ForPosition = new GameObject("ForPosition");
                        ForPosition.transform.position = transform.position;
                
                        characterController = GetComponent<CharacterController>();
                    }
                
                    void Update()
                    {
                        if ((Input.GetKeyDown("mouse 0")) && !Jumping)
                        {
                            RaycastHit hit;
                            Ray ray = Camera.mainCamera.ScreenPointToRay(Input.mousePosition);
                            
                            if (Physics.Raycast(ray, out hit))
                            {
                                MousePoint = new Vector3(hit.point.x, hit.point.y, hit.point.z);
                                transform.LookAt(new Vector3(MousePoint.x, transform.position.y, MousePoint.z));
                                
                                Direction = Vector3.Normalize(MousePoint - transform.position);
                                Distance = Vector3.Distance(transform.position, MousePoint);
                                
                                Ray jc = new Ray(transform.position, transform.forward);
                                JumpCenter.transform.position = jc.GetPoint(Distance / 2);
                                JumpCenter.transform.rotation = transform.rotation;
                            }
                        }
                
                        CurrentDistance = Vector3.Distance(transform.position, MousePoint);
                
                        if (CurrentDistance >= 1)
                        {
                
                            if ((Input.GetKey("left ctrl")) && !Jumping && !Walking)
                            {
                                Jumping = true;
                            }
                            if (Jumping && !Walking)
                            {
                                ForPosition.transform.RotateAround(JumpCenter.transform.position, JumpCenter.transform.right, 5);
                                transform.position = ForPosition.transform.position;
                                Debug.Log("Jumping");
                            }
                            else if (!Jumping)
                            {
                                Walking = true;
                                characterController.SimpleMove(Direction * Speed);
                                ForPosition.transform.position = transform.position;
                                Debug.Log("Walking");
                            }
                        }
                        else
                        {
                            Jumping = false;
                            Walking = false;
                        }
                
                        Debug.DrawLine(transform.position, MousePoint, Color.blue);
                        Debug.DrawLine(transform.position, JumpCenter.transform.position, Color.red);
                    }
                هو ليس المنتج النهائى ولكن اهم شىء تعرف الميكانيكة شغالة ازاى الباقى سأضعة عليكم

                شكرا لكل الذى ساعد بالموضوع
                -:| My Games |:-
                AfterEarth Online SOON

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

                تعليق

                يعمل...
                X