«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
فرق Vector3.Distance و Vector3.magnitude و Vector3.sqrMagnitude :: گیم اور _ بازیسازی با unity + مطالب متفرقه

گیم اور _ بازیسازی با unity + مطالب متفرقه

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

به نام خدا
--
گروه قدیم ما promakers.ir یا پرومیکرز بود که بالای هزار اموزش توش ساخته بودم به اسم sajjad3011 ولی حیف ادمین سایتش عوض کرد
حالا سوالی بود کاری بود این شمارمه

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

---
سوالی بود بذارید
نظر خصوصی نذارید
پاسخش سخته
دوست داشتید شماره بذارید تو واتساپ یا ایتا یا .... گروه بزنیم.
09358077198

بایگانی
پیوندها

۱ مطلب با کلمه‌ی کلیدی «فرق Vector3.Distance و Vector3.magnitude و Vector3.sqrMagnitude» ثبت شده است

gameover.blog.ir


یک اسکریپت سیشارپ به نام fasele (همنام با کلاسی که توی کد زیر نوشتم) بسازید.

دو متغیر go1 و go2 برای دریافات دو گیم ابجکت از inspector تعریف کنید که public باشه.((اگه private باشه خصوصی هست و تو inspector دیده نمیشه))

سپس توسط تابع محاسبه ی فاصله ی بین دو بردار سه بعدی (Vector3.Distance) فاصله رو حساب می کنیم و نمایش می دیم.


مثال csharp:
using UnityEngine;
using System.Collections;

public class fasele : MonoBehaviour {
    public GameObject go1;
    public GameObject go2;
    private float dist;

    void Update () {
        dist = Vector3.Distance (go1.transform.position, go2.transform.position);
        Debug.Log (dist);
    }
}


یادتون نره به دو گیم ابجکت رو که می خواید فاصله ی بینشون رو به طور داینامیک محاسبه کنید با ماوس توی inspector بندازید روی متغیرهای go1 و go2.

نکته : Vector3.Distance(a,b) معادل (a-b).magnitude هست. همینور معادل:

float distance = (g.transform.position - this. transform. position).sqrMagnitude;



فرق Vector3.Distance و Vector3.magnitude و Vector3.sqrMagnitude :



Vector3.Distance:
// C#
     public static float Distance(Vector3 a, Vector3 b)
     {
         Vector3 vector = new Vector3(a.x - b.x, a.y - b.y, a.z - b.z);
         return Mathf.Sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);
     }
Vector3.magnitude:
// C#
     public static float Magnitude(Vector3 a)
     {
         return Mathf.Sqrt(a.x * a.x + a.y * a.y + a.z * a.z);
     }


Vector3.sqrMagnitude:
// C#
     public static float SqrMagnitude(Vector3 a)
     {
         return a.x * a.x + a.y * a.y + a.z * a.z;
     }

sqrMagnitude سریع از Magnitude هست.

Vector3.Distance هم می یاد بر حسب تفریق برداری و سپس مجموع مربع هر یک از پارامترهای xو y و z فاصله رو محاسبه می کنه.(در کتب ریاضی می تونید اثبات این فرمول ها رو پیدا کنید)
۵ نظر موافقین ۰ مخالفین ۰ ۰۲ مرداد ۹۴ ، ۱۴:۱۰
مدیرکل