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

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

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

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

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

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

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

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

منبع:gameover.blog.ir

http://s3.picofile.com/file/8226499542/targetFace.jpg

اسکریپت سیشارپ face2face زیر رو بدید به هر دو اسپرایت دلخواهتون.
سپس در inspector اسپرایت دشمن یا اسپرایتی که می خواید بهش نگاه بشه رو بکشید روی متغیر target .

//Author:Sajjad3011
//face2face.cs
using UnityEngine;
using System.Collections;

public class face2face: MonoBehaviour {

	public Transform target;
	private Vector3 v_diff;
	private float atan2;
	
	void Update()
	{
		v_diff = (target.position - transform.position);    
		atan2 = Mathf.Atan2 ( v_diff.y, v_diff.x );
		transform.rotation = Quaternion.Euler(0f, 0f, atan2 * Mathf.Rad2Deg -90);
	}
}


مثال بالا برای حالت top-down بود.



اما مثال(توضیح) زیر برای حالت platform یا از پهلو هست.

فرض کنید دو گیم ابجکت دو بعدی داریم می خوایم به هم نگاه کنن در هر حالتی.


هر شی اگه در سمت چپ بود به سمت راست وگرنه به چپ نگاه کنه.(به هر شی یک اسکریپت مشترک میدیم).


روش کار:

اگه x کمتر بود، localScale.x رو منفی کنید ویلا مثبت


ببینید

شما x دو گیم ابجکت رو نسبت به هم مقایسه کنید

اگه x کمتر بود، localScale.x رو منفی کنید ویلا مثبت

این کار رو برای هر دو گیم ابجکت  دو بعدی تکرار می کنیم

private float xScale,yScale;

void Start(){
xScale = transform.localScale.x;
yScale = transform.localScale.y;
}


سپس در FixedUpdate  یا Update یا OnGUI  کد زیر رو می ذاریم:( هر کدوم راحت ترید، فرقشون اینه که OnGUI بیشتر از FixedUpdate و FixedUpdate بیشتر از Update فراخوانی میشه تو هر فریم زمان و خب دقت اونی که بیشتر فراخانی میشه بیشتری اما از اونطرف هم سربار محاسبات داریم به خاطر اینکه هی پردازنده باید سیگنال بفرسته برای اجرای تابع یا رویدادی که بیشتر باید چک بشه)


signX = (x1<x2)? +1 : -1 ;
توضیح:

علامت سوال، عملگر شرطی هست، اگه x1 از x2 کمتر بود، علامت مثبت یک میره توش ویلا منفی یک.


علامت بدست اومده ضرب می شه در این فرمول:

_transform.localScale = new Vector2(signX * xScale,yScale);

نظرات (۱)

میگم شما با چه زبونی تو یونیتی کار میکنید ؟؟؟
من C# تسلط دارم اما پایه یونیتی رو بلد نیستم آموزش پایه ای ندارید ؟؟؟
پاسخ:
سلام عزیز.
اگه می خواید از پایه یونیتی رو یاد بگیرید باید توی Help نرم افزار یونیتی و همچنین document های سایت سازنده به آدرس unity3d.com مراجعه کنید.
موفق باشید.

ارسال نظر

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