Jump to content
infotronica

Coger objeto (para Android)

Recommended Posts

Hola buenas, he empezado a intentar crear un juego Android, y realmente no sé como hacer prácticamente nada. Cuando tenía que coger un objeto (por ejemplo una llave para Window) lo que hacía era que cuando apretara cierto botón(del teclado)  "llave.active=false" añadiendo arriba "var llave : GameObject;" en Js (la hacía desaparecer) pero el problema es que ahora con Android no sé como hacerlo, me gustaría o bien que al pulsar encima del objeto lo pueda recoger, o bien crear una botón que ya tengo creado (ya que, lo he estado intentando) para poder coger objetos. Principalmente me interesaría no poner botón, directamente si tengo que coger una llave cuando entre en el trigger pueda cogerlo tan solo apretando en él, pero la verdad no se me ocurre nada.

Gracias de antemano, un saludo.

Share this post


Link to post
Share on other sites

Bueno, no es un problema de Android como tal, es un problema que tienes tú por desconocimiento de programación con UI y en dispositivos móviles.

¿Qué tal si primero te miras los ejemplos y tutoriales que hay en la web oficial y en youtube, y así aprendes a usar lo que necesites? Es un consejo...

Share this post


Link to post
Share on other sites
hace 1 hora, pioj said:

Bueno, no es un problema de Android como tal, es un problema que tienes tú por desconocimiento de programación con UI y en dispositivos móviles.

¿Qué tal si primero te miras los ejemplos y tutoriales que hay en la web oficial y en youtube, y así aprendes a usar lo que necesites? Es un consejo...

Buenas pioj, en ningún momento he dicho que sea un problema de Android jaja, he estado mirando muchos tutoriales sobre Unity pero para usar Android apenas he encontrado, para hacer cosas con Unity para Window he encontrado casi siempre lo que he buscado pero para Android veo menos material.

Lógicamente abrir un tema es lo último que hago, ni que decir tiene que lo primero que siempre intento es resolverlo por mi cuenta.

 

Share this post


Link to post
Share on other sites

Lo que te falta aprender es como manejar las inputs del dispositivo. Yo soy muy nuevo en el tema, pero de seguro hay muchisimo material en las referencias de Unity o en el manual:

Especifico de Android:

https://docs.unity3d.com/es/current/Manual/android-GettingStarted.html

Entradas en moviles:

https://docs.unity3d.com/Manual/MobileInput.html

en eeste ultimo habla de Touch, supongo que te interesa la position devuelta para verificar si tocas o no el gameObject en cuestión.

Saludos

Share this post


Link to post
Share on other sites
hace 1 minuto, lightbug said:

Lo que te falta aprender es como manejar las inputs del dispositivo. Yo soy muy nuevo en el tema, pero de seguro hay muchisimo material en las referencias de Unity o en el manual:

Especifico de Android:

https://docs.unity3d.com/es/current/Manual/android-GettingStarted.html

Entradas en moviles:

https://docs.unity3d.com/Manual/MobileInput.html

en eeste ultimo habla de Touch, supongo que te interesa la position devuelta para verificar si tocas o no el gameObject en cuestión.

Saludos

Gracias por tu aporte lightbug llevo mirando todo el día en esa misma página jaja pero no he conseguido sacarlo, pero se agradece la información :)

un saludo!

Share this post


Link to post
Share on other sites
On 15/3/2017 at 12:39, infotronica said:

Hola buenas, he empezado a intentar crear un juego Android, y realmente no sé como hacer prácticamente nada. Cuando tenía que coger un objeto (por ejemplo una llave para Window) lo que hacía era que cuando apretara cierto botón(del teclado)  "llave.active=false" añadiendo arriba "var llave : GameObject;" en Js (la hacía desaparecer) pero el problema es que ahora con Android no sé como hacerlo, me gustaría o bien que al pulsar encima del objeto lo pueda recoger, o bien crear una botón que ya tengo creado (ya que, lo he estado intentando) para poder coger objetos. Principalmente me interesaría no poner botón, directamente si tengo que coger una llave cuando entre en el trigger pueda cogerlo tan solo apretando en él, pero la verdad no se me ocurre nada.

Gracias de antemano, un saludo.

bueno mira no yo no se hacerlo en Js por que nunca lo he hecho en js pero seria cuestion de que buscaras como hacer lo mismo que no suelen ser codigo muy distintos o directamente lo hagas en C#

public class nombreDeTuClase : MonoBehaviour {

	public GameObject Key; //para que agregues tu key desde el editor

    void Start () {
		
	}

 
    void Update () {
      
        // creamos un rayo que va desde la cámara hacia el punto de la pantalla donde está el mouse.
        Ray ray = GetComponent<Camera>().ScreenPointToRay(new Vector3(Input.mousePosition.x, Input.mousePosition.y, ));
		//comprobamos si el player ha hecho click
		if (Input.GetMouseButtonDown()) { //si el player ha hecho click
			RaycastHit hit; //llamamos al rayo casteado 'hit'.
			if (Physics.Raycast(ray, out hit, Mathf.Infinity)) {
				
				if(hit.transform == Key.transform)//si la posición (nodo transform) del rayo coincide con la del collider de nuestro objeto
				{
                   //lo que quieres que le pase a tu Key iria aca
				}
			}
		}
		
}

 

ahí comente casi todo el código, si es hacer que directamente de en la pantalla

Share this post


Link to post
Share on other sites
On 17/3/2017 at 18:38, moyinzunza said:

bueno mira no yo no se hacerlo en Js por que nunca lo he hecho en js pero seria cuestion de que buscaras como hacer lo mismo que no suelen ser codigo muy distintos o directamente lo hagas en C#


public class nombreDeTuClase : MonoBehaviour {

	public GameObject Key; //para que agregues tu key desde el editor

    void Start () {
		
	}

 
    void Update () {
      
        // creamos un rayo que va desde la cámara hacia el punto de la pantalla donde está el mouse.
        Ray ray = GetComponent<Camera>().ScreenPointToRay(new Vector3(Input.mousePosition.x, Input.mousePosition.y, ));
		//comprobamos si el player ha hecho click
		if (Input.GetMouseButtonDown()) { //si el player ha hecho click
			RaycastHit hit; //llamamos al rayo casteado 'hit'.
			if (Physics.Raycast(ray, out hit, Mathf.Infinity)) {
				
				if(hit.transform == Key.transform)//si la posición (nodo transform) del rayo coincide con la del collider de nuestro objeto
				{
                   //lo que quieres que le pase a tu Key iria aca
				}
			}
		}
		
}

 

ahí comente casi todo el código, si es hacer que directamente de en la pantalla

Muchas gracias por tu aporte, lo único que te comento es que yo digamos que tengo un botón: 

#pragma strict
var llave:GameObject; //para la llave
var boton: GameObject; //Esta creado como un Button no se si es GameObject
private var playerNextTocube = false;


function Start () {
    
}

function Update () 
{

    if( Input.GetMouseButtonUp())&& playerNextTocube == true) //TouchPhase.Began he leido que es cuando apretas la pantalla
    {
            DesaparecerCubo();
        
    }
}
    

function OnTriggerEnter (theCollider : Collider)
{
    
    if (theCollider.tag == "Player")
    {
        playerNextTocube = true;
    
        }
    }


function OnTriggerExit (theCollider : Collider)
{
    if (theCollider.tag == "Player")
    {
        playerNextTocube = false;
            
    }
}

function DesaparecerCubo()
{

    llave.active=false;    

}

Arriba a la izquierda(por ejemplo) tengo un botón y lo único que quiero saber es como decirle que cuando ese botón sea pulsado haga cierta cosa.. no sé si hay alguna función que detecte cuando un botón es pulsado, porque con eso me bastaría, gracias!

Edited by pioj
Por favor, usa el <> para pegar el código. El código sin formatear es peligroso para la web

Share this post


Link to post
Share on other sites
hace 40 minutos, infotronica said:

Muchas gracias por tu aporte, lo único que te comento es que yo digamos que tengo un botón: 

#pragma strict
var llave:GameObject; //para la llave
var boton: GameObject; //Esta creado como un Button no se si es GameObject
private var playerNextTocube = false;


function Start () {
    
}

function Update () 
{

    if( Input.GetMouseButtonUp(0))&& playerNextTocube == true) //TouchPhase.Began he leido que es cuando apretas la pantalla
    {
            DesaparecerCubo();
        
    }
}
    

function OnTriggerEnter (theCollider : Collider)
{
    
    if (theCollider.tag == "Player")
    {
        playerNextTocube = true;
    
        }
    }


function OnTriggerExit (theCollider : Collider)
{
    if (theCollider.tag == "Player")
    {
        playerNextTocube = false;
            
    }
}

function DesaparecerCubo()
{

    llave.active=false;    

}

Arriba a la izquierda(por ejemplo) tengo un botón y lo único que quiero saber es como decirle que cuando ese botón sea pulsado haga cierta cosa.. no sé si hay alguna función que detecte cuando un botón es pulsado, porque con eso me bastaría, gracias!

Si tu boton es un gameobject tendras que hacerlo como te dije arriba sea la key o un boton el detectar que estas dando click en el se hace igual si es un gameobject 

 

si es parte de la ui en el editor entonces tienes onclick en los botones mira te muestro de algo que estoy haciendo yo como esta con los de UISin título.png

Share this post


Link to post
Share on other sites
On 17/3/2017 at 19:30, moyinzunza said:

Si tu boton es un gameobject tendras que hacerlo como te dije arriba sea la key o un boton el detectar que estas dando click en el se hace igual si es un gameobject 

 

si es parte de la ui en el editor entonces tienes onclick en los botones mira te muestro de algo que estoy haciendo yo como esta con los de UISin título.png

Aaah vale muchas gracias, pero una duda, ahí le estás dando la orden de que cuando pulses el botón, pero lo que le añades es una script, si yo por ejemplo creo una script muy básica que sea:

Cita

 

#pragma strict
var llave:GameObject;
function Start () {
    
}

function Update () {
    Destroy(llave);
}

 


Sigo teniendo que arrastrar un GameObject en el editor, haciendo esto la llave desaparece cada vez que le doy al play, además donde a ti te pone UiController.GoogleLogin, a mi solo me deja poner Monoscript.

¿Cómo le puedo decir que cuándo pulse (On click) destruya dicha llave?

¿Se puede llamar a un objeto en una script sin necesidad de tener que arrastrarlo al editor? Es decir, sin tener que crear una variable, directamente llamarlo por el nombre que tú le hayas puesto..

Un saludo!

Edited by pioj
Por favor, usa el <> para pegar el código. Ya es la 3ª vez en este post que te lo tengo que hacer...

Share this post


Link to post
Share on other sites
hace 5 horas, infotronica said:

Aaah vale muchas gracias, pero una duda, ahí le estás dando la orden de que cuando pulses el botón, pero lo que le añades es una script, si yo por ejemplo creo una script muy básica que sea:

#pragma strict
var llave:GameObject;
function Start () {
    
}

function Update () {
    Destroy(llave);
}
Sigo teniendo que arrastrar un GameObject en el editor, haciendo esto la llave desaparece cada vez que le doy al play, además donde a ti te pone UiController.GoogleLogin, a mi solo me deja poner Monoscript.

¿Cómo le puedo decir que cuándo pulse (On click) destruya dicha llave?

¿Se puede llamar a un objeto en una script sin necesidad de tener que arrastrarlo al editor? Es decir, sin tener que crear una variable, directamente llamarlo por el nombre que tú le hayas puesto..

Un saludo!

ah debes crear un gameobject ponerlo en tu escena y a ese gameobject asignarle tu script luego si miras mi imagen justo debajo de donde dice Runtime C# ahi agregas tu gameobject que tiene tu script y ya puedes llamar todos los metodos que esten dentro del script

Share this post


Link to post
Share on other sites
hace 8 horas, moyinzunza said:

ah debes crear un gameobject ponerlo en tu escena y a ese gameobject asignarle tu script luego si miras mi imagen justo debajo de donde dice Runtime C# ahi agregas tu gameobject que tiene tu script y ya puedes llamar todos los metodos que esten dentro del script

Digamos que yo he creado un gameobject llamado "llave" y a este le he asignado la script siguiente: 

#pragma strict
var llave:GameObject;
function Start () {
    
}

function Update () {
    Destroy(llave);
}

Ahora me voy al gameobject "llave" y en el inspector voy a la script arrastro la misma "llave"(como GameObject) a la script (variable que he definido en la script anterior), ahora me voy a mi botón y  en el inspector donde pone OnClick() arrastro el gameobject "llave". Poniendo esto directamente cuando le doy al play mi llave me desaparece nada más comenzar, un saludo.

Share this post


Link to post
Share on other sites
1 hour ago, infotronica said:

Digamos que yo he creado un gameobject llamado "llave" y a este le he asignado la script siguiente: 

#pragma strict
var llave:GameObject;
function Start () {
    
}

function Update () {
    Destroy(llave);
}

Ahora me voy al gameobject "llave" y en el inspector voy a la script arrastro la misma "llave"(como GameObject) a la script (variable que he definido en la script anterior), ahora me voy a mi botón y  en el inspector donde pone OnClick() arrastro el gameobject "llave". Poniendo esto directamente cuando le doy al play mi llave me desaparece nada más comenzar, un saludo.

Es porque destroy(llave) se ejecuta a cada rato, ya que en el GO llave el script esta adjunto.

Share this post


Link to post
Share on other sites
hace 4 minutos, ytinU said:

Es porque destroy(llave) se ejecuta a cada rato, ya que en el GO llave el script esta adjunto.

Pero usando "llave.active=false;" 

También me empieza con la llave desactivada, sabes algo para poner que no aparezca desactivado y que al pulsar desaparezca ? Me está siendo más complicado de lo que me esperaba. 

Share this post


Link to post
Share on other sites
hace 1 minuto, infotronica said:

Pero usando "llave.active=false;" 

Si le pasas directamente el GO no importa si esta desactivado.

hace 3 minutos, infotronica said:

sabes algo para poner que no aparezca desactivado y que al pulsar desaparezca ?

Lo que quieres hacer no es mediante UI(aunque se puede), según dijiste quieres que la llave desaparesca al tocarlo, para eso que es un GO utiliza los raycast de moyinzunza, pero si lo quieres hacer mediante UI bastaria con OnClick.

hace 6 minutos, infotronica said:

Me está siendo más complicado de lo que me esperaba. 

Siempre me motivo con "Para ser bueno en algo, debes ser malo al principio" luego me da un bajon y pido ayuda aquí xD.

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...