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

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

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

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

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

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

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

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

محاسبه ی فاصله ی بین دو گیم ابجکت در یونیتی

جمعه, ۲ مرداد ۱۳۹۴، ۰۲:۱۰ ب.ظ
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 فاصله رو محاسبه می کنه.(در کتب ریاضی می تونید اثبات این فرمول ها رو پیدا کنید)

نظرات (۵)

سعادت در این است که انسان دنیا را همان طور که آرزو می کند ببیند.((کورنور))

dametoon garm :)

ممنون

موفق باشید و عاقبت بخیر.

۳۱ فروردين ۰۰ ، ۱۰:۱۰ محمد جواد حق بیگی

بسیار کاربردی به وبلاگم سر بزنید

https://irnelm.blog.ir

alert("ممنون از شما")
پاسخ:
س
به وبلاگ خودمم زیاد وقت نمی کنم سر بزنم
اومدی نظر بذار
خ

سلام دمتون گرم سایت خیلی عالی دارید ممنون ک هستید و به ما کمک میکنید.

فقط ی سوال این کد فقط فاصله رو به عدد مثبت به من میده و من میخوام عدد منفی هم داشته باشه اونموقع باید چه کدی بنویسم ؟

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

ارسال نظر

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