Hallo,
ich habe einen Türmechanismus (2 Türhälften, die aufklappen) gebaut. Da die Türen nicht mehr geschlossen werden sollen, könnte ich, der Sauberkeit halber, das Objekt, das diesen Mechanismus steuert, zerstören. Dabei möchte ich abgleichen, ob die Türen ihren Rotationswinkel erreicht haben.
Zum Script
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public Transform pivotLeftTransform;
public Transform pivotRightTransform;
int openAngle = 90;
bool startOpen = false;
int smooth = 2;
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
startOpen = true;
}
}
void Update()
{
if (startOpen)
{
OpenDoor(pivotLeftTransform, openAngle);
OpenDoor(pivotRightTransform, -openAngle);
if (pivotLeftTransform.localEulerAngles.y >= openAngle && pivotRightTransform.localEulerAngles.y <= -openAngle)
{
Destroy(gameObject);
}
}
}
private void OpenDoor(Transform pivotTransform, int rotationAngle)
{
Quaternion doorRotationOpen = Quaternion.Euler(0, rotationAngle, 0);
pivotTransform.localRotation = Quaternion.Slerp(pivotTransform.localRotation, doorRotationOpen, smooth * Time.deltaTime);
}
|
Die Abfrage
|
C#-Quelltext
|
1
|
pivotLeftTransform.localEulerAngles.y >= openAngle && pivotRightTransform.localEulerAngles.y <= -openAngle
|
scheint wohl nicht zu funktionieren. Ich weiß, dass dort floats abgeglichen werden. Aber laut Inspector, erreicht die Tür nach gewisser Zeit auch die 90 Grad, glatt.
Nun habe ich mal gewisse Rotationen rumprobiert, localRotation, rotation, eulerAngles und localEulerAngles. Die Bedingung wird aber nie gültig. Scheitert es jetzt an den floats oder kann man das noch auf andere Weise prüfen?
Danke