Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: manux en Marzo 26, 2017, 12:30:17 PM

Título: Acceder a Otro RigidBody
Publicado por: manux en Marzo 26, 2017, 12:30:17 PM
Buenas a todos, estoy intentando acceder un RigidBody a otro Script para que cuando detecte un OnMouseDown el RigidBody haga algo.
 
Os dejo lo que intento hacer:
 

public Rigidbody rigi;
void Awake(){
rigi = GetComponent<Rigidbody>();
}
     
void OnMouseDown(){
// Accion para ese RigidBody
}

 
Recordar, que lo que intento es acceder al un RigidBody que no tiene el script asignado, el script esta en el que intento hacer el OnMouseDown.
 
Saludos.
Título: Acceder a Otro RigidBody
Publicado por: Jose134 en Marzo 26, 2017, 02:41:13 PM
Si lo que quieres hacer es acceder al rigidbody de otro GameObject lo puedes hacer asi
 

//Método 1 - Buscando el GameObject por nombre
private Rigidboyd rigid;
private void Awake () {
rigid = GameObject.Find("nombreDelOtroGameObject").GetComponent<Rigidbody>();
}
private void OnMouseDown () {
    //Accion del rigidbody
}
//Método 2 - Asignando el GameObject en una variable
public GameObject target;
private Rigidbody rigid;
private void Awake () {
    rigid = target.GetComponent<Rigidbody>();
}
private void OnMouseDown () {
//Accion del rigidbody
}

 
 
 
Si no querias eso no he entendido tu pregunta
Título: Acceder a Otro RigidBody
Publicado por: manux en Marzo 26, 2017, 02:51:17 PM
Me lo reconoce perfectamente así, lo que necesito cogerlo desde otro script, si lo pongo publico y se lo añado manualmente a la hora de iniciar el juego me los elimina y tengo que volverlos a insertar manualmente, cosa que eso hace que juego no funcione ya que se inicia sin el script.
 
Osea ese rigidbody lo intento cojer de otro script.
 
EDITO:
 
Vale ahora si me ha funcionado, lo que me faltaba es también acceder al script:
 

private ControladorPersonaje controlador;
private Rigidbody personaje;
void Awake(){
  controlador = GameObject.Find("Personaje").GetComponent<ControladorPersonaje>();
  personaje = GameObject.Find("Personaje").GetComponent<Rigidbody>();
}

 
Gracias @Jose134 por tu aporte :D