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

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

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

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

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

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

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

بایگانی
پیوندها
منبع:gameover.blog.ir

حرکت گلوله/حرکت تیر/حرکت گیم ابجکت/از محل ایجاد/از محل وجود به نقطه ای که با ماوس کلیک شود در یونیتی 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 بستگی داره به شکل گلوله. گلوله ی من به سمت راست بود.
[تصویر: sprite_center.jpg]
نکته: اسکریپت رو باید به گلوله بدید. و خود گلوله هم باید پریفب کنید یعنی توی صحنه نباشه بکشید بندازید توی پروژه. بعدش توی کد کلیک player کد ایجاد پریفب گلوله رو بدید.

موافقین ۰ مخالفین ۰ ۹۴/۰۷/۱۷
مدیرکل

نظرات (۲)

۱۴ آبان ۹۴ ، ۱۲:۵۹ عادل بیجارزهی سورانی
سلام-در پنجره ای که کد رو نوشتید من کد رو به صورت ناقص میبینم.از مرور گر فایر فاکس استفاده میکنم.لطفا بررسی کنید با تشکر
پاسخ:
سلام.ممنون عزیزم.مشکل رفع شد.موفق باشید.

اگه بخایم در مسیر کلیک موس آجکت حرکت کنه باید چیکار کنیم. مقصود مکان کلیک نیست. یعنی هر جا که آبجت هست با توجه با تظیمات سرعت که از قبل دادیم فقط در مسیر کلیک موس حرکت کنه

 

ارسال نظر

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