Unconfigured Ad Widget

تقليص

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

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

نقرشات Unity

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

  • نقرشات Unity

    بسم الله الرحمن الرحيم
    افتح هذا الموضوع كي نتشارك فيه المعلومات حول محرك Unity ولا اقصد معلومات عامة بل معلومات نادرة او مميزة او فيها خدعة،لذا كل من لديه مثل هذه المعلومات التي لاتسحق فيديو او درس كامل ويراها مفيدة ولم تنشر من قبل فليضعها هنا.
    و ارجوا من الجميع تقليل الردود وللمحافظة على التنظيم سأضع فهرس للنقرشات ومن يريد وضع معلومة فليكتب كلمة نقرشة بخط كبير وباللون الاحمر لامكانية تمييزه مثل هكذا:
    نقرشة:
    وارجو عدم وضع التواقيع في الردود لأنها طويلة وبالوان متعددة كي نحافظ على التنسيق.
    عليك أن تفعل الأشياء التي تعتقد أنه ليس باستطاعتك ان تفعلها

  • #2
    نقرشة:سأشرح الدالة Lerp في الفئة Vector3،هذه الدالة من نوع استاتيك يعني تستدعيها فورا من مستوى الكلاس وتعيد لنا Vector3 وتأخذ ثلاث باراميترات الاول من نوع Vector3 والثاني كذلك اما الثالث فهو من نوع float.
    وظيفة هذه الدالة هي اعادة احداثيات نقطة بين نقطتين بالاعتماد على كسر يحدد موقع هذه النقطة مثلا 0.5 يعني ان موقع النقطة في المنتصف بين النقطتين.
    ومن امثلة استخدام هذه الدالة تحريك جسم على طول خط ما،لاحظ المثال وهو من مستندات اليونتي:
    كود:
    [LEFT]using UnityEngine;
    using System.Collections;
    
    public class ExampleClass : MonoBehaviour {
        public Transform startMarker;
        public Transform endMarker;
        public float speed = 1.0F;
    
        private float startTime;
        private float journeyLength;
    
        public Transform target;
        void Start() {
            startTime = Time.time;
            journeyLength = Vector3.Distance(startMarker.position, endMarker.position);
        }
        void Update() {
            float distCovered = (Time.time - startTime) * speed;
            float fracJourney = distCovered / journeyLength;
            transform.position = Vector3.Lerp(startMarker.position, endMarker.position, fracJourney);
        }
    }[/LEFT]
    كود:
    [LEFT]
    	var startMarker: Transform;
    	var endMarker: Transform;
    	var speed = 1.0;
    
    	private var startTime: float;
    	private var journeyLength: float;
    	
    	var target : Transform;
    	
    	function Start() {
    	   startTime = Time.time;
    	   journeyLength = Vector3.Distance(startMarker.position, endMarker.position);
    	}
    	
    	function Update () {
    	   var distCovered = (Time.time - startTime) * speed;
    	   var fracJourney = distCovered / journeyLength;
    	   transform.position = Vector3.Lerp(startMarker.position, endMarker.position, fracJourney);
    	}[/LEFT]
    في البداية عرفنا متغيرين الاول لتحديد نقطة البداية والثاني لتحديد نقطة النهاية وكلاهما من نوعTransform ثم عرفنا متغير السرعة لتحديد سرعة حركة الجسم،ثم عرفنا متغيرين خاصين الاول لتحديد زمن البداية والثاني لتحديد طول الرحلة ثم عرفنا متغيرا يحتوي على الكائن الذي سنحركه.
    في الدالة Start وضعنا كود يضع زمن البداية على انه الزمن الحالي والزمن الحالي كما نعرف في الدالة Start بانه الزمن الذي تم تفعيل السكريبت فيه وقبل تنفيذ اي دالة Update،ايضا وضعنا داخلها سطرا لحساب المسافة بين نقطة البداية ونقطة النهاية من خلال دالة اسمها Distance وهي تعيد لنا المسافة بين نقطتين نرسلهما في الباراميترات وتعيدها على شكل float.
    في الدالة Update عرفنا اولا متغيرا لمعرفة المساف المقطوعة والمسافة المقطوعة تساوي الزمن المقطوع بالسرعة،ولاحظ ان هذا المتغير يزداد لوحده كل فرام بسبب ازدياد الوقت،ثم عرفنا متغيرا يمثل نسبة المسافة المقطوع على كامل الرحلة وهو ايضا يزداد كل فرام بسبب ازدياد المسافة المقطوعة فيكون اولا 0.1 ثم 0.2 ثم 0.5 وهكذا الى ان يصبح 1.
    جئنا الى الاهم وهو اسخدام الدالةLerp هذه الدالة تعيد احداثيات بين نقطة البداية ونقطة النهاية اعتمادا على الكسر وبما ان الكسر في ازدياد فان النقطة تتحرك الى الامام بالتدريج لأن الكسر يزداد بالتدريج و ببساطة ساوينا بين موقع الجسم المراد تحريكه وهذه النقطة.
    لو كان الكسر صفر فان الاحداثيات المعادة ستكون احداثيات نقطة البداية ولو كان واحد فان الاحداثيات ستكون احداثيات نقطة النهاية.
    لاحظ ان الدالة Lerp في اساسها لا تقوم بفعل التحريك بل جاء التحريك بسبب تغير قيمة الكسر كل فريم.
    الآن ضع السكريبت على اي كائن واملأ المتغيرات بثلاثة اجسام بداية ونهاية وهدف وتلاعب بالسرعة وجرب.
    استخدمت هذه الدالة في جعل الكاميرا تتبع اللاعب افقيا في لعبة بلاتفورم خصوصا انها تنقل الكائن بالتدريج.
    يوجد مثيلات لهذه الدالة في Vector2,Vector4,Color وغيرها ولكن تقريبا المبدأ واحد.
    عليك أن تفعل الأشياء التي تعتقد أنه ليس باستطاعتك ان تفعلها

    تعليق


    • #3
      أنبه الى شيء اخر و هو ان دالة lerp يمكن استخدامها بنداء واحد لتحقيق معادلة ثلاثية

      تعليق

      يعمل...
      X