Ich mache ein anderes einfaches Spiel, ein Fangspiel, bei dem ein laichendes Zielspielobjekt mit einem Spieß erfasst werden muss, um es aufzuspießen. Hier wie:
Zu Beginn fällt das fallende Objekt ( in Rot ) in vertikaler Richtung ( in Blau ).
Bei richtiger Ausrichtung fällt das Ziel entlang der Spießlinie nach unten. ( in blau ) Dann wird ein anderes Ziel erzeugt und fällt vertikal. ( in rot )
Wenn das zweite Ziel in einer Serie erneut erfolgreich abgezielt wird, fällt es entlang des Spießes und wird gestapelt. Gleicher Vorgang immer und immer wieder, wenn ein anderes Ziel erzeugt wird.
Wenn ich es jedoch auf der Registerkarte "Szene" in Unity teste und mehrere Ziele aufspieße, wird es anstelle eines reibungslosen Ablaufs und Stapelns überlagert, anstatt es wie ein Pfannkuchen zu stapeln. So sieht es aus:
Wie ich bemerkte, als ich die Hälfte meines Fortschritts erreicht hatte, versuchte ich herauszufinden, wie ich mit Kolliderkörpern umgehen sollte, ohne mich gegenseitig zu verkleben, so dass sie sich tatsächlich wie im Beispiel des Bildes bei Nr. 1 stapeln. 3. Hier ist der Skriptcode, den ich im Zielspielobjekt hinzugefügt habe:
using UnityEngine;
using System.Collections;
public class ImpaleStateTest : MonoBehaviour {
public GameObject target;
public GameObject skewer;
public bool drag = false;
private float stack;
private float impaleCount;
void Start () {
stack = 0;
impaleCount = 0;
}
void Update () {
if(drag) {
target.transform.position = new Vector3 (DragTest.dir.transform.position.x, DragTest.dir.transform.position.y - 0.35f, 0);
target.transform.rotation = DragTest.degrees;
target.rigidbody2D.fixedAngle = true;
target.rigidbody2D.isKinematic = true;
target.rigidbody2D.gravityScale = 0;
if(Input.GetMouseButton(0)) {
Debug.Log ("Skewer: " + DragTest.dir.transform.position.x);
Debug.Log ("Target: " + target.transform.position.x);
}
}
}
void OnTriggerEnter2D(Collider2D collider) {
impaleCount++;
Debug.Log ("Impaled " + impaleCount + " time(s)!");
drag = true;
audio.Play ();
}
}
Abgesehen davon bin ich mir nicht sicher, ob es richtig ist, aber die einzige Möglichkeit, die aufgespießten Ziele beim Ziehen des Spießes nach links oder rechts festzuhalten, besteht darin, nur die X-Koordinaten vom Spieß abzurufen. Gibt es noch etwas zu empfehlen, um dieses Verhalten so realistisch wie möglich zu verbessern? Bitte helfen Sie.
quelle