Ich muss sehr viele Rotationen im Multiplayer übertragen und mir waren die 12 Bytes doch schon sehr heftig. Mit diesen Script konnte ich es auf die Hälfte runterschrauben. Was haltet ihr davon? Die Byte Array werden dann repliziert.
Ich versuche sowas auch mit Location. Habt ihr ne bessere Idee?
Ich hoffe iich liege damit richtig, dass es am Ende nur 6 bytes sind, evtl ist der Array auch noch paar Byte groß wegen dem Index? das weis ich noch nicht.
2 Nachkommastellen sollte für die Rotation noch ein sauberes Ergebnis erziehlen, ansonsten kann man das mit Interp noch alles ausgelichen. So wie der replicationMovment funktioniert.
Dieses hier ist zum Aufbauen der Array, die dann repliziert oder versendet werden kann. Am Anfang ist ein CombineRotators. Der sorgt dafür, dass die Werte umgerechnet werden, wenn sie über den Rotationswert hinaus gehen. zB 180 und -180 ist bei vielen als Standard Miximum. Sollte ein Wert 190 sein, durch irgendwelche berechnungen vom eigenen Script, dann wird durch den combineRotators der Wert -170 sein. Ab 180 geht es ins Negative Bereich. Da ein Byte nur Maximal 255 sein kann, passt das sehr gut, das es nur bis 180 geht. Für Negative werte, habe ich nach der Komma Stelle eine 1 hinzugefügt. Denn mein Script berechnet alles nur auf 2 nachkommastellen. Wenn ein Wert -12,99 ist, dann bekommt das Byte eine 1 davor gesetzt und sieht somit so aus im Array [12,199] . Denn die 199 ist das maximum was man erreichen kann bei 2 Zahlen. Nacher wird beim entschlüsseln die 1 wieder entfernt, dazu weiter unten im script.
Dieses hier ist zum entschlüsseln. Da die Rotation auch Minus sein kann, habe ich die 2 nachkommastellen mit einer 1 Davor versehen, sodass man erkennen kann, das es Minus ist. Wenn es den Wert X=12,56 hat, dann würde es so aussehen im Array, [12,56]. Wenn es Negativ sein sollte, dann [12,156]. Dann würde X so aussehen X=-12,56. Weil die 1 erkannt wurde. Die 1 ist sehr Praktisch, denn die nachkomma werte können nicht über 255 kommen.