Hallo,
wenn ich eine Plattform (Würfel) um die y-Achse rotieren lassen möchte, nehme ich folgenden Code und packe einen Trigger oben auf den Plattformboden.
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[SerializeField]
private float angleY;
private void Update()
{
transform.Rotate(new Vector3(0, angleY * Time.deltaTime, 0));
}
private void OnTriggerEnter(Collider col)
{
col.transform.parent = transform;
}
private void OnTriggerExit(Collider col)
{
col.transform.parent = null;
}
|
Das funktioniert einwandfrei. Ändere ich den Code aber so ab, dass die Plattform auch mal seitlich oder nach vorne kippen kann,
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[SerializeField]
Vector3 rotationVector;
private void Update()
{
transform.Rotate(rotationVector * Time.deltaTime);
}
private void OnTriggerEnter(Collider col)
{
col.transform.parent = transform;
}
private void OnTriggerExit(Collider col)
{
col.transform.parent = null;
}
|
dann passieren beim Draufspringen auf eine um X oder Z rotierende Plattform seltsame Dinge. Der Spieler wird extrem vergrößert, einmal wurde er endlos in die Luft geschleudert, etc. Diese Fehler kommen wohl zustande, da der Spieler zum Kind der Plattform wird. Beim Rotieren auf der y-Achse ja kein Problem.
Hat jemand eine Idee, wie man das Problem angehen könnte? Ich kann zwei Scripte schreiben, für eine rotierende Plattform auf der y-Achse und für eine rotierende Plattform um X oder Z. Aber möglicherweise kann man den Fehler ja auch anders beheben.