Jump to content
Unity Insider Forum
TheMono

Objekt mit x Speed in bestimmte Richtung wegspringen lassen?

Recommended Posts

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

Share this post


Link to post
Share on other sites

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.

  1. Richtungsvektor definieren in die die Kugel fliegen soll 
  2. Richtungsvektor dem Objekt übergeben
  3. Geschwindigkeit hinzumultiplizieren
  4. Geschwindigkeit reduzieren bis auf 0 (Zeitabhängig) -> dann übernimmt den Rest die Gravitation (realistischere Flugbahn)
  5. prüfen ob Geschoss Boden berührt hat

oder 

Partikel verwenden :) 

  • Like 1

Share this post


Link to post
Share on other sites

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

Edited by Jog
Ich Vergaß
  • Like 1

Share this post


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...