«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
تابع Lerp در یونیتی،تابع Slerp در unity_حرکت آرام از نقطه اول به دوم،حرکت نرم بین دو نقطه در یونیتی :: برنامه نویسی+طراحی وب+ساخت بازی+نرم افزار +اپلیکیشن

برنامه نویسی+طراحی وب+ساخت بازی+نرم افزار +اپلیکیشن

gameover private channel
لینک کانال خصوصی گیم اور
https://t.me/gameoverblog

هر پکیجی که توان خریدش ندارید رایگان.اگه مشکل مالی ندارید حمایت کنید.
-
اعمالی که انجام می دهیم، اگر ذره ای و مثقالی باشد، به خودمان باز می گردد و بازتابش آنها را در زندگی خواهیم دید.زلزال۷
او کسی است که (روح) شما را در شب (به هنگام خواب) میگیرد; و از آنچه در روز کرده ‏اید، با خبر است; سپس در روز شما را(از خواب) برمیانگیزد; و (این وضع همچنان ادامه مییابد) تا سرآمد معینی فرا رسد; سپس بازگشت شما به سوی اوست; و سپس شما را از آنچه عمل میکردید، با خبر میسازد.انعام۶۰
دلها به یاد خدا آرام میگیرد.رعد ۲۷
زندگی دنیا تنها بازی و سرگرمی، و تجمل پرستی و تفاخر در میان شما و افزون طلبی در اموال و فرزندان است . حدید 20
آن خدایی که آدمی را از خون بسته (که تحول نطفه است) بیافرید
بخوان و (بدان که) پروردگار تو کریم‌ترین کریمان عالم است
آن خدایی که بشر را علم نوشتن به قلم آموخت
به آدمی آنچه را که نمی‌دانست تعلیم داد.
راستی که انسان سرکش و مغرور می‌شود.
چون که خود را در غنا و دارایی ببیند. علق ۲- ۷
این زندگانی چند روزه دنیا افسوس و بازیچه‌ای بیش نیست، عنکبوت ۶۴
در روی زمین به تکبر راه مرو که نمی توانی زمین را بشکافی و هرگز قامتت به بلندای کوهها نمی رسد. اسرا ۳۷
در آنچه خداوند بر تو بخشیده است، سرای آخرت را بجوی و سهم خود را از دنیا فراموش مکن و همانگونه که خدا به تو نیکی کرده است نیکی کن و هرگز فساد در زمین منما که خدا مفسدان را دوست ندارد. قصص ۷۷
و هرگاه نعمت و رحمتی به انسان بچشانیم و سپس آن را از او برگیریم او مأیوس و نومید میشود و به کفران و ناسپاسی بر میخیزد. هود ۹
بندگان مرا آگاه ساز که من بسیار آمرزنده و مهربانم.حجر۴۹
از رحمت خدا ناامید مباشید جز کافر هیچ کس از رحمتش نا امید نیست.یوسف۸۷
پس به یاد من باشید تا به یاد شما باشم. بقره ۱۵۲
زندگانی دنیا جز متاع فریبنده نیست . آل عمران ۱۸۵
از آنچه به شما روزی داده ایم پیش از آنکه روزی فرا رسد که نه معامله ای وجود دارد و نه دوستی و شفاعت ، انفاق کنید. بقره ٢۴۵
بسا چیزی را ناخوش داشته باشید که آن به سود شماست و بسا چیزی را دوست داشته باشید که به زیان شماست، و خدا میداند و شما نمیدانید. بقره۲۱۶
آیات (خود) را برای شما بیان کردیم شاید اندیشه کنید...حدید۱۷

پیوندهای روزانه
پیوندها

slerp هم مثل lerp هست. شما lerp رو درک کنید اونم یادمی گیرید.

یه اسکریپت cs با کد زیر ایجاد کنید :

//lerp.cs
using UnityEngine;
using System
public class LightLerp: MonoBehaviour
{
private Vector3 newPosition;
void Awake()
{
newPosition = transform.position;
}
void Update()
{
PositionChanging();
}

PositionChanging()
{
Vector3 positionA = new Vector3(-5,3,0);
Vector3 positionB = new Vector3(5,3,0);

if(Input.GetKeyDown(KeyCode.Q))
newPosition = positionA;

if(Input.GetKeyDown(KeyCode.E))
newPosition = positionB;

transform.posision=newPosision;
}
}

اگه کد اشتباه داشت برطرف کنید چون همشون رو از روی فیلم سایت اصلی یونیتی تایپ کردم.
یه نور نقطه ای بذارید روی صحنه(point light) . شدت نور رو کمی زیاد کنید(خصوصیت Identsity) تا روی plane به چشم بیاد.
اسکریپت فوق رو بدید به نور(بکشید روش رها کنید).
اجرا کنید .
طبق اسکریپت اگه Q بزنیم نور به موقع positionA میره و اگه E بزنیم به نقطه ی positionB .
شما اینو اجرا کنید می تونید ببینید چی می گم.( نور جابجا میشه )

اما اصلا زیبایی خاصی نداره و فقط عمل پرش رو انجام میده و پیوسته نیست و گسسته هست.

برای اینکه نور با یک سرعت تعریف شده از نقطه ی A به نقطه ی B بره از تابع Lerp استفاده می کنیم.

مثال شکل کلی استفاده از Lerp :

transform.position = Vector3.Lerp(transform.position, newPosition, smooth * Time.deltaTime);

تابع Lerp سه تا پارامتر می گیره :

From : از
To: به
t : من بهش می گم time و شما هم بگید time.
(با این که t مخفف چی هست و چی نیست یا اصلا غلط هست یا درست هم کاری نداشته باشید بذارید ما درس خودمون رو بدیم و اگه زیبا نبود بیخیالش بشید. اینم بگم خودم مقالات سایت رفرنس و سایت های ایرانی و خارجی زیادی رو مطالعه می کنم ولی مهم نیست همون time اسم گذاری کنید.)

به جای t مقدار smooth * Time.deltaTime رو بدید و به جای From و To هم متغیری از نوع بردار سه بعدی (در درس ما A و B) رو بدید.

smooth هم در بخش public(بالای برنامه) تعریف می کنید از نوع float(اعشاری).

و بعد از نسنب دادن اسکریپت به نور نقطه ای، خصوصیت smooth رو با مقدار 1 عدد بدید(اگه بیشترش کنید روان بودن و سرعت حرکت بیشتر میشه. این smooth داره در Time.deltaTime ضرب میشه و طبیعی هست دیگه هرچی بیشتر باشه سرعت زمانی حرکت نور بالا میره)

وقتی پروژه رو اجرا کنید با فشردن کلید Q و E نور به آرومی بین نقاط سه بعدی A و B تغییر موقعیت میده.

تا شما یه چایی بخورید من یاد میدم که Lerp چه کاربردهای دیگه ای داره و کجاها میشه ازش استفاده کرد.

سه مثال کاربردی از روش استفاده از تابع Lerp :

معمولا گیم ابجکت های مختلفی هستند که از تابع Lerp استفاده می کنند.

سه حالت رو مثال می زنم:

حالت اول :

کد:
transform.position = Vector3.Lerp(transform.position, newPosition, smooth * Time.deltaTime);
کد بالا رو شرح دادم.پس بیخیالش.

حالت دوم :
کد:
light.intensity = Mathf.Lerp(light.intensity, newIntensity, smooth * Time.deltaTime);
این کد باعث میشه شدت نور از حالت فعلی به حالت newIntensity بره و طبق دستوراتی که اسکریپتی که بهتون میدم میگم چیکار کنید.

حالت سوم :
کد:
light.color = Color.Lerp(light.color, newColour, smooth * Time.deltaTime);
این کد برای تغییر رنگ نور از رنگ فعلی به رنگ جدید که در متغیر newColour تعریف شده بکار می ره. تیو اسکریپت که در ادامه میارم یادتون میدم ببینید چقدر زیباست و یاد گرفتنش از روی راهنمایی من چه قدر خوبه.
-
این کلیپ بی کیفیت که من ساختم رو ببینید تا قدرت Lerp رو درک کنید :
http://s5.picofile.com/file/8153633500/clip_lerp_func_unity3d_sajjad3011.zip.html

-
حالا روش ساخت :

یه پروژه 3d ایجاد کنید با این اجزا : main Camera ، plane و Point Light

اسکریپت js زیر رو بدید به نور نقطه ای (point Light):

#pragma strict

public var smooth : float;

private var newPosition : Vector3;
private var newIntensity : float;
private var newColour : Color;


function Awake ()
{
    newPosition = transform.position;
    newIntensity = light.intensity;
    newColour = light.color;
}


function Update ()
{
    PositionChanging();
    IntensityChanging();
    ColourChanging();
}


function PositionChanging ()
{
    var positionA : Vector3 = new Vector3(-5, 3, 0);
    var positionB : Vector3 = new Vector3(5, 3, 0);
    
    if(Input.GetKeyDown(KeyCode.Q))
        newPosition = positionA;
    if(Input.GetKeyDown(KeyCode.E))
        newPosition = positionB;
    
    transform.position = Vector3.Lerp(transform.position, newPosition, smooth * Time.deltaTime);
}


function IntensityChanging ()
{
    var intensityA : float = 0.5f;
    var intensityB : float = 5f;
    
    if(Input.GetKeyDown(KeyCode.A))
        newIntensity = intensityA;
    if(Input.GetKeyDown(KeyCode.D))
        newIntensity = intensityB;
    
    light.intensity = Mathf.Lerp(light.intensity, newIntensity, smooth * Time.deltaTime);
}


function ColourChanging ()
{
    var colourA : Color = Color.red;
    var colourB : Color = Color.green;
    
    if(Input.GetKeyDown(KeyCode.Z))
        newColour = colourA;
    if(Input.GetKeyDown(KeyCode.C))
        newColour = colourB;
    
    light.color = Color.Lerp(light.color, newColour, smooth * Time.deltaTime);
}

بعد از افزودن اسکریپت فوق به نور نقطه ای، نور رو انتخاب کنید و در پنجره ی خصوصیات یا inspector پارامتر Smooth رو بدید 1 یا 2 (یه عدد غیر صفر معمولا از 1 به بالا بدید که قبلا توضیحش دادم)

اجرا کنید .
با کلید های زیر بازی کنید:
Q و E
A و D
Z و C
--
خروجی :
http://s5.picofile.com/file/8153635742/lerp_noor.jpg
می بینید چقدر زیباست ؟ دقیقا عین چشماتون happy
همین الان تست کنید و ببینید چه قدر قشنگه کار با یونیتی.
کاربرد این کد در هوش مصنوعی هم هست و دستوری به اسم (Quaternion.Slerp(From,To,Time داریم که برای درکش فقط کافیه همین Lerp ای که بالا توضیح دادم رو تست کنید و بعدش Slerp همون پارامترها رو می گیره که یه جایی به دردتون میخوره توضیحات من.
موافقین ۰ مخالفین ۰ ۹۳/۱۲/۲۶
مدیرکل

نظرات (۱)

آقا دمت گرم خیلی ممنون که توضیح دادی
خدا خیرت بده
برات آرزوی موفقیت دارم.
پاسخ:
موفق باشید.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی