حرکت گلوله به جایی که کلیک کردیم در یونیتی 5
جمعه, ۱۷ مهر ۱۳۹۴، ۰۶:۵۳ ق.ظ
منبع:gameover.blog.ir
در روش فوق با استفاده از تابع آرک تانژانت(Atan) از کلاس ریاضی(Mathf) ، زاویه را بر حسب رادیان برای y/x بدست آوردیم.
یک باگ هم اسکریپت فوق داره و اون اینه که حرکت فقط تا نقطه کلیک ادامه دار هست و از اون به بعد متوقف می شه. برای ادامه دادن باید از تابع lerp استفاده کنید که اونم با خودتون. یکی از کاربردهای این کد برای ساخت بازی ماروپله هست و یا حرکت یک بازیکن در بازی های استراتژیک از نمای بالا. یا بازی های تیرو کمان دار و همینطور ایده های زیاد.
نکته مهم:
یادتون نره لولای اسپرایت رو بذارید روی نوک گلوله از طریق sprite editor
یا توی inspector می تونید بذارید روی right بستگی داره به شکل گلوله. گلوله ی من به سمت راست بود.
نکته: اسکریپت رو باید به گلوله بدید. و خود گلوله هم باید پریفب کنید یعنی توی صحنه نباشه بکشید بندازید توی پروژه. بعدش توی کد کلیک player کد ایجاد پریفب گلوله رو بدید.
حرکت گلوله/حرکت تیر/حرکت گیم ابجکت/از محل ایجاد/از محل وجود به نقطه ای که با ماوس کلیک شود در یونیتی 5:
اسکریپت زیر باعث میشه گلوله به سمت نقطه ای که کلیک کنیم حرکت کنه و زیر 2
ثانیه نابود بشه.همچنین به سمت نقطه ی کلیک شونده نگاه کنه.اما وقتی به
نقطه رسید حرکت متوقف می شه.
//move to click point and lookat2d Equivalent //Author:Sajjad3011 //unity 5.1.final using UnityEngine; using System.Collections; public class bullet_move_2d : MonoBehaviour { public float speed=10f; private Vector3 clickPos; float DeathTime=2f; Vector3 diff; void Start() { clickPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); clickPos.z = transform.position.z; Destroy(gameObject,DeathTime); // diff = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position; diff.Normalize(); } void Update (){ transform.position = Vector3.MoveTowards(transform.position, clickPos, speed * Time.deltaTime); //Lookat 2d Equivalent float rot_z = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg; transform.rotation = Quaternion.Euler(0f, 0f, rot_z ); } }اسکریپت فوق بسیار کمیاب هست و خودم با تحقیق زیاد نوشتمش و باگ های زیادی داشت که برای یونیتی 5 حل کردم.
در روش فوق با استفاده از تابع آرک تانژانت(Atan) از کلاس ریاضی(Mathf) ، زاویه را بر حسب رادیان برای y/x بدست آوردیم.
یک باگ هم اسکریپت فوق داره و اون اینه که حرکت فقط تا نقطه کلیک ادامه دار هست و از اون به بعد متوقف می شه. برای ادامه دادن باید از تابع lerp استفاده کنید که اونم با خودتون. یکی از کاربردهای این کد برای ساخت بازی ماروپله هست و یا حرکت یک بازیکن در بازی های استراتژیک از نمای بالا. یا بازی های تیرو کمان دار و همینطور ایده های زیاد.
نکته مهم:
یادتون نره لولای اسپرایت رو بذارید روی نوک گلوله از طریق sprite editor
یا توی inspector می تونید بذارید روی right بستگی داره به شکل گلوله. گلوله ی من به سمت راست بود.
نکته: اسکریپت رو باید به گلوله بدید. و خود گلوله هم باید پریفب کنید یعنی توی صحنه نباشه بکشید بندازید توی پروژه. بعدش توی کد کلیک player کد ایجاد پریفب گلوله رو بدید.
۹۴/۰۷/۱۷