[RESOLU]Attribuer parent multijoueur.

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
DarkYoko
Messages : 59
Inscription : 14 Juin 2013 08:50

[RESOLU]Attribuer parent multijoueur.

Message par DarkYoko » 16 Fév 2014 05:53

Bonjour à tous !

Après environ 7heures bloqués sur un problème, énormément de cheveux en moins, je viens poster ici le petit problème que je rencontre.

Voici les lignes intéressantes sur le script de l'item :

Code : Tout sélectionner

static var playersinv : Inventory;
function MoveMeToThePlayer()
{
	canGet = false;
	gameObject.SetActive(true);	//It's normally best to disable the individual components so we can keep item effects and update functions alive.
	if (GetComponent(MeshRenderer) != null)
	{
		GetComponent(MeshRenderer).enabled = false;
	}
	
	if (GetComponent(Collider) != null)
	{
		GetComponent(Collider).enabled = false;
	}
	
	GetComponent("Item").enabled = true;
	
	transform.parent = playersinv.itemHolderObject;
	transform.localPosition = Vector3.zero;
	transform.rigidbody.isKinematic = true;
	networkView.RPC("SyncPickUp", RPCMode.All, transform.localPosition);
}
Ici, le script ne fonctionne en local puis celui de la synchronisation (ci dessous):

Code : Tout sélectionner

@RPC
function SyncPickUp(location : Vector3){
	
	//location = transform.location;
	canGet = false;
	gameObject.SetActive(true);	//It's normally best to disable the individual components so we can keep item effects and update functions alive.
	
	if (GetComponent(MeshRenderer) != null)
	{
		GetComponent(MeshRenderer).enabled = false;
	}
	
	if (GetComponent(Collider) != null)
	{
		GetComponent(Collider).enabled = false;
	}
	
	GetComponent("Item").enabled = true;
	transform.rigidbody.isKinematic = true;
	transform.parent = playersinv.itemHolderObject;

}
J'utilise une variable static dans un autre script, celui de l'inventaire (ci dessous):

Code : Tout sélectionner

static var itemHolderObject : Transform;
function Start ()
{
	itemHolderObject = gameObject.transform;
itemHolderObject doit être le parent de l'item. Donc dans la fonction start, on détermine le parent, à savoir le gameObject attaché au script.
Le problème étant que l'item s'attache au mauvais joueur. J'ai réfléchit à une façon pour déterminer le bon joueur(avec networkView.isMine), et donc attribuer le bon parent, mais je ne vois pas comment faire.
Si quelqu'un peut éclairer ma lanterne, ce serait très gentil de sa part !
Le script n'est pas de moi, je le "convertis" en multijoueur.

Edit: bon j'ai trouvé, j'envois l'id du networkview à tout le monde, et avec networkView.Find je parente le transform avec l'id.

Répondre

Revenir vers « Scripting »