Jump to content
Unity Insider Forum

Rigidbody.AddForce() funktioniert nicht


Shalafi

Recommended Posts

Hi,

ich schreibe in C# Skript um eine Granate zu werfen:

public class ThrowGranade : MonoBehaviour
    {
        public GameObject GrenadePrefab;
        private Transform MyTransform;
        private GameObject GrenadeObj;
        public float ThrowForce = 30f;

        // Use this for initialization
        void Start()
        {
            this.MyTransform = this.transform;
        }

        // Update is called once per frame
        void Update()
        {
            if (Input.GetButtonDown("ThrowGrenade"))
            {
                this.InstantiateGrenade();
            }
            else if (Input.GetButtonUp("ThrowGrenade"))
            {
                this.ThrowGrenade();
            }
        }

        private void InstantiateGrenade()
        {
            if (this.GrenadePrefab != null && this.GrenadeObj == null)
            {
                this.GrenadeObj = (GameObject)Instantiate(this.GrenadePrefab, this.MyTransform.TransformPoint(0, .1f, .6f), this.MyTransform.rotation);
                this.GrenadeObj.transform.SetParent(this.transform.parent.parent);
            }
        }

        private void ThrowGrenade()
        {
            if (this.GrenadeObj != null)
            {
                this.GrenadeObj.GetComponent<Rigidbody>().useGravity = true;
                this.GrenadeObj.GetComponent<Rigidbody>().isKinematic = true;
                this.GrenadeObj.GetComponent<Rigidbody>().AddForce(this.MyTransform.forward * this.ThrowForce, ForceMode.Impulse);
            }
        }
    }


Leider funktioniert das AddForce() in der letzten Zeile nicht.

Ich hab auch bei Google nichts richtiges gefunden. Kann mir jemand weiterhelfen?


Gruß

 

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ok, hab ich gemacht.

Wenn ich jetzt die Taste loslasse, verschwindet die Granate einfach. Im Inspector bewegt sich die Granate weiter wie verrückt (Position + Rotation).
Eigendlich hat das Granaten-Prefab nen Capsule-Collider. Eigendlich sollte sie doch dann auf dem Boden, bzw an Wänden abprallen.

PS: Die Granate hat ne Mass von 10, dass die Granate zu schnell fliegt um sie zu sehn, sollte es nicht sein...

 

Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da wo du die Granate instanzierst ist auch kein Collider? Wenn du nämlich innerhalb eines anderen Colliders instanzierst, greift sofort die Physik und wird die Granate aus dem Collider drängen. Das kann schon heftig sein.
Ich empfehle dir einfach mal in einer leeren Szene die Granate irgendwo zu instanzieren und ihr die Force zu geben.  Dafür machste dir ein ganz einfaches Script, wo du eine Taste abfragst und ein fach an der Position 0,0,0 die Granate instanzierst. Du erst Mal lernen wie sich die Werte auswirken.
Eine Masse von 10 bedeutet übrigens dass deine Granate 10kg schwer ist! Denk daran, dass uniy das metrische System nutzt. Eine Masse von 1 ist 1kg. Eine Größe oder Länge von 1 ist exakt ein Meter.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...