Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Сеть

Ответ
 
Опции темы
Старый 08.05.2012, 05:36   #1
Serg
AnyKey`щик
 
Регистрация: 08.05.2012
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Помоги пожалуйста разобраться с NetworkSyncAnimation

Помоги пожалуйста разобраться с Анимацей так сказать в сети, нарыл скрипт на прасторах интернета, пишут рабочий,но у меня он так и не стал синхронизировать статы анимаций
скрипт:
using UnityEngine; 
using System.Collections; 
using System; 
 
public class NetworkSyncAnimation : MonoBehaviour { 
 public GameObject PlayerAnim; 
  
 public enum AniStates  
 { 
 walk = 0, 
 idle 
 } 
  
 public AniStates currentAnimation = AniStates.idle; 
 public AniStates lastAnimation = AniStates.idle; 
  
 public void SyncAnimation(String animationValue) 
 { 
 currentAnimation = (AniStates)Enum.Parse(typeof(AniStates), animationValue); 
 } 
  
 // Update is called once per frame 
 void Update () { 
  
 if(networkView.isMine){if(Input.GetKey(KeyCode.W)){currentAnimation = AniStates.walk;}else{currentAnimation = AniStates.idle;}} 
  
 if (lastAnimation != currentAnimation) 
 { 
 lastAnimation = currentAnimation; 
 PlayerAnim.animation.CrossFade(Enum.GetName(typeof(AniStates), currentAnimation)); 
 PlayerAnim.animation["run"].normalizedSpeed = 1.0F; 
 PlayerAnim.animation["walk"].normalizedSpeed = 1.0F; 
 } 
 } 
  
 void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info) 
 { 
 if (stream.isWriting) 
 { 
 char ani = (char)currentAnimation; 
 stream.Serialize(ref ani); 
 } 
 else 
 { 
 char ani = (char)0; 
 stream.Serialize(ref ani); 
  
 currentAnimation = (AniStates)ani; 
 }  
  
 } 
 
}
p.s возможно ли что это связано с тем что я проверяю все, запуская на одном компьютере 2 копии приложения ?
(Offline)
 
Ответить с цитированием
Старый 08.05.2012, 09:52   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Помоги пожалуйста разобраться с NetworkSyncAnimation

Назначь этот скрипт компоненту NetworkView на поле observed и должно работать. Правда тут всего две анимации с именами idle и walk, если у тебя анимации с другими именами (даже в другом регистре типа Walk), то работать не будет.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 09.05.2012, 02:59   #3
Serg
AnyKey`щик
 
Регистрация: 08.05.2012
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помоги пожалуйста разобраться с NetworkSyncAnimation

Сообщение от pax Посмотреть сообщение
Назначь этот скрипт компоненту NetworkView на поле observed и должно работать. Правда тут всего две анимации с именами idle и walk, если у тебя анимации с другими именами (даже в другом регистре типа Walk), то работать не будет.
Разумеется все было так и сделано, все же не работает.
ps pax тебя не затруднит билд на кидат, буду очень признателен.
ps Каму интересно решил проблему так:
using UnityEngine;
using System.Collections;
using System;

public class NetworkSyncAnimation : MonoBehaviour {
	public GameObject PlayerAnim;

	void Start() {
		
		    PlayerAnim.animation.CrossFade("idle");
			PlayerAnim.animation["idle"].normalizedSpeed = 1.0F;
			
		
	}
	
	
	void Update () {
		
		string entID = gameObject.networkView.viewID.ToString().Remove(0,13);
		if(Input.GetAxis("Vertical")!= 0){if(networkView.isMine){networkView.RPC("Walk",RPCMode.All,entID);}}else{if(networkView.isMine){networkView.RPC("Idle",RPCMode.All,entID);}}


	}
	
	[RPC]
	void Walk(string NetworkID){
		string entID = gameObject.networkView.viewID.ToString().Remove(0,13);
		if(NetworkID == entID){
			if(PlayerAnim){
			
		    PlayerAnim.animation.CrossFade("walk");
			PlayerAnim.animation["walk"].normalizedSpeed = 1.0F;
			
			
			}
		}
		
		
	}
	[RPC]
	void Idle(string NetworkID){
		string entID = gameObject.networkView.viewID.ToString().Remove(0,13);
		if(NetworkID == entID){
			if(PlayerAnim){
		    PlayerAnim.animation.CrossFade("idle");
			PlayerAnim.animation["idle"].normalizedSpeed = 1.0F;
			
				
			}
			
		}

	}

}

Последний раз редактировалось Serg, 09.05.2012 в 15:06.
(Offline)
 
Ответить с цитированием
Старый 09.05.2012, 08:30   #4
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Помоги пожалуйста разобраться с NetworkSyncAnimation

Зачем везде по два раза назначение скорости проигрывания?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 09.05.2012, 15:06   #5
Serg
AnyKey`щик
 
Регистрация: 08.05.2012
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помоги пожалуйста разобраться с NetworkSyncAnimation

Сообщение от pax Посмотреть сообщение
Зачем везде по два раза назначение скорости проигрывания?
Действительно что то перестарался,сам не замечал. Сейчас потравлю может кому пригодится.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:33.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com