خیلی خب باشه، من یه بار کدم رو به طور کلی توضیح میدم
من اول کد سه تا متغیر تعریف کردم.
یه متغیر پابلیک GameObject برای نسبت دادن پرفب مون به اون به نام gameObject.
یه متغیر Rigidbody برای نسبت کامپوننت ریجید بادی پرفب مون به اون به نام bullet.
و یه متغیر پابلیک از نوع Vector3 که بتونیم مقدارش رو به متد AddForce بدیم تا به گلوله مون نیرو وارد کنه به نام vec.
تو متد Start که هیچی ننوشتیم.
تو متد Update اولین کدمون اینه که کاموپننت ریجید بادی متغیر gameObject مون رو به متغیر bullet نسبت بده.
تو کد بعدی یه شرط به کد اضافه کردیم به این صورت که اگه کلید space فشار داده شد اتفاقات داخل شرط رخ بده.
اولین کد داخل شرط متد Instatiate هستش.
این متد ورودی های زیادی داره که من توی کد فقط گفتم متغیر گیم آبجکت مون رو (همون پرفب مون رو) تو مبدا مختصات بازی ایجاد کنه.
یکی از ورودی های این متد گیم آبجکت، مختصات گیم آبجکت و میزان چرخش (rotation) اونه که اینجا بدرد مون میخوره.
شما میتونید یه متغیر دیگه از نوع Vector3 درست کنید مثلا با نام pos و بهش یه مقداری بدید و بوسیله ی اون مختصات گیم آبجکت تون رو هر جا که میخواید تعیین کنید، میزان چرخش گیم آبجکت رو میتونید میزان اولیه ی چرخش گیم آبجکت قرار بدید.
کد:
Instantiate (gameObject, pos, gameObject.transform.rotation);
در نهایت تو خط بعدیش گفتیم که وقتی پرفب ما تو بازی تشکیل شد با مقدار ورودی که بهش دادیم (متغیر vec) به گیم آبجکت ما نیرو وارد کنه.