Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 15,00€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales
Sign in to follow this  
mariumedina96

[AYUDA] Ayuda para programación en C#

Recommended Posts

Buenas estoy intentando programar un juego en el que al pasar por un determinado sitio, caiga una bola en plan tipo Indiana Jones, por un desfiladero en pendiente. Pues aquí ando liado porque estoy probando códigos y no consigo que me salga bien. Algún alma caritativa que entienda de C# me podría ayudar? :S

 

He puesto un collider transparente por el cual pase y caiga la bola, pero solo se hacer que caiga dandole a un botón del teclado y quiero que caiga solo con que colisione con el collider o pase por encima.

Edited by mariumedina96

Share this post


Link to post
Share on other sites
void OnCollisionEnter(Collision col)
{
	if(col.gameObject.tag == "TagCollider")
	{
		// Cae la roca
	}
}

Está hecho de memoria, pero más o menos es eso. Necesitar que el player tenga un rigidbody.

Hay muchas formas de hacerlo, otro modo sería con Raycast, de esta forma no necesitas rigidbody.

También con OnTriggerEnter, es muy parecido, solo que recibes un Collider en vez de un Collision, y el collider tiene que ser Trigger. En la documentación puedes encontrar más info.

Edited by OldGuy

Share this post


Link to post
Share on other sites
hace 5 minutos, OldGuy said:

void OnCollisionEnter(Collision col)
{
	if(col.gameObject.tag == "TagCollider")
	{
		// Cae la roca
	}
}

Está hecho de memoria, pero más o menos es eso. Necesitar que el player tenga un rigidbody.

Hay muchas formas de hacerlo, otro modo sería con Raycast, de esta forma no necesitas rigidbody.

También con OnTriggerEnter, es muy parecido, solo que recibes un Collider en vez de un Collision. En la documentación puedes encontrar más info.

Actualmente tengo esto:

public class DetectPlayer : MonoBehaviour {
    void awake () {

        Collider myCollider;
        myCollider = GetComponent<Collider> ();
        myCollider.isTrigger = true;
    }


    void OnTriggerEnter (Collider other)
    {
        Debug.Log("Cae la bola");
    }


}
 

 

Pero quiero que en vez de que aparezca el mensaje de Cae la bola, me ejecute este otro script que es el que hace que aparezca la bola:

public class PlayerSpawner : MonoBehaviour {

    public GameObject playerPrefab;
    void Update () {

        if (Input.GetKey(KeyCode.Space))
        {
            Instantiate (playerPrefab, transform.position, transform.rotation);

            Destroy(playerPrefab);
        }

    }
}

Share this post


Link to post
Share on other sites

Lo mismo que tienes en PlayerSpawner puedes ponerlo en el mismo script donde ejecutas el Ontriggerenter:

public GameObject playerPrefab;


void OnTriggerEnter (Collider other)
{
	Debug.Log("Cae la bola");
  	Instantiate (playerPrefab, transform.position, transform.rotation);

    Destroy(playerPrefab);
}

o acceder al otro script, lo puedes hacer mediante una variable pública, buscarlo o con SendMessage. Ejemplo de buscarlo:

// Si el script está en el mismo objeto:

GetComponent<PlayerSpawner>().NombreDeFuncion();

// O buscar el objeto:

GameObject.Find("NombreObjeto").GetComponent<PlayerSpawner>().NombreDeFuncion();

 

Share this post


Link to post
Share on other sites

Gracias me funciona bien metiendolo dentro del mismo Script, pero ahora me surge otra duda, si quiero por ejemplo coger unas monedas dentro del juego y pongamos que al coger 4 o 5 monedas aparezca la bola, tendría que meterle un if no?

Share this post


Link to post
Share on other sites

Sí, puedes comprobar cada vez que pases por el collider con un IF si has llegado al limite de monedas que deseas.

Un par de consejos, este es el foro de presentaciones, aquí tu duda será más difícil de ser encontrada y respondida. Y el título tampoco ayuda, es muy abierto, ayuda de programación pueden ser mil cosas, es mejor enfocarlo al problema, como por ejemplo, "Problema con los colliders", de está forma enfatizas mucho más, y es más fácil que alguien que sepa del tema te pueda ayudar.

Edited by OldGuy

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...