TheMono Geschrieben 9. Januar 2021 Melden Share Geschrieben 9. Januar 2021 Servus Leute, ich möchte das ein Objekt (genauer eine Patronenhülse) in einen bestimmten Winkel aus meiner Pistole herausspringt. Also das es an einer bestimmten Position spawnt(ist bereits definiert in Abhängigkeit der Position der Pistole) und dann mit x Speed in einen bestimmten Winkel wegfliegt und dann kurz darauf wieder richtung Boden fliegt. Die Hülse hat einen Rigidbody. Weiß jemand wie man das mittels Script umsetzen kann? Ich weiß nicht genau wie das mit dem Vector und dem Rigidbody richtig schreibe. Danke schonmal im Voraus. LG TheMono Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
gombolo Geschrieben 9. Januar 2021 Melden Share Geschrieben 9. Januar 2021 Nur so eine Idee...bin auch nicht DER Experte in Unity, aber kann man das nicht mit Partikel machen? Kann mir Vorstellen, dass bei deiner Variante du viel von Hand coden musst, aber Unity hat dafür schon fertige Werkzeuge. Richtungsvektor definieren in die die Kugel fliegen soll Richtungsvektor dem Objekt übergeben Geschwindigkeit hinzumultiplizieren Geschwindigkeit reduzieren bis auf 0 (Zeitabhängig) -> dann übernimmt den Rest die Gravitation (realistischere Flugbahn) prüfen ob Geschoss Boden berührt hat oder Partikel verwenden Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jog Geschrieben 9. Januar 2021 Melden Share Geschrieben 9. Januar 2021 Hallo, Am 9.1.2021 um 02:37 schrieb TheMono: Weiß jemand wie man das mittels Script umsetzen kann? Ich weiß nicht genau wie das mit dem Vector und dem Rigidbody richtig schreibe. Ich hab mal ein kleines Script geschrieben, das du einem Gameobject z.b. einem Cube mit einem Rigidbody zu weisen kannst. Wenn du dann mit der Linken Maustaste auf den Cube klickst wird dieser nach oben katapultiert und fällt wegen aktivierter Gravitation von alleine wieder nach unten. Vielleicht helfen die Kommentare dir etwas bei der Vorgehensweise. using System.Collections; using System.Collections.Generic; using UnityEngine; public class RigidbodyTest : MonoBehaviour { private Rigidbody myRb; //Eine Variable vom Typ Rigidbody erstellen public float impulskraft = 10.5f; //Kraft deklarieren(Im Inspector einstellbar) // Start is called before the first frame update void Start() { myRb = GetComponent<Rigidbody>();//Zuweisen der RigidbodyComponente myRb.useGravity = true;//Gravitation aktivieren } // Update is called once per frame void Update() { } private void OnMouseDown() { if (myRb) //Ist ein Rigidbody vorhanden? Ja dann weise eine Kraft zu { //Zuweisen einer Globalen Kraft in Richtung der Y Achse myRb.AddForce(new Vector3(0, 1, 0) * impulskraft, ForceMode.Impulse); } else //Kein Rigidbody vorhanden gib eine Fehlermeldung aus { Debug.Log("! Dein GameObjekt hat kein Rigidbody !"); } } } Das Beispiel benutzt eine Globale Kraft "AddForce()" eine Globale Kraft wirkt immer entlang der Globalen X,Y,Z Achsen egal wie dein Objekt gedreht ist. Das Gegenstück ist die Lokale Kraft. Um eine Lokale Kraft zu verwenden kannst du "AddRelativeForce()" verwenden. Ach ja…Ich vergaß zu erwähnen, @TheMono Nachtrag: Wenn man dem Rigidbody eine Kraft zuführt, sollte man das in der FixedUpdate() Methode durchführen da die Physik-Engine nicht framebasiert, sondern in Zeitintervallen arbeitet, sonst kann es zu unschönen verhalten kommen. Aber da du in diesem Beispiel dem Rigidbody nur eine einmalige Kraft zuführst, kann man das auch ohne Probleme außerhalb der FixedUpdate() Methode tun. Gruß Jog Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TheMono Geschrieben 9. Januar 2021 Autor Melden Share Geschrieben 9. Januar 2021 Danke @Jog hat mir sehr geholfen 👍 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MaZy Geschrieben 15. Januar 2021 Melden Share Geschrieben 15. Januar 2021 Würde, wenn es jetzt nicht unbedingt um Scripting geht das mit Partikeleffekt machen. Spart Performance. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.