Jump to content

racsosoi@yahoo.es

Registrados
  • Content Count

    13
  • Joined

  • Last visited

  • Days Won

    1

racsosoi@yahoo.es last won the day on January 27

racsosoi@yahoo.es had the most liked content!

Community Reputation

2 Neutral

About racsosoi@yahoo.es

  • Rank
    Iniciado

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. pues si, gracias a esto ahora entiendo exactamente como funciona el normalized ­čśŤ yo estaba plasmando las cuentas matematicas en el script, realmente seria casi lo mismo pero con el normalized queda bastante mejor muchas gracias
  2. Buenas. El titulo creo que ya esta claro, pero simplemente quiero saber si unty tiene alguna funcion especifica para hacer las cuentas matematicas para convertir cooredenadas rectangulares a corrdenadas efericas? lo he buscado pero haveces me cuesta mucho encontrar estas cosas de unity al estar todo en ingles y tener tanta informacion. gracias de antemano.
  3. el problema era que eso que tu dices no se cumplia, no es siempre 0,1,0, por eso tenia el problema. pero bueno ya esta solucionado
  4. Vale se├▒ores muchas gracias por la ayuda, ya lo he solucionado, pero no veo como modificar el post para poner que esta solucionado. basicamente el error estaba en que cojia la direccion, la cojida de la mano del jugador en relacion a la pelota, pero dicha mano estaba como hijo del objeto de player, yo creo que al ser un hijo de otro objeto estaba dando este error. Basicamente lo he solucionado poniendo otro objeto sin ser hijo de nadie, poniendo por script que este en el mismo lugar que la mano en todo momento y cojiendo la direccion de este nuevo objeto. no se si me explico bien pero ya esta solucionado ­čśŤ muchas gracias a todos los que intentaron ayudar ­čśä
  5. justo debajo la normalizaba si no recuerdo mal pero bueno, esta direccion no fallaba
  6. Buenas he encontrado que error lo es por la manera en la que cojo la direccion, pero no se de que otra manera podria cojer la direccion para que se aplique bien el normalized. basicamente la pelota se tiene que mover en direccion al jugador cada vez que pulse espacio y a la misma velocidad, pero lo de a la misma velocidad no lo consigo, este es todo el script, que lo he simplificado para hacer estas pruebas y mostrarlas: public class controladora : MonoBehaviour { public GameObject Pelota; public GameObject Player; public GameObject Camara; public Rigidbody rBpelota; private Vector3 PositionPelota; private Vector3 PositionPlayer; public Vector3 Direccion; private bool Unpic = false; void Start() { rBpelota = Pelota.GetComponent<Rigidbody>(); // agafar es rigitbody de sa pilota } void Update() { Camara.transform.position = new Vector3(Pelota.transform.position.x, Pelota.transform.position.y + 5f, Pelota.transform.position.z - 5f); if (Input.GetKey(KeyCode.Space)) { if (Unpic == false) { PositionPelota = new Vector3(Pelota.transform.position.x, Pelota.transform.position.y, Pelota.transform.position.z); PositionPlayer = new Vector3(Player.transform.position.x, Player.transform.position.y, Player.transform.position.z); Direccion = (PositionPlayer - PositionPelota).normalized; Debug.Log(Direccion); rBpelota.velocity = Direccion.normalized * 10f; Unpic = true; } } else { Unpic = false; } } } se os ocurre de que manera lo podria hacer para que se aplique bien el normalized no como aqui que no se aplica bien? gracias
  7. vale creo encontre el problema. el problema parece estar en la manera que cojo la direccion que por algun motivo no deja que se le aplique el normalized: directionDer = (PosManoDer - PosPelota).normalized; // indicar la direccion que hay entre la mano y la pelota directionDer.y = directionDer.y * (-1);// invertir direccion directionDer.x = directionDer.x * (-1);// invertir direccion quitando el normalized de aqui y aplicandolo mas tarde no soluciona nada. ma├▒ana me estudiare mas como solucionarlo ahora que creo que encontre nonde esta el problema
  8. Buenas como veo que no me hago entender correctamente he hecho un proyecto nuevo la mar de simple para comprobarlo, donde solo hay una pelota y este script: void Update() { Direccion = new Vector3(0.0f , Random.Range(0.1f, 1.0f) , 0.0f); Camara.transform.position = new Vector3(Pelota.transform.position.x, Pelota.transform.position.y + 5f, Pelota.transform.position.z - 5f); if (Input.GetKey(KeyCode.Space)) { if (Unpic == false) { rBpelota.velocity = Direccion.normalized * 10f; Unpic = true; } } else { Unpic = false; } } al hacer este proyecto nuevo he comprobado que funcion correctamente, asi que en el proyecto principal tengo algun problema que impide que el normalized se ejecute correctamente, pero no se que puede ser. podria ser que pase porque el rigitbodi del objeto es un rigitbodi 2D? ya que el proyecto esta en 3D pero las fisicas de la pelota en 2D, alomejor puede ser por eso?
  9. lo he probado asi: Vector2 dir = new Vector2(directionDer.x, directionDer.y); dir.Normalize(); dir.x = Mathf.Floor(dir.x); dir.y = Mathf.Floor(dir.y); rbPelota.velocity = dir * 100f; pero me hace exactamente lo mismo que me hacia antes, lo implementar├şas de otra manera?
  10. primero muchisimas gracias por tu ayuda. la verdad es que esto me esta llevando mas dolores de cabeza de lo que esperaba he probado todos los metodos y en todos me pasa lo mismo. lo he simplificado para que sea mas facil de entender y comprobar si funciona correctamente, ahora lo tengo asi rbPelota.velocity = directionDer.normalized * 100f; y cada vez que se aplica esta velocidat la pelota sale a una velocidad diferente y aleatoria, lo que yo necesito es que la pelota siempre salga a la misma velocidad pero la direccion a la que se sale sea aleatoria que ocurre, que la direccionDer es aleatoria (es donde tengo el principal problema pero tiene que ser asi) y no es lo mismo multiplicar 0.1 * 100 que 1 / 100, por lo que cuando la direccion aleatoria es 1, la pelota sale con mucha mas fuerza que cuando es 0.1 y esto me pasa tando con AddForce como con velocity o el forcemode velocitychange el problema es que la fuerza o velocidad que yo le pongo lo multiplico por la direccion, y esto lo que hace es que la fuerza se me haga aleatoria tambien, pero no se de que otra manera lo puedo hacer, realmente por lo que quiero y me has explicado ceo que es mejor utilizar el velocity y no el addforce, pero utilizar el velocity no soluciona este problemilla. espero haberme podido explicar mejor ahora ­čśŤ
  11. yo tengo una variable donde solo quiero tener la direcci├│n, porque la fuerza que se debe aplicar a esa direcci├│n la cojo por otra parte. lo que me ocurre ahora que es lo que no quiero que pase, es que la fuerza que yo le aplico se ve muy afectada de seg├║n como se coja la direcci├│n b├ísicamente quiero coger una direcci├│n que no ponga fuerza, solo direcci├│n, o en su lugar que ponga una fuerza m├şnima y siempre la misma fuerza para yo poderla controlar, porque ahora cada vez me aplica una fuerza diferente (por culpa de como cojo la direccion, pero la tengo que cojer de esta manera) y asi es imposible de controlar. Perd├│n por si no me explico bien
  12. Muy buenas a todos. tengo una duda que no logro solucionar, mi problema es que a├▒ado una fuerza con addforce y un vector3 a un objeto, pero de esta manera a├▒ado la fuerza y la direccion de la fuerza todo con el vector3 y yo quiero poner la direcci├│n por un lado y la fuerza por otro. Sab├ęis como lo podria hacer? He probado haciendo un normalize () pero no me funciona, me sigue a├▒adiendo tambi├ęn la fuerza y aparte del normalize no se que mas hay para hacer esto. Lo tengo as├ş: DirectionDer = (PosManoDer - PosPelota); DirectionDer.Normalize (); rbPelota.AddForce (DirectionDer * (FuerzaActual * MultiplicaFuerza)); Antes tenia el normalize en la primera linea pero para probar lo quite de la primera linea e hice una nueva solo para aplicar el normalize, pero no cambio nada) La fuerza que se le tiene que aplicar me viene de dos lugares diferentes muchas gracias de antemano . Creo que me he explicado bien: P
×
×
  • Create New...