<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های برنامه نویس</title><link>https://virgool.ir/feed/@m_81556443</link><description></description><language>fa</language><pubDate>2026-11-12 12:51:05</pubDate><image><url>https://virgool.ir/images/default-avatar.jpg</url><title>برنامه نویس</title><link>https://virgool.ir/@m_81556443</link></image><item><title>حرکت دوربین و کاراکتر دریونیتی</title><link>https://virgool.ir/@m_81556443/حرکت-دوربین-و-کاراکتر-دریونیتی-oqva9cifo9fv</link><description>برای حرکت دوربین و کاراکتر  ، دو مدل حرکت پیاده سازی شد :1- حرکت کاراکتر با تاکید بر پوزیشن : یعنی هر وقت کاراکتر به نقطه مقصد درون مسیربرسه ، نقطه بعدی حرکت ست میشه .    void Update()       &#xA;  if (iPoint &lt; 1)        {     &#xA;   // اگر به نقطه یک رسید حرکت متوقف بش   iPoint = 0  return; }&#xA; if (storedPoint!=iPoint)     // به مقصد قبلی رسیده و باید حرکت جدید رو شروع کنه&#xA; {   &#xA;  storedPoint = iPoint;  &#xA;  StartCoroutine(MoveFunction())  ;  &#xA; }//updateدراین روش دوربین و کاراکتر هردو بایک الگو در سورس حرکت می کنند فقط در دوربین پوزیشن z ,xثابت می مونه.دراین روش کاراکتر روی نقاط مسیر حرکت میکنه ودرهر نقطه ، یک ترمز می زنه و سرعتش صفرمیشه.بنابراین سرعت حرکت بین دو نقطه ثابت نیست و زیاد و کم میشه.  IEnumerator MoveFunction()  &#xA;  {     //set Up newPosition x,y,z//loop of moving &#xA;       float timeSinceStarted = 0f;    &#xA;   while (true)       {   &#xA;          timeSinceStarted += Time.deltaTime*speed ;///10;        &#xA;     this.transform.position =     Vector3.Lerp(this.transform.position, newPosition, timeSinceStarted)     &#xA;      // If the object has arrived, stop the coroutine     &#xA;  if (this.transform.position == newPosition)//recived       &#xA; {            iPoint--;// set next point     &#xA;              yield break;  &#xA;    }      // Otherwise, continue next frame &#xA;     yield return null;  &#xA; }2- حرکت کاراکتر با تاکید بر سرعت متوسط : یعنی فاصله بین دو نقطه محاسبه میشه . سرعت ثابت درنظرگرفته میشه و زمان حرکت محاسبه میشه و تا کمی مونده به پایان زمان حرکت می کنه نزدیکای اخر زمان میره سرنقطه بعدی. void Update(){&#xA;        if (time &gt;= 1.0f)      {   &#xA;              time -= 1.0f; &#xA;              SetNextPoint();&#xA;       }&#xA;    transform.position = Vector3.Lerp(p1, p2, time);&#xA;}&#xA;دراین روش  کاراکتر با این الگوی سورس حرکت می کنه و دوربین با حرکت کاراکترحرکت میکنه. فقط پوزیشن   x  دوربین باید ثابت باشه که حرکت های افقی اذیت کننده نباشه. Z هم ثابت باشه.   void SetNextPoint()&#xA;{      &#xA;         p1 = p2;&#xA;        //get nextpoint        &#xA;       p2 = nextpoint.position;         // get next segment of points (p1,p2)&#xA;      float distance = (p1 - p2).magnitude; // distance between current segment&#xA;       speedFactor = (1.0f / distance); // 10.0f is some custom factor &#xA;  }دراین روش کاراکتربا سرعت ثابت و نرم درمسیر حرکت می کنه .</description><category>برنامه نویس</category><author>برنامه نویس</author><pubDate>Wed, 23 Dec 2020 17:56:50 +0330</pubDate></item></channel></rss>