Wie hebe ich Objekte auf und werfe sie?
Für mein 2d Unity Game versuche ich ein System zu kreieren, welches dem Spieler ermöglicht Dinge aufzuheben. Dafür habe ich ein sehr sehr simples Script geschrieben.
Es soll so funktionieren, du bist im Trigger radius, und wenn du dann Q drückst und der Spieler bist dann wird des GameObjects position gleichgesetzt mit der des Spielers sodass es aussieht als würde er es tragen. Wenn du es dann trägst und E drückst dann hört das Script auf die beiden Positionen gelichzusetzen und dem Objects Rigidbody2D wird nen bisschen Force hinzugefügt je nachdem in welche Richtung der Spieler guckt.
Hier ist das Script; https://pastebin.com/9eaeg58c
Vielen Dank für die Hilfe danke danke danke danke danke danke danke danke danke danke danke danke danke
1 Antwort
Ich hab deine Frage nicht komplett verstanden, also was nicht geht, oder was schon geht.
Vielleicht reicht es dir das Objekt einfach an den Spieler zu parentieren? das Rigidbody solltest du dann aber kinematic machen beim tragen.
transform.position = col.transform.position;
transform.SetParent(col.transform);
rb2D.isKinematic = true;
https://docs.unity3d.com/ScriptReference/Transform.SetParent.html
Beim werfen machst du das dann rückgängig, und gibst deine force drauf also:
Transform playerTransform = transform.parent;
transform.SetParent(null);
rb.isKinematic = false;
Vector2 direction = new Vector2(playerTransform.forward * power,-0.2f)
rb2D.AddForce(direction, ForceMode2D.Impulse);
Das ist jetzt alles ungetestet, aber so würde ich es versuchen.
https://docs.unity3d.com/ScriptReference/Rigidbody2D.AddForce.html