محاسبه ی فاصله ی بین دو گیم ابجکت در یونیتی
جمعه, ۲ مرداد ۱۳۹۴، ۰۲:۱۰ ب.ظ
gameover.blog.ir
یک اسکریپت سیشارپ به نام fasele (همنام با کلاسی که توی کد زیر نوشتم) بسازید.
دو متغیر go1 و go2 برای دریافات دو گیم ابجکت از inspector تعریف کنید که public باشه.((اگه private باشه خصوصی هست و تو inspector دیده نمیشه))
سپس توسط تابع محاسبه ی فاصله ی بین دو بردار سه بعدی (Vector3.Distance) فاصله رو حساب می کنیم و نمایش می دیم.
یادتون نره به دو گیم ابجکت رو که می خواید فاصله ی بینشون رو به طور داینامیک محاسبه کنید با ماوس توی inspector بندازید روی متغیرهای go1 و go2.
نکته : Vector3.Distance(a,b) معادل (a-b).magnitude هست. همینور معادل:
فرق Vector3.Distance و Vector3.magnitude و Vector3.sqrMagnitude :
Vector3.Distance:
Vector3.sqrMagnitude:
یک اسکریپت سیشارپ به نام 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 فاصله رو محاسبه می کنه.(در کتب ریاضی می تونید اثبات این فرمول ها رو پیدا کنید)
Vector3.Distance هم می یاد بر حسب تفریق برداری و سپس مجموع مربع هر یک از پارامترهای xو y و z فاصله رو محاسبه می کنه.(در کتب ریاضی می تونید اثبات این فرمول ها رو پیدا کنید)