Jump to content
Sign in to follow this  
Jhonatan00_00

Asignar objeto Transform Publico Script

Recommended Posts

Buenas tardes, llevo un buen rato tratando de conseguir asignar un objeto a un Transform Publico por medio de Script. Necesito que un prefab siga las coordenadas del personaje pero me resulta imposible conseguirlo porque al script del prefab no le puedo asignar manualmente el personaje para que sepa que objeto debe de seguir y solo me deja asignar algún objeto cuando lo que creo es un Gameobject publico y no un Transform.

Cuando asignamos un Gameobject público las coordenadas del objeto que asigne siempre me salen que son 0,0,0 y no me sirven. Necesito poder asignar un transform Publico por script para que sepa en que coordenadas está el personaje en todo momento. ¿Alguien sabe como se hace esto?.

Un saludo.

Share this post


Link to post
Share on other sites
2 hours ago, Jhonatan00_00 said:

solo me deja asignar algún objeto cuando lo que creo es un Gameobject publico y no un Transform.

Hola, vos podés asignar cualquier cosa, siempre y cuando sea del mismo tipo(referencia) o derivado(podés meter un Transform en un Component, un Monobehaviour en un Behaviour, etc), desde ya que no esperés meter un Transform en un Component y operar ese component como un Transform, para eso vas a tener que hacer un "cast". Lo mismo obviamente se puede hacer mediante código ("=").

2 hours ago, Jhonatan00_00 said:

Cuando asignamos un Gameobject público las coordenadas del objeto que asigne siempre me salen que son 0,0,0 y no me sirven.

2 hours ago, Jhonatan00_00 said:

Necesito poder asignar un transform Publico por script para que sepa en que coordenadas está el personaje en todo momento. ¿Alguien sabe como se hace esto?.

GameObject y posición no tienen nada que ver, para eso tenés que acceder al componente Transform. Por si solo el GameObject no sabe donde debería estar posicionado.

Share this post


Link to post
Share on other sites

Buenos días y gracias por responder, pero creo que no me estoy expresando bien o quizá no he entendido bien la respuesta...

En mi script he creado "public Transform Player;" y en el inspector de Unity me aparece el hueco para añadir un objeto en el Transform publico que he creado y así conocer su posición, rotación, etc... El problema es que arrastro un objeto al hueco y no se añade el objeto. Necesito saber como indicar que objeto debe de ir ahí pero por medio de script, porque manualmente no me deja.

El motivo por el cual no me deja añadirlo manualmente es que el scipt está aplicado a un Prefab y al parecer los Prefab presentan este problema.

Share this post


Link to post
Share on other sites
4 hours ago, Jhonatan00_00 said:

Necesito saber como indicar que objeto debe de ir ahí pero por medio de script, porque manualmente no me deja.

Ah ok ahora tiene más sentido. De lo que sé, un prefab como asset puede tomar referencias solo de assets, por ejemplo de otros prefabs. Si querés meter objetos de la escena (o componentes de estos) no te va a dejar. Al revés sí podés hacerlo, es decir que si el prefab está instanciado o metido en la escena (tecnicamente sigue siendo un prefab, ya no un asset (?)) podés asignar cualquier tipo de referencia, de escena o cargarla desde assets.

No se si podés imponerle a Unity que asigne cualquier tipo de objeto en cualquier lado. En principio no tendría sentido, ya que los prefabs (assets) van a ser compartidos durante todo el juego, si uno de ellos pierde la referencia de uno de sus objetos (por ej porque la escena cambió) sería catastrófico.

4 hours ago, Jhonatan00_00 said:

El problema es que arrastro un objeto al hueco y no se añade el objeto

El tema es que podés tener prefabs en escena, o prefabs en el proyecto, por eso no me queda en claro bien de donde a donde querés hacer lo que querés hacer. Asumo que querés asignar de escena a asset.

 

Saludos.

Edited by lightbug
  • Like 1

Share this post


Link to post
Share on other sites

Buenas tardes, al final lo he tenido que solucionar metiendo el Prefab en la escena, porque si no resultaba imposible poder arrastrar un objeto al public Transform... Pensaba que Unity tendría algún comando para programar esta tarea por medio de script y así no tener que meter el Prefab en la escena, pero al parecer es imposible (si alguien sabe como hacerlo por favor que lo diga).

El problema por el que no quería meter el Prefab en la escena es porque este Prefab tiene un Script que hace que se autodestruya tras un periodo de tiempo muy corto, por lo que he tenido que meter en la escena el Prefab pero desactivado y justo antes de instanciarlo, con GameObject.Setactive (true) lo activo, así puedo activarlo, instanciar y volver a desactivarlo para que no se elimine y poder seguir usándolo las veces que lo necesite, de otra forma hubiese sido imposible.

Un saludo.

Share this post


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

×
×
  • Create New...