Im Allgemeinen, nach dem, was ich gelernt habe, werden Kollisionen in dem Skript behandelt, das an ein Game-Objekt angehängt ist. In meinem Spiel habe ich 6 Spielobjekte, die miteinander kollidieren und die Umsetzung der früheren Idee erschweren. Ich möchte alle Spielobjekte vorab erstellen und in einem anderen Skript instanziieren, das an ein leeres Spielobjekt angehängt ist. Wie kann ich Kollisionen zwischen all diesen 6 Spielobjekten im neuen Skript behandeln?Wie man 2d Kollisionen in einem Skript behandelt, das nicht mit Game Object verbunden ist
Antwort
Ich frage mich die gleiche Sache wie Joe Blow, aber immer noch, wenn Sie versuchen, Kollisionen manuell zu behandeln (was übrigens wird Physik schwieriger, da Sie Bounciness, Schwerkraft, etc. berechnen müssten) manuell ..), dann können Sie dies versuchen:
public class OtherScript : MonoBehavior
{
public GameObject[] objects; //Your 6 GameObject
void Update()
{
for (int i=0; i<objects.Length; i++)
{
for (int j=0; j<objects.Length; i++)
{
if (objects[i].GetComponent<Renderer>().bounds.Intersects(
objects[j].GetComponent<Renderer>().bounds))
{
//Handle collision
break;
}
}
}
}
}
Wenn dies nicht funktioniert, dann sollten Sie auch mit GetComponent<MeshFilter>().mesh.bounds
versuchen. Beachte, dass wenn dein Spiel 2D ist, du stattdessen GetComponent<SpriteRenderer>().mesh.bounds
benutzen solltest.
Bitte überprüfen Sie meine Antwort auf Joe Blow's Kommentar. Ich versuche zu vermeiden, Kollisionen in der Update-Methode zu überprüfen, ist es möglich, eine benutzerdefinierte OnCollisionEnter2D-Methode zu erstellen, um mein Problem zu lösen. – Nullititiousness
Sicher ist es möglich, ein benutzerdefiniertes Ereignis für die Kollision mit Delegaten und Ereignis zu erstellen, aber Sie müssen immer noch die Kollision erkennen (entweder durch Überprüfung der Grenzen oder Unity's Physik-Engine), um das benutzerdefinierte Ereignis auszulösen. Vielleicht können Sie, wenn Sie etwas genauer erklären, was genau Sie erreichen möchten, verschiedene Ideen vorschlagen. – Agustin0987
Ich bin verblüfft von Ihrer Frage @Nullitititess natürlich, gibt es Callbacks, wenn Sie eine Kollision haben http://docs.unity3d.com/ScriptReference/Collider2D.OnCollisionEnter2D.html und so weiter. – Fattie
- 1. verbunden Nachbarn in einem Java 2D-Array
- 2. Wie werden mehrere gleichzeitige elastische Kollisionen behandelt?
- 3. Unity 3D 5.4 2D-Kollisionen funktionieren nicht?
- 4. Unity 2D Kollisionen mit Prefabs funktioniert nicht am Telefon
- 5. Game Center Multiplayer mit GKMatch, aber scheint nicht verbunden werden
- 6. Wie behandelt man das Datum in Django?
- 7. Behandelt File.AppendAllText Kollisionen (d. H. Mehrbenutzer-Parallelität)?
- 8. Wie behandelt man das Nummernzeichen ('#') in Dateinamen?
- 9. Wie werden Spiel Ereignislängen in 2D Spielen behandelt?
- 10. EXPECT Skript, wie man mehrere Seiten der Ausgabe behandelt
- 11. Game Maker - Wie man eine Zeit der Unverwundbarkeit zwischen Kollisionen hinzufügen
- 12. Wie behandelt man das Frontend in Lumen
- 13. Prüfe den Wert einer Variablen von jedem Spielobjekt, das mit einem Skript verbunden ist
- 14. Wie überprüft man die Verfügbarkeit der Internetverbindung, wenn das Gerät mit einem Router verbunden ist?
- 15. Javascript WebSocket nicht verbunden
- 16. Wie erkenne ich, ob stderr von einem Skript aus mit einem Terminal verbunden ist?
- 17. Java 2D Game Key Eingabe (Best Practice?)
- 18. Wie kann man herausfinden, ob der PC mit einem Netzwerk verbunden ist?
- 19. 2D Game Engine Wie kann ich Spielobjekte organisieren?
- 20. Wie kann ich mit Objective-C feststellen, wenn das iPhone mit einem WLAN-Netzwerk verbunden ist?
- 21. Game Programmierung - Kommunikation zwischen Spiel-Objekten in 2d
- 22. Wie kann man auf eine VM zugreifen (pingen), wenn sie nicht mit einem Netzwerk verbunden ist?
- 23. Wie überprüft man, ob WiFi verbunden ist oder nicht?
- 24. Wie behandelt man nicht eingestellte/Standarddaten in Laravel? (mit Carbon)
- 25. Wie macht man Kollisionen im TKinter?
- 26. Python, wie man Split behandelt, wenn Delimiter nicht vorhanden ist?
- 27. Wie überprüft man das echte Internet in Android verbunden?
- 28. Wie überprüft man, ob JSP mit einer Datenbank verbunden ist?
- 29. Wie erkennt man, ob ein Drucker mit pyqt verbunden ist?
- 30. Kollisionen in SpriteKit
Warum wäre es "schwierig zu implementieren"? Was willst du passieren, wenn es zu einer Kollision kommt? Umherspringen ist automatisch – Fattie
So wie es steht, hat nur ein Objekt ein Fertighaus und ich instanziiere eine Anzahl von Kopien in einem leeren Spielobjekt. Alle Spielobjekte kollidieren miteinander und verursachen Änderungen in Box-Collidern, Sprite-Renderern, Objekt-Zerstörung und -Erzeugung und angewandte Kraft sind einige der Dinge, die während der Kollision passieren. Das Schwierige ist zum Beispiel, wenn Objekt A mit Objekt B kollidiert, sollte Objekt A den Collider oder Objekt B oder beides haben? Diese Entscheidung wäre einfach, wenn nur wenige Objekte kollidieren würden. – Nullititiousness
Ich kann dir überhaupt nicht folgen. Wenn A mit B kollidiert, dann haben ** sowohl ** A als auch B Collider. – Fattie