درود مهمان گرامی! ثبت نام

جشنواره بازیسازی پرومیکرز

امتیاز موضوع:
  • 6 رأی - میانگین امتیازات: 4.67
  • 1
  • 2
  • 3
  • 4
  • 5
برنامه نویسی و راهکارهایی در یونیتی
#71
جابجا کردن اشیا در یونیتی/درگ ابجکت در یونیتی/حرکت اجسام از بالا در یونیتی/درگ گیم ابجکت:
http://promakers.ir/showthread.php?tid=10143
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط qwerty13
#72
تغییر جهت جاذبه در یونیتی
تو این آموزش کوتاه میخوایم جهت جاذبه رو در یونیتی عوض کنیم
کد سیشارپ
کد:
Vector3 gravity;

void Start()
{
     gravity = Physics.gravity;
}

void FixedUpdate()
{
     Physics.gravity = gravity;
    
     if(somethingIsTrue)
     {
         gravity.x = 0;
         gravity.y = -25;
         gravity.z = 0;
     }
}
توی somethingIsTrue هم کد مورد نظر رو مینویسیم
در سه خط آخر جهت جاذبه در سه محور رو تعیین میکنیم که در این کد جاذبه -۲۵ به سمت y هست یعنی بیست و پنج رو به پایین
منبع
http://answers.unity3d.com/questions/470...ction.html
پاسخ
 سپاس شده توسط sajjad3011 ، qwerty13
#73
اینم اسکریپت تمیز تر سوئیچ بین انیمیشن های پنجره ی Animator :
http://promakers.ir/showthread.php?tid=9...#pid125792
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط aliheadari ، Ali-reza8448v2
#74
حفظ تعادل player و گیم ابجکت در بازی دو بعدی/جلوگیری از لغزش کاراکتر در بازی های دو بعدی :
برای گیم ابجکت دلخواه که ریجید بادی داره ،در زیرشاخه ی Constraint از Rigidbody محور Z رو محدود کنید.(گزینه ی Z رو تیک بزنید)
resim
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط aliheadari ، loosari ، Ali-reza8448v2
#75
فایل های DLL یا کتابخانه های یونیتی که با using در فضای نام استفاده می شه رو بعد از دانلود کجا بریزیم؟
در مسیر C:\Program Files\Unity\Editor\Data\Managed
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط aliheadari ، Ali-reza8448v2
#76
تغییر اسپرایت یک گیم ابجکت دو بعدی با استفاده از کد سیشارپ و بکار گیری کامپوننت Sprite Renderer :
کد php:
public Sprite sprite1// Drag your first sprite here
public Sprite sprite2// Drag your second sprite here

private SpriteRenderer spriteRenderer

void Start ()
{
    
spriteRenderer GetComponent<SpriteRenderer>(); // we are accessing the SpriteRenderer that is attached to the Gameobject
    
if (spriteRenderer.sprite == null// if the sprite on spriteRenderer is null then
        
spriteRenderer.sprite sprite1// set the sprite to sprite1
}

void Update ()
{
    if (
Input.GetKeyDown (KeyCode.Space)) // If the space bar is pushed down
    
{
        
ChangeTheDamnSprite (); // call method to change sprite
    
}
}

void ChangeTheDamnSprite ()
{
    if (
spriteRenderer.sprite == sprite1// if the spriteRenderer sprite = sprite1 then change to sprite2
    
{
        
spriteRenderer.sprite sprite2;
    }
    else
    {
        
spriteRenderer.sprite sprite1// otherwise change it back to sprite1
    
}

جهت استفاده،ابتدا اسکریپت سیشارپی بسازید و کد فوق رو درونش جا بدید.
بعد از انداختن اسکریپت روی یک emtpty game object دو اسپرایت png رو به ترتیب بندازید روی پارامترهای sprite1 و sprite2 در inspector . بازی رو اجرا کنید.
کاربرد کد فوق برای تغییر اسپرایت های single غیر انیمیشن دار هست.
مثلا گاهی player می پره روی حریف،می خوایم اسپرایت دشمن رو عوض کنیم و اسپرایت حالت پرس شده رو روی دشمن نشون بدیم با کد فوق میتوم اینکار رو عوض کنیم. نکته رو خودتون پیدا کنید. فقط می خواستم کار کامپوننت spriteRenderer رو نشون بدم که چطوری از طریق سیشارپ ازش استفاده کنیم.موفق باشید.smiley
منبع :
http://gamedev.stackexchange.com/questio...t-in-unity
یه مدل کد js هم اینه(ولی من توصیه می کنم سیشارپ کار کنید):
کد:
var sprites : SpriteCollection;

function Start()
{
    sprites = new SpriteCollection("Spritesheet"); // Spritesheet = path + name of sprite in Resources folder

    GetComponent("SpriteRenderer").sprite = sprites.GetSprite("Sprite1"); //name of specific sprite in spritesheet
}
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط aliheadari ، Ali-reza8448v2
#77
تغییر اسپرایت والد با استفاده از تکنیک دسترسی به والد یک گیم آبجکت/دسترسی به هر گره ای که قبل از شروع بازی به صحنه اضافه کردیم/دسترسی به شی دلخواه در بازی:
هزار و یک روش برای اینکار وجود داره.اما همیشه ساده ترین روش هم وجود داره.
مثال:
ما یک گیم ابجکت داریم به اسم enemy. بعدش برای این enemy یک گیم ابجکت empty می سازیم و می اندازیم توی زیرشاخش به عنوان فرزند.
به این فرزند یک box collider 2d می دیم و اونو مثلا روی دست راست کاراکتر enemy می ذاریم.برای اینکه از طریق کد بگیم اگه player به دست دشمن برخورد کرد دشمن اسپرایتش عوض بشه.

خوب برای اینکار ما کد رو به ابجکت empty ای که ساختیم ربط می دیم چون قرار نیست عمل برخورد با تمام بدن enemy انجام بشه بکله می خوایم فقط با کلایدری که روی دست کاراکتر ساختیم تشخیص داده بشه.

کد php:
using UnityEngine;
using System.Collections;
public class 
EnemyDie MonoBehaviour {
    public 
Sprite Sprite1;
    public 
Sprite Sprite2;
    public 
GameObject enemy;
    
void Start () 
    {

        if (
enemy.gameObject.GetComponent<SpriteRenderer>().sprite == null)
            
enemy.gameObject.GetComponent<SpriteRenderer>().sprite Sprite1;
    }
    
    
void OnTriggerEnter2D(Collider2D other)
    {
        if (
other.tag == "player")
        {
            
Debug.Log("dast doshman");
            
enemy.gameObject.GetComponent<SpriteRenderer>().sprite Sprite2;
        }
    }


در کد فوق enemy اسم والدی هست که گیم ابجکت empty فرزندش شد. نوعش رو public گذاشتیم(public GameObject enemy) برای اینکه از ورودی،گیم ابجکت Enemy والد رو بکشیم روش و داخل کد بهش دسترسی داشته باشیم.

با کد enemy.gameObject ، اشاره می دیم به والدی که دریافت کردیم.سپس باید به کامپوننت SpriteRenderer ازش دسترسی داشته باشیم و اسپرایت والد رو تغییر بدیم. با کد enemy.gameObject.GetComponent<SpriteRenderer>().sprite می تونیم این کار رو انجام بدیم.بقیه رو روی کدهای بالا فکر کنید. سوالی بود توی پرسش و پاسخ بپرسید.ممنون.
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط aliheadari ، loosari ، Ali-reza8448v2
#78
روش صحیح دسترسی به کنترلر انیماتور از طریق کد سیشارپ برای تنظیم مقدار متغیرهای انیماتور/رفع خطای مقداردهی متغیرهای انیماتور در یونیتی

فرض کنید یک انیماتور به player دادید. سپس از طریق کد زیر متغیر run رو با مقدار بولین true تنظیم می کنیم :

کد:
        private Animator animator;
        animator.GetComponent<Animator>.SetBool ("run", true);
اسکریپت رو به player ربط می دیم.
بلافاصله خطای زیر رو دریافت می کنیم :
کد:
Assets/scripts/player.cs(8,26): error CS0119: Expression denotes a `method group', where a `variable', `value' or `type' was expected


برای رفع این مشکل باید اسکریپت رو به صورت زیر تغییر بدید :
کد php:
        private Animator animator;
        
animator this.GetComponent<Animator> ();
        
animator.SetBool ("run"true); 
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط aliheadari ، Ali-reza8448v2
#79
خیلی عالی و کاربردی بود ممنونم مشکلم حل شدflowerflowerflowerflowerflowerflowerflowerflowerflowerflowerflowerflowerflowerflower
شاید نه امروز... نه فردا... و نه روز دیگر... اما سرانجام همه چیز درست خواهد شد

بازی ها و نمونه کارهای من:


بازی قلب پرنده
پاسخ
 سپاس شده توسط sajjad3011 ، Ali-reza8448v2
#80
چرا بعضی اوقات OnTriggerEnter و OnCollisionEnter کار نمی کند؟
پاسخ:
گاهی علت این است که به گیم ابجکت های خود collider های 2D داده ایم اما در اسکریپت خود از توابع 3D در اسکریپ های خود استفاده کرده ایم.

برای حل مشکل از مثال زیر الگو بگیرید :

کد php:
        void OnTriggerEnter2D(Collider2D other) {
        
Debug.Log("OnTriggerEnter 2D");
        } 

        
void OnCollisionEnter2D(Collision2D coll) {
        
Debug.Log("OnCollisionEnter 2D"); 
نکته ی دوم اینه که هر دو گیم ابجکت باید collider 2d داشته باشد.
نکته سوم : بلعکس موارد فوق هم ممکنه رخ بده که خودتون می تونید جابجا کنید توابع 2D رو با توابع 3D.
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط qwerty13 ، aliheadari ، Ali-reza8448v2


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Star آموزش یونیتی از سایت یونیتی ali.z 0 66 25/4/1396، 03:49 عصر
آخرین ارسال: ali.z
  آموزش شیدر نویسی در یونیتی قسمت 1 ErfanAhmadi 15 5,026 15/3/1396، 05:53 عصر
آخرین ارسال: mamali me
  آموزش یونیتی از مبتدی تا متوسط برنامه ریزی شده amirhosein.raad 24 3,261 26/2/1396، 08:24 عصر
آخرین ارسال: TakOn1
  پرداخت درون برنامه ای بازار sajjad3011 0 398 4/10/1394، 10:41 عصر
آخرین ارسال: sajjad3011
Big Grin دانلود کتاب فارسی آموزش کامل زبان برنامه نویسی پایتون Teshne 3 1,265 19/2/1394، 06:25 عصر
آخرین ارسال: sajjad3011



کاربرانِ درحال بازدید از این موضوع: 1 مهمان