Ich versuche mehrere Objekte gleichzeitig von Punkt A nach Punkt B und wieder zurück zu bewegen, um den Spieler als Hindernisse zu blockieren.Objekte hin- und herbewegen
Ich habe
versuchtStartCoroutine(Oscillate(OscillationFunction.Sine, 1f));
public IEnumerator Oscillate(OscillationFunction method, float scalar)
right = GameObject.FindGameObjectsWithTag("MovingObs2");
foreach (GameObject r in right)
{
startPos = r.transform.position;
v = startPos;
v.x = (r.transform.position.x + (Mathf.Cos(Time.time) * scalar));
r.transform.position = v;
yield return new WaitForSeconds(2);
r.transform.position = startPos;
}
und andere, aber sie sind alle schwer innerhalb eines gewünschten Abstand und Geschwindigkeit von der Startposition enthalten. Es ist zu schnell und zu weit.
und ich versuchte eine scheinbar einfachere Linie, die für mich leichter zu verstehen ist.
v.x = l.transform.position.x + speed * Time.deltaTime;
l.transform.position = v;
aber da ich ein Array in einer foreach-Schleife verwenden, ich weiß nicht, wie jeder Gameobjects transform.position zu erhalten, so dass es als Bedingung verwendet werden kann, um die Richtung der umkehren Objekte Bewegung jedes Mal entweder Punkt A oder Punkt B
if (l.transform.position.x <= startPos.x || l.transform.position.x >= startPos.x + endPos.x)
{
speed *= -1;
}
bearbeiten erreicht: ich entschuldige mich, wenn ich eine doppelte Frage gestellt, ich dachte, es aufgrund der Anzahl der Objekte in einem Array beteiligt anders war.
Warum nicht jedes Objekt mit einem Skript, das an das Objekt angehängt ist, auf seine eigene Bewegung achten, anstatt ein Controller-Objekt zu haben, das versucht, alle zu bewegen? –
Jede Bewegung sollte eine Funktion von 'Time.deltaTime' sein, wie Sie vermutet haben – MickyD
@ScottChamberlain Ich dachte eigentlich, es wäre einfacher und organisiert, wenn es zusammen geschrieben, aber eindeutig lag ich falsch. und ich war zu beschäftigt damit, es zum Laufen zu bringen, und danke für deinen Kommentar, es war erleuchtend. – Seiren