Jump to content
Sign in to follow this  
nomoregames

ANSWERED Distancia y posiciones

Recommended Posts

Hola a todos

Quiero acer que un objeto se posicione entre otros dos, es decir que si ay un objeto player y un objeto mouse, se coloque entre estos dos, para eso, primero hay que saber la dirección (restar una posición a la de el otro), pero...

Como indico luego a la distancia que estará de el objeto player? (esa distancia sera siempre la misma así que técnicamente no es justo justo el medio de los dos objetos) 

PD: estoy trabajando en 2d

 

Gracias por vuestra atención

Share this post


Link to post
Share on other sites

Tenes dos objetos y queres situar algo exactamente al centro de estos dos ?

Quote

Objeto_CENTRO = (Objeto_A.position + Objeto_B.position) / 2

 

Edited by pioj
Por favor, usa el <> o el "quote" para pegar código.

Share this post


Link to post
Share on other sites

no exactamente..., aquí te dejo un dibujo

Ejemplo 1

Sin título.png

el mismo caso solo que el mouse esta mas alejado y en otra posición

Sin título.png

Se entiende a que me refiero?
 

Share this post


Link to post
Share on other sites

Y podrías tomar la dirección y multiplicar por la distancia. 

Quote

 

dir=(a.position - b.position).normalized

c.position=a.position + dir*1.3f

 

 

Share this post


Link to post
Share on other sites

Perfecto! muchas gracias, no se como no se me havia ocurrido XD

 

¡RECTIFICO!

 

No funciona tan bien como pensaba :4_joy:

 

Resulta que dependiendo de lo cerca o lejos que este el objeto mouse de el player, mas se acerca el obj centro a player

 

https://drive.google.com/open?id=17cmJmaTivD1nlfTde_i1iU4S4UGeB8TA

Como podría hacer que el obj centro siempre se encuentre a  1.3f de player????

Share this post


Link to post
Share on other sites

Lo "recolocas" a mano:  fuerzas que su transform.position sea igual a la posición del jugador + la dirección en la que vaya + la separación...

Share this post


Link to post
Share on other sites

Está bien lo del drive pero sería más de agradecer que pegaras unas imágenes.

Si ambos objetos no están en el mismo plano, tendrás que hacer algún ajuste más. También depende si quieres que el objeto esté alrededor del jugador "en la pantalla" o "en el espacio del objeto (3D)".

También sería interesante ver cómo estás generando la posición del mouse en 3D, tendrías que hacer un Raycast hasta el terreno o hasta el plano del jugador.

Ponnos screenshots y el código involucrado (esto siempre deberías hacerlo así cuando hagas una pregunta ;-)).

Share this post


Link to post
Share on other sites

A lo mejor no te estoy entendiendo muy bien....

¿ Esto no valdría ?

public class DistanciaEntre : MonoBehaviour
{
    [SerializeField]
    private Transform mouse;
    [SerializeField]
    private Transform player;


    private Vector3 distancia;

    // Update is called once per frame
    void Update()
    {
        distancia = (mouse.position - player.position) * 0.3f;  // Cambia el 0.3 por la distancia fija a la que quieras que esté
        transform.position = player.position +  distancia;
        
    }
}

 

Share this post


Link to post
Share on other sites

Bien...

AngelFG... tu script es lo mismo que publicaba francoe

Quote

Y podrías tomar la dirección y multiplicar por la distancia. 

  Quote

 

dir=(a.position - b.position).normalized

c.position=a.position + dir*1.3f

 

 

 

Share this post


Link to post
Share on other sites
3 minutes ago, nomoregames said:

Bien...

AngelFG... tu script es lo mismo que publicaba francoe

 

 

No exactamente lo mismo...si te fijas en el ejemplo de franceo normaliza la distancia y después, al multiplicar por 1.3f, siempre va a estar a esa distancia fija con respecto a 'a'. Por lo tanto, si 'b' se acerca a 'a' estará más cerca del centro, que es lo que comentaba nomeregame como respuesta a la solución anterior.

Mientras que en mi ejemplo no normalizo y eso hace que la distancia se mantenga en la misma proporción (o eso creo si no me equivoqué al hacer el ejemplo :) )

En mi ejemplo siempre se encontraría al 30% del espacio entre 'a' y 'b' independientemente de la distancia entre ellos....

 

 

Edited by AngelFG

Share this post


Link to post
Share on other sites

Jejejeje, creo que me he explicado mal

Lo que estoy tratando conseguir es que el objeto "centro" se encuentre siempre a una distancia absoluta de el objeto A de forma independiente a la distancia a la que se encuentre el objeto B... Me he explicado mejor?

Share this post


Link to post
Share on other sites

Cómo se puede complicar algo tan sencillo. Me sumo a los que no entienden nada.

Pon el objecto caja ese a 1,3f del player colgando de él y hazle un lookat del player al mouse. El comportamiento parece ser el player un planeta y la caja como una luna, que al mover el mouse rota alrededor.

Edited by iRobb

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...