Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Problema con Rigidbody

Iniciado por Destroyer, Septiembre 18, 2015, 03:33:25 AM

Tema anterior - Siguiente tema
Hola, tengo un problema con regidbody , es que estoy intentando hacer una fireball pero me tira errores, no entiendo porque tira error #pragma strictvar newObject : GameObject;
 public var throwForce:float = 10;
function Update () {
 if (Input.GetKeyDown("m")){
 var ShootFireball : GameObject;
     ShootFireball = Instantiate(newObject, transform.position, transform.rotation);
 ShootFireball.rigidbody.AddForce(throwForce * this.transform.forward, ForceMode.Impulse);
 }
}Tira de errores:MissingComponentException: There is no 'Rigidbody' attached to the "ShootFireball(Clone)" game object, but a script is trying to access it.
You probably need to add a Rigidbody to the game object "ShootFireball(Clone)". Or your script needs to check if the component is attached before using it.
UnityEngine.Rigidbody.AddForce (Vector3 force, ForceMode mode) (at C:/BuildAgent/work/d63dfc6385190b60/artifacts/EditorGenerated/NewDynamics.cs:666)
Magic.Update () (at Assets/Magic.js:12) linea 12 es:  ShootFireball.rigidbody.AddForce(throwForce * this.transform.forward, ForceMode.Impulse);   

1er error En el prefab ShootFireball que estas clonando necesita tener un rigidbody para que el script aplique la fuerza que quieres , asi que asignaselo en el inspector.2do errorCuando tienes que asignar una fuerza con rigidbody debe expresarse con un new vector,Ya que tienes que especificar hacia que direccion tiene que moverze la bola de fuego ya sea en el eje x, y o z (Asi que deberia ser asi como deberia expresarse los add force , rigidbody.Addforce(new vector 3 (FuerzaX,FuerzaY,FuerzaZ))) ,En tu caso deberia ser asi ShootFireball.rigidbody.AddForce(New Vector2(throwForce * this.transform.forward, ForceMode.Impulse));Ojo tambien usaria el vector3 , pero eso depende en que dimension estes haciendo tu juego , si es en 3d Es vector3 ya que afecta todos los ejes x(Horizontal) , y(Vertical) , z(De frente) , y vector2 si es en 2d ya solo afecta el eje x(Horizontal) , y(Vertical). Suerte 

@Miguel Torrealba tiene razón. Yo añadiría que accedas al componente RigidBody con ShootFireball.GetComponent<Rigidbody>().AddForce(throwForce * this.transform.forward, ForceMode.Impulse);

@iRobb me ayudas con este tema por favor  

[quote author=Miguel Torrealba" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="24749" data-ipsquote-contentcommentid="111473">1er error En el prefab ShootFireball que estas clonando necesita tener un rigidbody para que el script aplique la fuerza que quieres , asi que asignaselo en el inspector.2do errorCuando tienes que asignar una fuerza con rigidbody debe expresarse con un new vector,Ya que tienes que especificar hacia que direccion tiene que moverze la bola de fuego ya sea en el eje x, y o z (Asi que deberia ser asi como deberia expresarse los add force , rigidbody.Addforce(new vector 3 (FuerzaX,FuerzaY,FuerzaZ))) ,En tu caso deberia ser asi ShootFireball.rigidbody.AddForce(New Vector2(throwForce * this.transform.forward, ForceMode.Impulse));Ojo tambien usaria el vector3 , pero eso depende en que dimension estes haciendo tu juego , si es en 3d Es vector3 ya que afecta todos los ejes x(Horizontal) , y(Vertical) , z(De frente) , y vector2 si es en 2d ya solo afecta el eje x(Horizontal) , y(Vertical). Suerte [/quote]#pragma strictvar newObject : GameObject;
 public var throwForce:float = 100;
  function Start(){
  
  
  }function Update () {
 if (Input.GetKeyDown("m")){
 var ShootFireball : GameObject;
     ShootFireball = Instantiate(newObject, transform.position, transform.rotation);
ShootFireball.rigidbody.AddForce(transform.forward * 500);
 }}  como puedo ponerle: Vector3(0, 1, 0) 

Etiquetas: