Jump to content
Unity Insider Forum

2d bewegung sehr "laggy"


cncrete

Recommended Posts

Guten abend,

Ich sitze immoment an meinem Spiel, habe aber schon länger ein echt doofes Problem. 

Mein Bewegungssystem funktioniert folgendermassen:

Wenn ich auf den Bildschirm klicke, wird dem Spieler eine art Rückstoss verpasst.Das mache ich mit der addforce() methode. Wenn nicht weiter geklickt wird, wird der spieler langsam langsamer,  so:  rb.velocity *= 0.965f.Das Spiel ist in der top-down Perpektive, deswegen besteht keine Gravitation.

Aber mein Spieler laggt sehr stark, er "shuttert" sozusagen, also er geht hin und wieder zurück, recht schnell, es ruckelt quasi. Hoffe ihr versteht was ich meine.

Ich habe schon interpolate bzw. exterpolate angeschaltet und ich habe auch keine probleme mit der Performance, weil bis jetzt nur das bewegungssystem programmiert wurde. Immoment ist auch noch keine Kamera implementiert. Bevor ich addforce benutzt habe, hatte ich rb.velocity = ...  benutzt, hat aber auch gebugt.

Wäre sehr dankbar wenn ihr mir helfen könntet, weil ein berbuggtes Spiel einfach keinen Spass macht🙏

Danke

Ps: hättet ihr sonst noch Tipps wie man eine Bewegung durch Rückstoss programmieren könnte?

Edit: habe ein video angehangen,  samit man den Spieler sieht, ist jetzt eine cinemachine "eingebaut". Aber auch ohne ist es leider so.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Setze mal deinen Rigidbody auf "interpolate". Das Problem kommt daher, dass Rigidbodys ihre Transformation in FixedUpdate ändern, dein Spiel aber im Update-Zyklus gerendert wird; und die beiden Zyklen nicht so richtig synchron sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

14 minutes ago, Sascha said:

Setze mal deinen Rigidbody auf "interpolate". Das Problem kommt daher, dass Rigidbodys ihre Transformation in FixedUpdate ändern, dein Spiel aber im Update-Zyklus gerendert wird; und die beiden Zyklen nicht so richtig synchron sind.

Habe das schon ausprobiert, aber meiner meinung ist das noch schlimmer als bei exterpolate.

Link zu diesem Kommentar
Auf anderen Seiten teilen

sorry, das ich so spät schreibe, aber ich war unterwegs.

Ich habe die Unity Version auf den neusten Stand gebracht, das problem besteht weiterhin. Hier der code:

void FixedUpdate()
    {
        Vector2 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
        float rotationZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
        transform.rotation = Quaternion.Euler(0, 0, rotationZ);

        if (Input.GetButton("Fire1"))
        {
            Vector2 direction = transform.position - firepoint.position;
            rb.velocity = (direction * movementSpeed);
            //rb.AddForce(direction.normalized * movementSpeed, ForceMode2D.Impulse);      Funktioniert nicht
        }
        else
            rb.velocity *= 0.965f;
    }

Das wäre es dann :)

Hoffentlich kann mir einer helfen, Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...