Po kilku eksperymentach wyposażyłem pustą (HeadCam) w szyję postaci. Ten fragment umożliwia synchroniczne obracanie głowicy z CardboardHead/Camera.W jaki sposób ciało postaci może być ciągle obracane, gdy jego głowa jest już obrócona o 60 ° '?
void LateUpdate() {
neckBone.transform.rotation = Camera.transform.rotation * Quaternion.Euler(0,0,-90);
Camera.transform.position = HeadCam.transform.position;
}
ramiona postać nie powinno poruszać się tylko kiedy głowica obraca się, dopóki mieści się w zakresie -60 ° do 60 °, po czym ja jak przenieść cały znak z ramionami nadal widoczny . Poniższa metoda działa tak długo, jak długo postać nie jest obracana o więcej niż 180 °, po tym jak znaki zmieniają się o 180 °, w jaki sposób mogę uzyskać stały obrót?
void LateUpdate() {
Quaternion camRot = Camera.transform.rotation * Quaternion.Euler(0,0,-90);
neckBone.transform.rotation = camRot;
float yrot = camRot.eulerAngles.y;
float ydelta = 0;
if (yrot < 300f && yrot > 180) {
ydelta = yrot - 300f;
}
if (yrot > 60f && yrot < 180) {
ydelta = yrot - 60;
}
playerObj.transform.rotation = Quaternion.Euler(0, ydelta, 0);
Camera.transform.position = HeadCam.transform.position;
}
apletu Java do testowania jednostkowego algorytmu: https://github.com/3dbug/blender/blob/master/HeadCamRot.java
nie można użyć animacji łatwiejszy do tego celu? – leAthlon
@leAthlon to wirtualna aplikacja reallity, w której obroty muszą być w czasie rzeczywistym stosowane zgodnie z ruchem kamer. Zasadniczo zobaczysz siebie, gdy spojrzysz w dół. – stacker
Nie jestem pewien co do rzeczywistości wirtualnej - być może skrypt mouselook z prefabrykatów unity5 może ci pomóc – leAthlon