मेरे खेल में, कैमरे की गति बिल्कुल सही है जैसा मैं चाहता था।

फोन में, मेरे गेम का परीक्षण करते समय कैमरे की गति धीमी है। मुझे नहीं पता कि इसे कैसे ठीक किया जाए और इस समस्या का मूल कारण क्या है।

यह वह स्क्रिप्ट है जिसे मैंने मुख्य कैमरे से जोड़ा है।

public float translation;
public float highspeed;//highest speed of the camera
public float incfactor;//increasing ,multiplying number
public bool ismoving = false;

private float timer = 0f;
private Rigidbody2D dia;

private void Start()
{
    dia = GetComponent<Rigidbody2D>();
}

private void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
        if (hit.collider != null)
        {

            if (hit.collider.tag == "dialogue")
            {
                Destroy(hit.collider.gameObject);
                ismoving = true;
            }
        }
    }

    if (ismoving == true)
    {
        Updatemove();
    }
}

public void Updatemove()
{
    timer += Time.deltaTime;

    if (timer > 1f && translation < highspeed)
    { //after 1 second has passed...
        timer = 0; // reset timer
        translation += incfactor; //increase speed by 0.5
    }

    transform.Translate(0, translation, 0);
}
0
rita sharon 19 फरवरी 2019, 21:06

1 उत्तर

सबसे बढ़िया उत्तर

आप Updatemove को Update में कॉल कर रहे हैं जिसे हर फ्रेम कहा जाता है।

लेकिन आपसे Translate एक निश्चित मान translation से जो फ्रेम-निर्भर है (निचला फ्रैमरेट => कम कॉल => धीमी गति)

आप वस्तु (translation * framerate) / seconds की गति से आगे बढ़ेंगे

उस framerate कारक को खत्म करने के लिए और translation / seconds की एक स्थिर, डिवाइस स्वतंत्र गति प्राप्त करने के लिए आपको Time.deltaTime से गुणा करना होगा।

तो यह बल्कि होना चाहिए

public void Updatemove() 
{   
    timer += Time.deltaTime;

    if (timer > 1f && translation < highspeed) 
    { //after 1 second has passed...
        timer = 0; // reset timer
        translation += incfactor ; //increase speed by 0.5
    }

    transform.Translate(0, translation * Time.deltaTime, 0);
}

चूँकि Time.deltaTime एक बहुत छोटा मान है (1/framerate = 0.017 (60 fps के लिए)) आपको संभवतः अपने incfactor को 60 के कारक से कम या ज्यादा बढ़ाना होगा।

2
derHugo 20 फरवरी 2019, 15:27