Jump to content
Unity Insider Forum

Collider versinken ineinander


Recommended Posts

Hallo,

ich habe ein Gameobject in einer 2D Umgebung welches ich auf Knopfdruck über "AddForce" bewegen kann. Das Gameobject hat einen Rigidbody2D und einen Boxcollider2D. Die Umgebung besteht aus Boxcollider2D welche ich mal gerade als Boden und mal mit beliebigen Winkeln als Hindernisse angeordnet habe.

Nun besteht das Spiel daraus die Boxcollider2D mit verschiedenen Geschwindigkeiten als Sprungchancen zu nutzen. Das funktioniert auch super aber sobald mein Gameobject mal stehen bleibt auf einem Schrägen Boxcollider versinkt es in ihm und lässt sich dann auch nicht mehr bewegen.

Ich habe verschiedene Collidersorten ausprobiert und auch schon Materialien mit sehr geringem Bounce (Bounce sollte eigenlich Null sein) benutzt aber nichts funktioniert. Sobald ich auf einer Schräge stehen bleibe versinkt das Gameobject.

Kennt das jemand ?

Danke für eure Antworten.

Link to post
Share on other sites

Moin!

Collider, die ineinander geraten, sollte es eigentlich nicht geben, wenn da ein oder mehr Rigidbodys im Spiel sind. Ich tippe ganz stark auf ein Stück Code, das irgendetwas ungutes tut. Willst du deinen Bewegungscode mal posten?

Link to post
Share on other sites

Ja gerne:

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movement : MonoBehaviour
{
    public float speed;
    private Rigidbody2D rb;
    private bool gas_btn_pressed;
    private bool aufBoden;

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "Floor")
        {
            aufBoden = true;
            print("Boden");
        }
    }

    private void OnTriggerExit2D(Collider2D collision)
    {
        if (collision.tag == "Floor")
        {
            aufBoden = false;
            print("Luft");
        }
    }

    void btn_gas()
    {
        gas_btn_pressed = true;
    }

    void btn_keingas()
    {
        gas_btn_pressed = false;
    }

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

     void Update()
    {

    }

     void FixedUpdate()
    {
            //Maximale Geschwindigkeit auf x und y
            rb.velocity = new Vector2(Mathf.Clamp(rb.velocity.x, 0, 50), Mathf.Clamp(rb.velocity.y, -50, 50));

        if (gas_btn_pressed && aufBoden)
        {
            //Beschleunigung
            rb.AddForce(new Vector2(2, 0), ForceMode2D.Impulse);
        }
        
        if(!gas_btn_pressed && aufBoden)
        {
            //negative Beschleunigung
            rb.AddForce(new Vector2(-0.5f, 0), ForceMode2D.Impulse);
        }

        if (!aufBoden)
        {
            transform.eulerAngles = new Vector3(0, 0, 45);

        }

        if (aufBoden)
        {
            transform.rotation = Quaternion.identity;

        }
        

    }
}

 

Dieser Code ist an meinem Gameobject dran. Mehr gibt es noch nicht in meinem Spiel. Die Umgebung besteht sonst ausschliesslich aus Box-Collidern die als "Floor" getaggt sind und ein Material haben das Bounce = 0 und Friction = 0 hat. Ich hatte den Box-Collidern auch schonmal ein Rigidbody gegeben und als Static fixiert.

Die beiden If-Statements am Ende habe ich auch schonmal auskommentiert um zu probieren ob es daran liegt aber das wars nicht.

Das Material hab ich auch schonmal weg gehabt von den Collidern und vom Gameobject und ich hab mit den Werten gespielt. Das hat bisher nichts gebracht.

 

Link to post
Share on other sites

Ok, ich habs rausgefunden. Ich habe OnTriggerEnter2D und ...Exit2D benutzt um festzustellen ob mein Gameobject auf dem Boden ist oder in der Luft damit die Beschleunigung weggenommen werden kann. Durch diese Microbounces hat das Gameobject gedacht es sei die ganze Zeit in der Luft obwohl es auf einer Schräge stand. Ich habe jetzt zusätzlich onTriggerStay2D eingesetzt und jetzt funktioniert es.

  • Like 1
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...