Unconfigured Ad Widget

تقليص

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

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

مساعدة بسيطة لو امكن :) .

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

  • مساعدة بسيطة لو امكن :) .

    السلام عليكم .

    انا من فترة تكلمت عن طريقة صنع سيارة او تحريك سيارة في اليونتي و الحمد لله بعد بحث موسع وجدت طريقة الى انني لم اجد المشروع المرفق مع اليونتي (مشروع السيارة) في النهاية قمت بصنع سيارة بسيطة كما هي في الصورة و لكن مشكلتي انني لم استطع إضافة MeshRenderer الى الـ WheelCollider, تواجهنا بعض الأخطاء, في شروحات على الانترنت يقلي استخدم حيل بصرية لهذا الـ WheelCollider, صراحة ما افتهملي و انا اول مرة اعمل على مشروع سيارة مثل كدا, ياريت تعطونا أي معلومة ولو بسيطة و شكراً لكم .
    اضغط على الصورة لعرض أكبر. 

الإسم:	33.jpg 
مشاهدات:	1 
الحجم:	10.7 كيلوبايت 
الهوية:	3316803
    مدونتي Home OF Games تهتم بتطوير الألعاب
    قناتي
    YouTube

    لو كان Internet Explorer شجاعاً لطلب منك ان يكون متصفحك الشخصي, فعليك ان تكون شجاعاً كفاية لتقوم بكل خطوة صعبة
    .

  • #2
    هنالك دورة رائعة لصناعة لعبة للسيارات

    طبقتها في السابق وأفادتني كثيرا
    https://www.youtube.com/playlist?lis...5xFrhxNL76r4Te

    تعليق


    • #3
      و عليكم السلام

      بصراحة اخجل من الجواب لقلة معلوماتي و خبرتي خاصة في 3دي ولكن بما انك طلبت و لو معلومة صغيرة

      فسانصحك بما كنت سافعله مكانك :

      كنت راح اضع اوبجكت العجلات داخل اوبجكت السيارة و الكاميرا و اضع سكربتين مختلفين واحد للسيارة كلها و الاخر للعجلات طبعا اللغة c# :

      سكربت السيارة استخدم في الابديت Transform.translate

      و العجلات اضع لهم سكربت في الابديت transform.rotate(x,y,z) ; .... هنا لست متاكدا من المحور الذي ستدور حوله العجلات لذلك جرب كل مرة محور على حدى ولا .... تنسى حركة خفيفة هي المدخلات ... حتى تجعلها اكثر انسيابية اضرب المحور في المدخل حتى يظهر كانه يتحرك معه ثم في time.deltatime

      هذا اللي اعرفه و ان شاء الله تشتغل

      transform.rotate(x * input.getaxis("*****")* time.deltatime , y , z );sss



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

      والله اعلم

      تعليق


      • #4
        جرب هذا الدليل مضمون من عندي أنه راح يفيدك

        http://docs.unity3d.com/Manual/Wheel...rTutorial.html

        قال الله سبحانه وتعالى: (إنَّ اللهَ وملائكَتَهُ يُصَلُّونَ على النَّبي يا أَيُّها الذِّين آمَنوا صَلُّوا عَلَيهِ وَسَلِّمُوا تَسْلِيما ً)


        تعليق


        • #5
          اخي عماد للحصول على امثلة اليونيتي فاذهب الى هذا الرابط ستجد فيه ارشيف لجميع نسخ اليونيتي من الاصدار 5 وصاعداً وستجد انه وبجانب كل نسخة هناك خيار لتحديد نوعية التنزيل ل Mac او ل Windows، اضغط على Windows واختر Example Project وسيتم تحميل المشروع، مساحته حوالي 250 ميغا على ما اذكر، في حال كان الانترنت لديك بطيء فيمكنك ان تستخدم التورنت ولكن التورنت موجود في النسخ الرئيسية فقط ويمكنك من خلاله تحميل الامثلة فقط.
          عليك أن تفعل الأشياء التي تعتقد أنه ليس باستطاعتك ان تفعلها

          تعليق


          • #6
            شكراً اخي ماقصرت 😊
            مدونتي Home OF Games تهتم بتطوير الألعاب
            قناتي
            YouTube

            لو كان Internet Explorer شجاعاً لطلب منك ان يكون متصفحك الشخصي, فعليك ان تكون شجاعاً كفاية لتقوم بكل خطوة صعبة
            .

            تعليق


            • #7
              شكراً اخي و اضن ان تفكيرك هو نفس تفكيري لكن اعرف ان الطريقة دي مابتعطينا حل لاني جربتها من قبل، مشكور ياغالي ماقصرت ☺
              مدونتي Home OF Games تهتم بتطوير الألعاب
              قناتي
              YouTube

              لو كان Internet Explorer شجاعاً لطلب منك ان يكون متصفحك الشخصي, فعليك ان تكون شجاعاً كفاية لتقوم بكل خطوة صعبة
              .

              تعليق


              • #8
                شكراً اخي حقيقةً انا تابعت الطريقة في هذا الدرس لكن للاسف مايوضح طريقة عمل ريندر لل wheelcollider على العموم شكراً لك 😚
                مدونتي Home OF Games تهتم بتطوير الألعاب
                قناتي
                YouTube

                لو كان Internet Explorer شجاعاً لطلب منك ان يكون متصفحك الشخصي, فعليك ان تكون شجاعاً كفاية لتقوم بكل خطوة صعبة
                .

                تعليق


                • #9
                  شكراً اخي محمد هذا ماكنت اطلبة بالضبط ان شاء الله بنزل المشروع و اراجعة، شكراً 😉
                  مدونتي Home OF Games تهتم بتطوير الألعاب
                  قناتي
                  YouTube

                  لو كان Internet Explorer شجاعاً لطلب منك ان يكون متصفحك الشخصي, فعليك ان تكون شجاعاً كفاية لتقوم بكل خطوة صعبة
                  .

                  تعليق


                  • #10
                    شباب صارت مشكلة جديدة تواجهنا, المشكلة انة لما اغير دوران العجلة يتغير حجمة مع العلم ان العجلة هي ابن من الكائن Car, اضن انة في مشكلة في ابعاد الكائن لاني صراحة ماوجدت لة حل, هذي صورة علشان يتوضح اكثر:
                    هذي صورة المشكلة عند تغير دوران العجلة و تلقائياً الحجم يتغير !


                    و هذي صورة للعجلة في الوضع الطبيعي (الدوران = 0)


                    اضن انة لازم اعدل شيء على البرنامج او شيء من هذا القبيل, اتمنى تساعدونا و شكرا
                    مدونتي Home OF Games تهتم بتطوير الألعاب
                    قناتي
                    YouTube

                    لو كان Internet Explorer شجاعاً لطلب منك ان يكون متصفحك الشخصي, فعليك ان تكون شجاعاً كفاية لتقوم بكل خطوة صعبة
                    .

                    تعليق


                    • #11
                      اخ عماد هل يمكنك ان تضع لنا الكود الذي استخدمته لتدوير التمثيل المرئي للعجلات، كي نقوم بمناقشته.
                      عليك أن تفعل الأشياء التي تعتقد أنه ليس باستطاعتك ان تفعلها

                      تعليق


                      • #12
                        اخي محمد لو كنت تقصد على المشكلة فالمشكلة دي تظهر عندما اغير دوران العجلة من ال transform مباشرة دون تدخل البرمجة او حتى مع تدخل البرمجة تحصل نفس المشكلة, بالنسبة للكود استخدمت الكود الموجود في مستندات اليونتي:
                        كود:
                         using UnityEngine;
                            using System.Collections;
                            using System.Collections.Generic;
                         
                            [System.......izable]
                            public class AxleInfo {
                                public WheelCollider leftWheel;
                                public WheelCollider rightWheel;
                                public bool motor;
                                public bool steering;
                            }
                                 
                            public class SimpleCarController : MonoBehaviour {
                                public List(AxleInfo) axleInfos; 
                                public float maxMotorTorque;
                                public float maxSteeringAngle;
                                 
                                // finds the corresponding visual wheel
                                // correctly applies the transform
                                public void ApplyLocalPositionToVisuals(WheelCollider collider)
                                {
                                    if (collider.transform.childCount == 0) {
                                        return;
                                    }
                                 
                                    Transform visualWheel = collider.transform.GetChild(0);
                                 
                                    Vector3 position;
                                    Quaternion rotation;
                                    collider.GetWorldPose(out position, out rotation);
                                 
                                    visualWheel.transform.position = position;
                                    visualWheel.transform.rotation = rotation;
                                }
                                 
                                public void FixedUpdate()
                                {
                                    float motor = maxMotorTorque * Input.GetAxis("Vertical");
                                    float steering = maxSteeringAngle * Input.GetAxis("Horizontal");
                                 
                                    foreach (AxleInfo axleInfo in axleInfos) {
                                        if (axleInfo.steering) {
                                            axleInfo.leftWheel.steerAngle = steering;
                                            axleInfo.rightWheel.steerAngle = steering;
                                        }
                                        if (axleInfo.motor) {
                                            axleInfo.leftWheel.motorTorque = motor;
                                            axleInfo.rightWheel.motorTorque = motor;
                                        }
                                        ApplyLocalPositionToVisuals(axleInfo.leftWheel);
                                        ApplyLocalPositionToVisuals(axleInfo.rightWheel);
                                    }
                                }
                            }
                        المصدر :http://docs.unity3d.com/Manual/Wheel...rTutorial.html

                        من حسب فهمي للكود انة في البداية عرفت متغيرين من نوع WheelCollider يمثلان العجلتان على اليمين و اليسار, ايضاً عرفت متغير من نوع bool باسم motor اي ان هذة العجلة لها حركة اي في حالة حركت السيارة يتم عمل عزم حركي للعجلة لكن هذا متغير عادي و هو سيربطة لاحقاً, ايضاً متغير آخر من نفسة النوع بأسم Steering طبعاً اخ محمد و كما وضحتلي من قبل ان هذا المصطلح يعني دوران العجلات, لكن قبل هذا كلة لاحظ انة استخدم نظام التسلسل [System.......izable] علشان يظهر المتغيرات بالترتيب من الكلاس بحيث يربطها لاحقاً بقائمة بأسم axleInfos لكن قبل هذا استورد نطاق الاسم Generic, هنا عرف متغيرين من نوع float الاول لاقصى حد للعزم الحركي و الثاني لاقصى دوران للعجلتين الاماميتين.

                        الان انتهى من كتابة المتغيرات و حان وقت تطبيقها, في البداية انشئ دالة بأسم ApplyLocalPositionToVisuals يتم فيها تطبيق موقع العجلات حسب مافهمت لكن لاحظ ان هذة الدالة تعيد بارامتر من نوع WheelCollider, بدأ بأول شرح و عرف فية انة في حالة كان عدد الابناء (WheelCollider) عددهم صفر اي لاوجود لهم راح يطلعنا من الكود او لا حاجة لتغيير شيء, في الكود اسفلة عرفت متغير من نوع tansform بأسم visualWheel و سيتم تطبيق موقع العجلات اعتماداً علية, اسفلة استخدم الدالة GetWorldPose و هذة الدالة تطلب متغير من نوع out vector3 و الثاني out Quaternion و هذا بالضبط ماعملة قام بأنشاء المتغيرين بأسم position و rotation, الان قام بتحديد موقع العجلات المرئية اعتماداً على المتغيرين لانة تم فيهما تخزين موقع العجلات اعتماداً على فضاء العالم, الى هنا تنتهي الدالة.

                        في FixedUpdate عرف متغير من نوع float يمثل محرك السيارة و من خلالة قام بضرب قيمة المتغير maxMotorTorque في الادخال Vertical لانة في حالة تم الضغط على w او s راح تزيد قيمة المتغير و هنا سيتم ضرب هذة القيمة في المتغير maxMotorTorque, لمراجعة قيمة Vertical من Edit > project Setting > Input, نفس الشيء في السطر الثاني الى انة ضرب القيمة هذا المرة في maxSteeringAngle و استخدم Horizontal, في السطر اسفلة استخدم foreach للدوران على جميع المتغيرات في الفئة AxleInfo و في الداخل وضع اول شرط وهو في حالة تم تفعيل المتغير streeing سيتم تطبيق دوران العجلات علية اعتماداً على المتغير steerAngle الذي يطلب متغير من نوع float, اما في السطر الثاني في حالة كان المتغير motor مفعل او ان قيمتة ساوت true راح يتم تطبيق حركة العجلات علية اعتماداً على المتغير motorTorque الذي يقوم بعمل عزم حركي للعجلات وهو الطريقة الانسبة لتدوير العجلات, الاحظ في الاخير اعاد استخدام البارامتر collider ان صحت العبارة و قام بربط العجلتان فية هذا حسب فهمي لكن عند تجربتي للكود قمت بحذف السطرين الاخيرين و اشتغل الكود دون اي مشاكل, ما اعرف مالحكم من استخدامة لكن اضن ان الدرس دا وسع معرفتي اكثر في برمجة حركة السيارات .
                        مدونتي Home OF Games تهتم بتطوير الألعاب
                        قناتي
                        YouTube

                        لو كان Internet Explorer شجاعاً لطلب منك ان يكون متصفحك الشخصي, فعليك ان تكون شجاعاً كفاية لتقوم بكل خطوة صعبة
                        .

                        تعليق


                        • #13
                          اخ عماد مشكلة تشوه الشكل تكمن في ما يسمى non uniform scaling للكائن الاب يعني ان الكائن الاب له قيمة scale مختلفة على كل محور وعندما تقوم بتدوير الكائن الابن فإنه يتم تشويهه، لذا في حال طبقت الدرس السابق فإنك قمت باضافة التمثيل المرئي للعجلة على شكل كائن ابن لل Wheel Collider (بحسب الدرس) لذا تأكد من ان الكائن الاب الذي يحتوي على ال Wheel Collider يحتوي على قيمة Scale ثابتة على جميع المحاور، في حال لم تتمكن من حل المشكلة بهذه الطريقة فأنا انصحك بأن تبني السيارة بالشكل الموجود في الامثلة المرفقة مع اليونيتي لأنني جربته ولم اجرب هذا الدرس.
                          عليك أن تفعل الأشياء التي تعتقد أنه ليس باستطاعتك ان تفعلها

                          تعليق


                          • #14
                            أنا رفعت لك مشروع عملته بالدرس, ان شاء الله يفيدك

                            رابط المشروع

                            قال الله سبحانه وتعالى: (إنَّ اللهَ وملائكَتَهُ يُصَلُّونَ على النَّبي يا أَيُّها الذِّين آمَنوا صَلُّوا عَلَيهِ وَسَلِّمُوا تَسْلِيما ً)


                            تعليق


                            • #15
                              شكراً للجميع، بالنسبة للسياراة قمت باخذها من مشروع اليونتي و برمجتها من جديد و توصلت لنتيجة شبة كاملة لحركة السيارة من ربط ال meshs في الwheels الى وضع تاثير الطرقات الوعرة و الكبح التلقائي، اسكربت المشروع تبع اليونتي ما افتهملي لكن رجعت و بنيت السيارة باسكربت ثاني.
                              مدونتي Home OF Games تهتم بتطوير الألعاب
                              قناتي
                              YouTube

                              لو كان Internet Explorer شجاعاً لطلب منك ان يكون متصفحك الشخصي, فعليك ان تكون شجاعاً كفاية لتقوم بكل خطوة صعبة
                              .

                              تعليق

                              يعمل...
                              X