Переверните двухмерный игровой объект и поместите его в точно такое же положение, что хорошо работает с обеих сторон. Вращение 2d GameObject хорошо работает с обеих сторон
Однако, если я переверну GameObject, выполнив Cmd_DoTheSpawn, вращение не отразится на «другом» клиенте.
Мне нужна помощь, чтобы получить эту работу.
Вот код, который я использую:
[Command]
void Cmd_DoTheSpawn(GameObject myGameObject) {
// Check if front or back?
char lastChar = myGameObject.tag[myGameObject.tag.Length - 1];
if (lastChar == 'B') {
convertedObjectTag = unet_Back2Front [myGameObject.tag];
} else {
convertedObjectTag = unet_Front2Back [myGameObject.tag];
}
GameObject my1 = Resources.Load (convertedObjectTag) as GameObject;
float z = myGameObject.transform.localEulerAngles.z;
//var go = (GameObject)Instantiate (my1, myGameObject.transform.position, myGameObject.transform.localRotation);
var go = (GameObject)Instantiate(my1, myGameObject.transform.position, Quaternion.Euler(0f, 0f, z));
go.name = go.name.Remove(go.name.Length - 7); // Remove the '(Clone)' in name
NetworkServer.SpawnWithClientAuthority(go, base.connectionToClient);
print ("myGameObject: " + myGameObject.transform.position);
if (myGameObject == null)
print ("myGameObject NULL" + myGameObject.transform.position);
Rpc_DoTheRot (go, myGameObject);
myNetID = myGameObject.GetComponent<NetworkIdentity> ();
Cmd_DestroyGameObject (myNetID.netId);
}
Благодаря @LumbusterTick я заставил его работать, что означает, что вращение в порядке. Однако у меня возникла другая проблема, которую я не совсем понимаю.
Я добавил следующий код:
[ClientRpc]
public void Rpc_DoTheRot(GameObject newGO, GameObject oldGO) {
print ("Rpc_DoTheRot");
if (newGO == null)
print ("newGO NULL");
if (oldGO == null)
print ("oldGO NULL");
newGO.transform.rotation = oldGO.transform.rotation;
}
... который я вызываю после появления, но до уничтожения, см. обновленный код выше.
Он помещает перевернутый префаб в правильное вращение, но я получаю следующие сообщения:
старыйGO NULL
так же как:
NullReferenceException: ссылка на объект не указывает на экземпляр объекта
Я прекрасно знаю, что это значит, но не знаю, почему это происходит, поскольку все значения myGameObject обнуляются, когда я их отправляю. ... и я делаю это до уничтожения.
Я не понимаю, почему он равен нулю, но все же влияет на вращение нового объекта.