Erstens weiß ich, dass diese Frage sehr oft gestellt wurde, aber ich kann keine Lösung finden, daher ist mein Problem: Ich mache ein Lernspiel, und ich habe eine Ader und den Blutfluss (mit vielen Boxcollidern) und ein einziges Blut Zelle (auch mit einem Box-Collider) Ich möchte jedoch, dass die Zelle zerstört wird, wenn sie den Wall Collider erreicht, aber sie bleibt nicht einfach dort, hier ist das Projekt!
http://tinypic.com/r/10706es/9
(kann wegen meines guten Rufs keine Bilder hochladen, sorry)
Der Collider, bei dem ich meine Zelle zerstören möchte, ist der rosa Collider. Wenn er jedoch berührt wird, tut er einfach nichts, hier ist mein Skript
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class collision : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void OnCollisionEnter(Collision col)
{
print("hihi");
if (col.gameObject.tag == "Collider")
{
Destroy(gameObject);
}
}
}
Hier ist auch das AddForce-Skript
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AddForce : MonoBehaviour {
public float thrust;
public Rigidbody rb;
private Vector3 up;
private bool move;
void Start()
{
rb = GetComponent<Rigidbody>();
up = new Vector3(0, 1, 0);
move = false;
}
void FixedUpdate()
{
if (Input.GetKey("space"))
{
if (rb.velocity.magnitude < 5)
rb.AddForce(up * thrust);
move = true;
}
else
{
if (move == true)
rb.velocity = new Vector3(0, -0.5F, 0);
}
}
}
danke für Ihre Hilfe, Jungs! : D
Es kann mehrere Dinge geben:
collider.gameObject.CompareTag("Collider")
, es hat eine bessere Leistung)Wenn es funktioniert, sollten Sie auf play drücken und ein GameObject in das andere ziehen können, und Ihr Debug.Log wird angezeigt.
Verwenden Sie Tagnamen, die die Gruppe der GameObjects, die Teil der Gruppe sein sollen, wie "RedCells" oder "WhiteCells", besser beschreiben. Es ist einfacher, die Layer-Kollisionsmatrix zu konfigurieren und die Leistung Ihres Spiels zu verbessern.
Noch ein Tipp: Für Colliders, die nur ein anderes GameObject zerstören (nicht reagieren, wie ein Stoß oder tatsächlich zusammenstoßen), benutze ich Auslöser. Auf diese Weise ändert die Kollision zwischen ihnen nichts am verbleibenden GameObject (wie Richtung/Geschwindigkeit/etc). Überprüfen Sie dazu den Is-Trigger im Collider und verwenden Sie OnTriggerEnter anstelle von OnCollisionEnter.
in einigen Fällen haben Sie Ihrem Spielobjekt die Komponente Nav Mesh Agent hinzugefügt (zur automatischen Weiterleitung des Betriebs im Strategiespiel und ...). In diesem Fall kümmert sich dieses Spielobjekt nicht um den Collider. Wenn Sie dieses Nav Mesh Agent wirklich benötigen, sollten Sie Nav Mesh Obstacle zu einem anderen festen Spielobjekt hinzufügen und Nav Mesh Agenthinzufügen. _ zu einem anderen beweglichen Spielobjekt.
Ich habe einige Folgefragen, die zu einer Lösung führen könnten.
Hat das Objekt, das Ihr Kollisionsskript enthält, erstens einen starren Körper und einen Kollider? Zweitens: Hat die Wand einen starren Körper und einen Kollider?
Wenn diese Bedingungen erfüllt sind, funktionieren Kollisionen normalerweise. Ein paar andere Dinge, die das Problem sein könnten:
Ich habe es endlich behoben, ich weiß nicht wirklich, ob dies das Problem war, aber ich habe gerade den steifen Körper von den Eltern der Wand entfernt und es fing an zu arbeiten! behoben, vielen Dank für Ihre Hilfe! : D