مشکل زوم در یونیتی
#1
سلام

رو یک پروزه آزمایشی قابلیت زوم و اسکرول رو پیاده کردم (touch) با این کد:

کد:
using UnityEngine;
using System.Collections;

public class TouchCameraControl : MonoBehaviour {

    public float moveSensitivityX = 1.0f;
    public float moveSensitivityY = 1.0f;
    public float orthoZoomSpeed = 0.5f;
    public float minZoom = 1.0f;
    public float maxZoom = 20.0f;
    public bool updateZoomSensitivity = true;
    public bool invertMoveX = false;
    public bool invertMoveY = false;

    private Camera _camera;

    void Start () {
        
        _camera = Camera.main;    
    }
    void Update ()
    {

        if (updateZoomSensitivity) {

            moveSensitivityX = _camera.orthographicSize / 5.0f;
            moveSensitivityY = _camera.orthographicSize / 5.0f;

            Touch[] touches = Input.touches;

            if (touches.Length > 0) {
                //single touch move
                if (touches.Length == 1) {
                    if (touches[0].phase == TouchPhase.Moved) {
                        Vector2 delta = touches [0].deltaPosition;

                        float posittionX = delta.x * moveSensitivityX * Time.deltaTime;
                        posittionX = invertMoveX ? posittionX : posittionX * -1;

                        float posittionY = delta.y * moveSensitivityY * Time.deltaTime;
                        posittionY = invertMoveY ? posittionY : posittionY * -1;

                        _camera.transform.position += new Vector3 (posittionX, posittionY, 0);

                    }
                }

                //double touch (zoom)
                if (touches.Length == 2) {

                    Touch touchOne = touches [0];
                    Touch touchTwo = touches [1];

                    Vector2 touchOnePrevpos = touchOne.position - touchOne.deltaPosition;
                    Vector2 touchTwoPrevPos = touchTwo.position - touchTwo.deltaPosition;

                    float prevTouchDeltaMag = (touchOnePrevpos - touchTwoPrevPos).magnitude;
                    float touchDeltaMag = (touchOne.position - touchTwo.position).magnitude;

                    float deltaMagDiff = prevTouchDeltaMag - touchDeltaMag;

                    _camera.orthographicSize += deltaMagDiff * orthoZoomSpeed;
                    _camera.orthographicSize = Mathf.Clamp (_camera.orthographicSize, minZoom, maxZoom);
                }

            }

        }
    }
}


حالا من چند تا گیم آبجکت به عنوان پس زمینه بازی دارم که خب قائدتا نباید این قابلیت زوم روی اونها عمل کنه.
ولی خب این کد زوم رو به main camera دادم و برای همه آبجکت ها عکل میکنه.

 ممنون میشم راهنمایی کنید... هرچی سرچ زدم چیزی پیدا نکردم.
انجمن های بازی سازی دیگه هم که ماشاله اصلا جواب نمیدن.

53

  پاسخ


 سپاس شده توسط:
#2
سلام دوست عزیز
اسکریپت نویسی تاچ در یونیتی کمی در ابتدا که شروع می کنی پیچیده هست
نکته ای که شما می خوای پیاده کنی تقریبا هر کس در یونیتی با روشی پیاده می کنه به عنوان مثال با متد 
OnMouseDown میشه این کار رو پیاده کرد
بهت پیشنهاد میدم این آموزش تاچ رو دانلود کنی ببینی کمکت می کنه
http://www.daneshjooyar.com/%D8%A2%D9%85...4one-fing/

http://www.daneshjooyar.com/%D8%A2%D9%85...4two-fing/
عمر با ارزشتون رو برای کار با انجین های ضعیف که آینده ای ندارند حروم نکنید دوره جامع و رایگان منتشر شد روی عکس کلیک کنید.

[تصویر:  imageTut.png]
  پاسخ


 سپاس شده توسط: sllark
#3
(1395/5/3، 07:52 عصر)developer نوشته است: سلام دوست عزیز
اسکریپت نویسی تاچ در یونیتی کمی در ابتدا که شروع می کنی پیچیده هست
نکته ای که شما می خوای پیاده کنی تقریبا هر کس در یونیتی با روشی پیاده می کنه به عنوان مثال با متد 
OnMouseDown میشه این کار رو پیاده کرد
بهت پیشنهاد میدم این آموزش تاچ رو دانلود کنی ببینی کمکت می کنه
http://www.daneshjooyar.com/%D8%A2%D9%85...4one-fing/

http://www.daneshjooyar.com/%D8%A2%D9%85...4two-fing/

سلام.

OnMouseDown !!
نه منظورمو اشتباه متوجه شدید شما. من اصلا با تاچ کاری ندارم (کدی رو هم که دادم کاملا درست کار میکنه و خیلی عالیه).
ببینید این کد (زوم) میاد تمام آبجکت های موجود تو scene رو زوم میکنه. 

حالا مشکل من اینه که: من چند تا آبجکت دارم که نمیخوام زوم بشن. درواقع چند تا آبجکت دارم که نمیخوام زوم روی اونها اعمال بشه....

و شما لینک هر آموزش فارسی رو که بدی من قبلا دیدمش  4

ممنون 53



  پاسخ


 سپاس شده توسط:
#4

سلام
به اون آبجکت هایی که نمی خوای زوم شن یک تگ(tag) بده
بعد باید تو کدت مشخص کنی اگر تگش برابر با فلان بود زوم روش انجام نشه
اگر واقعا تمام آموزش های فارسی رو دیدی که باید سه صوت پیاده کنی  1

عمر با ارزشتون رو برای کار با انجین های ضعیف که آینده ای ندارند حروم نکنید دوره جامع و رایگان منتشر شد روی عکس کلیک کنید.

[تصویر:  imageTut.png]
  پاسخ


 سپاس شده توسط: sllark
#5
(1395/5/3، 10:10 عصر)developer نوشته است: سلام
به اون آبجکت هایی که نمی خوای زوم شن یک تگ(tag) بده
بعد باید تو کدت مشخص کنی اگر تگش برابر با فلان بود زوم روش انجام نشه
اگر واقعا تمام آموزش های فارسی رو دیدی که باید سه صوت پیاده کنی  1


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

53
  پاسخ


 سپاس شده توسط:


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
  سیستمم مورد نیاز برای یونیتی 5 ^_^ Ali ^_^ 5 3,963 1402/3/5، 10:31 عصر
آخرین ارسال: M.Y
  کمترین حجم بازی محمد 82 3 941 1401/11/16، 11:29 صبح
آخرین ارسال: mostafanastary
  خروجی IL2CPP در یونیتی arshia ajoudani 2 1,394 1401/11/11، 11:09 صبح
آخرین ارسال: abedi
  خروجی وب M.Y 0 896 1401/8/1، 04:36 عصر
آخرین ارسال: M.Y
  سوال در مورد دوره شوتر اول شخص استاد رجب زاده amin hosseini 1 1,617 1400/12/20، 11:01 عصر
آخرین ارسال: ᔕinaᗪehghani

پرش به انجمن: