Ist mein "Doodle Jump" Script Unity richtig?
Hallo Leute!
Ich versuche ein Spiel zu programmieren, das Doodle Jump ähnelt. Alles funktioniert, außer dass eine bestimmte Plattform nicht richtig funktioniert. Ich kann darauf springen, aber ich kann nicht von unten durchspringen, ich muss immer um die Plattform springen. Könnt ihr mir helfen?
Hier ist mein Skript:
public class Springer : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void OnCollisionEnter2D(Collision2D collision)
{
if(collision.gameObject.GetComponent<Rigidbody2D>().velocity.y <= 0)
{
collision.gameObject.GetComponent<Rigidbody2D>().AddForce(Vector3.up * 1000f);
}
else
{
if (collision.gameObject.GetComponent<Rigidbody2D>().velocity.y > 0)
{
collision.gameObject.GetComponent<Rigidbody2D>().velocity = new Vector2(0.0f, 10f);
Debug.Log("colisione xD");
}
}
}
}
2 Antworten
Müsstest du nicht checken ob dein Springer in seiner position.y niedriger ist als die kollidierende Plattform?
Und wenn ja, müsstest du dann nicht ggf. den Collider oder Rigidbody deaktivieren?
Da würde ich zunächst ansetzen. Und alternativ einfach mal die Suchmaschine deiner Wahl nutzen.
Danke fürs antworten!
Ja der springer ist niedriger gesetzt. Wie deaktiviere ich den Collider oder Rigidbody?
Hi!
Das brauchst Du gar nicht selbst implementieren mit dem Durchspringen. Dafür gibt's schon eine Lösung von Unity selbst: Den PlattformEffector2D https://docs.unity3d.com/Manual/class-PlatformEffector2D.html).
Weitere Info findest Du bspw. bei uns auf dem Kanal: https://www.youtube.com/watch?v=F0FZd-5p_4E
Oder natürlich auch von Unity selbst: https://www.youtube.com/watch?v=Ojw0pVTGUMA (Das Video ist zwar älter, aber noch genau so valide)