• 1401/06/04

تغییرات در نشانگر موس :

سلام استاد عزیز 

دو سوال کوچک داشتم که با گشتن توی اینترنت پیداش نکردم و گفتم شاید شما در موردش بدونید 

من تکسچر نشانگر موس رو به یه شکل دایره ای تغییر دادم و محل کلیک رو با استفاده از هات اسپات به وسط دایره فرستادم ولی الان می خواستم محیطی که موس میتونه کلیک کنه افزایش پیدا کنه تا تقریبا تموم دایره رو پوشش بده ایا امکان این کار هست؟

public Texture2D mouseCursor;

    void Start()
    {     
        InvokeRepeating("Spawn", 1f, 1.5f);//spawns enemy
        Cursor.SetCursor(mouseCursor, new Vector2(mouseCursor.width / 2 , mouseCursor.height /2), CursorMode.Auto);
    }

سوال دوم هم اینکه میخواستم به یونیتی بگم که اگه یه شی توسط کاربر نابود نشد بعد از دو ثانیه نابود شه و در این صورت یک امتیاز منفی به کاربر بده (از کد زیر استفاده کردم ولی می خوام بگم اگه این کد اتفاق افتاد و کار کاربر نبوده امتیاز منفی بده )   

تشکر از شما 

void Start()
    {
        Destroy(gameObject, 2f);
        //if the  game object gets destroyed without player touching it lose one heart.
    }


    void OnMouseDown()
    {
        Destroy(gameObject);
        GameManager.instance.score += 1;
    }
  • 1401/06/04
  • ساعت 21:17

سلام

برای مورد اول این لینک رو بررسی کنید... 

 

برای مورد دوم هم راه های زیادی هست، میتونید یه تایمر بزارید و بگید بعد از دو ثانیه کار مربوطه رو بکنه 

و یا یه متد درست کنید درش کد مربوط به کسر امتیاز و نابود شدن رو بنویسید(نابود شدن بدون تاخیر) و با استفاده از متد Invoke در تابع Start، با دو ثانیه تاخیر تابعی که نوشتید رو صدا بزنید... 


  • 1401/06/04
  • ساعت 21:59

سلام ممنون بابت پاسخ

مورد دوم خیلی عالی جواب داد 

void Start()
    {
        InvokeRepeating("LoseHealth", 2f , 2f);
    }


    void OnMouseDown()
    {
        Destroy(gameObject);
        GameManager.instance.score += 1;
    }

    public void LoseHealth()
    {
        if (gameObject.activeInHierarchy)
        {
            GameManager.instance.health -= 1;
            Destroy(gameObject);
        }
    }

مورد اول هم لینک سوال رو دیده بودم کمی گنگه ولی فکر کنم که بشه با کمی تغییر ازش استفاده کرد خیلی ممنون

 


  • 1401/06/04
  • ساعت 22:22

درود مجدد

برای مورد اول نظر خودم رو بخواید به همون روش اول لینکه عمل میکنم،در مختصات محل کلیک موس یه ‌SphereRaycast بزنید و مثلا شعاع کره رو بدید دو واحد یا هرچیزی که لازم دارید و همه کلایدر هایی که باهاش برخورد کردن رو میتونید مدیریت کنید و کار مربوطه رو انجام بدید... 

 

برای مورد دوم هم نیازی به InvokeRepeating نیست همون Invoke خالی کافیه... 


  • 1401/06/04
  • ساعت 22:59

تشکر از شما چیزی که می خواستم انجام شد  


logo-enamadlogo-samandehi