Jump to content

Fabri15544

Registrados
  • Content Count

    31
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Fabri15544


  1. esto es a modo de ejemplo es decir que si hago un juego de naves tendría que dejar todo en modo statico la cámara, el entorno como con un efecto parallax.,Esto no aplica para una cámara en movimiento no?. Que método puedo usar para un efecto con la cámara en movimiento o deberia poner algunos transforms y al momento de que la cámara pase se active y genere una cantidad X de objetos esta forma seria recomendable en performance.

    Muchas gracias por poner un ejemplo, como nunca use una instancia en la cámara solo en lugares específicos nose como hacer ese efecto.


  2. el  bool ["EstaEnElAire"]  va en el Animator en la parte de parametros por las dudas te aviso., obvio que va en la animacion de salto nose como tenes compuesto las animaciones pero si tenes las animaciones en 3 estado que son EJ: fuerza de salto o impulso, salto, Aterrisaje., lo tenes que poner en salto.

    • Like 1

  3. busco gente con ganas de crear un juego, no importa de que temática sea lo podemos decidir una vez tengamos armado el grupo lo que me interesa es ganar experiencia  ya que seria mi primera vez en un grupo de desarrollo de videojuegos.   //por el momento no cuento con micrófono, pronto me comprare uno., entiendo muy bien cualquier cosa que me pidan siempre y cuando cumpla con los parámetros que les indique abajo.

    mis conocimientos son moderados <Animacion> /<Modelado><Script>/<AdaptacionDeScript>

    Animacion : conozco mas o menos el funcionamiento del IK Blender , unity

    Modelado : muy basico 

    Script : moderado algunas cosas se mas otras menos Actualmente estoy estudiando lo que es Animaciones con ragdoll physics y IK para un movimiento mas realista del personajes con las Fisicas

    AdaptacionDeScript : Pasar los datos de un script a otro Agregarle mas variables etc...


  4. public class move : MonoBehaviour
    {
        public bool canJump;
        public float velocidad = 120f;
        public float fuerza = 5000f;
       // public SpriteRenderer Spr;
       // public Animator anim;
        public Rigidbody2D rb;  // pon el rb de esta manera te va a ser mas facil. al igual que animator., public o private Animator anim; 
    
        void Start()
        {
    
        }
    
        void Update()
        {
    
            if (Input.GetKey("right"))
            {
                rb.AddForce(new Vector2(velocidad, 0f * Time.deltaTime));
                //anim.SetBool("moving", true);
                gameObject.GetComponent<Animator>().SetBool("moving", true);
                  //Spr.flipX = false;
                gameObject.GetComponent<SpriteRenderer>().flipX = false;
            }
    
    
    
            if (Input.GetKey("left")) //if si pulso x ...
            {
                rb.AddForce(new Vector2(-velocidad, 0f * Time.deltaTime));
                gameObject.GetComponent<Animator>().SetBool("moving", true);
                gameObject.GetComponent<SpriteRenderer>().flipX = true;
            }
            else //els de lo contrario x ...
            {
                rb.velocity = new Vector2(0, rb.velocity.y); // esto frena la velocidad cuando dejas de apretar la tecla;
            }
    
            if (!Input.GetKey("right") && !Input.GetKey("left"))
            {
                gameObject.GetComponent<Animator>().SetBool("moving", false);
            }
            else
            {
                rb.velocity = new Vector2(0, rb.velocity.y);
            }
    
            if (Input.GetKeyDown("z") && canJump)
            {
                gameObject.GetComponent<Rigidbody2D>().AddForce(new Vector2(0, fuerza));
                gameObject.GetComponent<AudioSource>().Play();
            }
    
        }
        private void OnCollisionEnter2D(Collision2D collision)
        {
            if (collision.transform.tag == "Ground")
            {
                canJump = true;
                gameObject.GetComponent<Animator>().SetBool("aire", false);
            }
    
        }
    
        private void OnCollisionExit2D(Collision2D descollision)
        {
            if (descollision.transform.tag == "Ground")
            {
                canJump = false;
                gameObject.GetComponent<Animator>().SetBool("aire", true);
            }
        }
    }

     

    Espero puedas terminar tu proyecto te deseo lo mejor 💪👍

    • Thanks 1

  5. por lo que leído hay muchas razones por la que puede salir ese error.

    1- unity no tiene los permisos necesarios  de ejecución para el UnityLinker.exe, la solución seria ejecutar unity como administrador.

    2- pude que sea un error en ASCII del nombramiento del juego como las escenas si coloco en algún momento ej : Exaple_1 eliminar el "_ " podría solucionarlo.

    3-  versión vieja del Net Framework actualice su versión eso debería corregirlo.

    4- Asegúrese de que el nivel de compatibilidad de Api está establecido en .net 4.x.

    hay muchas mas razones pero creo que estas son las mas probables.

     

     

    • Like 1

  6. aquí tienes un script básico para que lo entiendas, es fácil de entender espero te sirva y puedas aplicarlo a tu juego.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using System;
    
    public class Ejemplo: MonoBehaviour
    {
    
    //Pudes seguir agregando mas Animators todos los que necesites.
        public Animator anim1;
    
        public Animator anim2;
    
    
    
    //Esto es un ejemplo con colisiones modifícalo y pon lo que quieras que haga
    
        void OnTriggerEnter(Collider other)//esto se ejecuta si colisiona con el Tag Especificado.
        {
            if (other.CompareTag("Player"))
            {
                anim1.Play("AnimacionX1");// esto sirve para buscar la AnimacionX2 en el Animator == anim1
            }
        }
    
        void ParedCompare(Collider other) //esto se ejecuta si colisiona con el Tag Especificado.
        {
            if (other.CompareTag("Pared"))
            {
                anim2.Play("AnimacionX2"); // esto sirve para buscar la AnimacionX2 en el Animator == anim2 
            }
        }
    
    }

     


  7.  yo estaba por decir eso mismo puede que se detecten entre ellos es lo mas lógico almenos desde este punto de vista, ya que sin el código no podemos ayudarte de una manera mas técnica solo razonándolo.

    esto te pude ayudar como dice el compañero  ☝️

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Ejemplo : MonoBehaviour
    {
    
        public AudioSource SonidoAusar;
    
        // Use this for initialization
        void OnTriggerEnter(Collider other) //Detecta una colisionar y dispara un condicional.
        {
            if (other.gameObject.tag == "Player") //Nombre compare Tag del Jugador
            {
                SonidoAusar.Play();  //Sonido a utilizar después de colisionar.
            }
        }
    }

     


  8. acá tienes un ejemplo básico del funcionamiento espero te sirva, en el if le agregas lo que quieras que haga si es una tienda lo lógico es que el botón se hunda  y reste monedas, este ejemplo lo que hace es desactivar el gameObject pulsando el botón y activar cuando lo pulsas nuevamente. //soy novato pero leyendo un poco el manual que no se porque nadie lee eso mucho texto no xD.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class desactivarButton : MonoBehaviour
    {
    
        public GameObject ObjetoUsar;
        public bool ButtonOnOff = false; //se inicia en false porque hay una función de activado y desactiva;
    
    
        public void ButtonEnabledDisabled()
        {
            if (ButtonOnOff == false) //si ButtonOnOff  == false hace..........
            {
                Debug.Log("botonEnFuncionamiento");
                ButtonOnOff = true;
                ObjetoUsar.SetActive(false);
            }
    
            
            
            else //de lo contrario hace ..........
            {
                ButtonOnOff = false;
                ObjetoUsar.SetActive(true);
            }
    
        }
    
    }

     


  9. 
     

    tienes que buscar un poco antes de preguntar, probar si puedes hacerlo mínimo 2 días y sino preguntas, tu pregunta esta en el manual lee un poco.

    URL:  https://docs.unity3d.com/ScriptReference/Rigidbody-isKinematic.html

    Controla si la física afecta al cuerpo rígido.

    Si isKinematic está activado, las fuerzas, colisiones o articulaciones ya no afectarán al cuerpo rígido. El cuerpo rígido estará bajo control total de animación o control de script cambiando transform.position. Los cuerpos cinemáticos también afectan el movimiento de otros cuerpos rígidos a través de colisiones o articulaciones. Eg. puede conectar un cuerpo rígido cinemático a un cuerpo rígido normal con una articulación y el cuerpo rígido se restringirá con el movimiento del cuerpo cinemático. Los rigidbodies cinemáticos también son particularmente útiles para hacer personajes que normalmente son impulsados por una animación, pero en ciertos eventos se pueden convertir rápidamente en un ragdoll estableciendo isKinematic a false.

    
    using UnityEngine;
    using System.Collections;
    
    public class ExampleClass : MonoBehaviour
    {
        public Rigidbody rb;
    
        void Start()
        {
            rb = GetComponent<Rigidbody>();
        }
    
        // Let the rigidbody take control and detect collisions.
        void EnableRagdoll()
        {
            rb.isKinematic = false;
            rb.detectCollisions = true;
        }
    
        // Let animation control the rigidbody and ignore collisions.
        void DisableRagdoll()
        {
            rb.isKinematic = true;
            rb.detectCollisions = false;
        }
    }

    este es un ejemplo básico solo para la colisión y estado muerto del enemigo, si quieres chocar al enemigo y que las físicas interactúe con el enemigo muerto tienes que hacer un Ragdoll del enemigo para desactivar la animación del enemigo  y que cuando tenga 0 de vida se caiga y lo puedas mover cuando colisionas con el. 

        public void Ejemplo(float amount)
        {

            if (health < 5) //este valor depende de cuanto daño le haces al enemigo., lo que dice es si vida es menor a 5 pasa a estado de muerte.
            {
                muerte();
            }
        }


            void muerte()
            {

                 Destroy(GetComponent<NavMeshAgent>()); // aca se desactiva la inteligencia Artificial.
                 anim.enabled = false; //aca desactiva la animacion quedando solo el Ragdoll.

            }

     

    sino sabes que es un Ragdoll acá te dejo un link :"" https://www.youtube.com/watch?v=DInV-jHm9rk&t=1s¨

     

    • Like 2
    • Thanks 1

  10. claro lo que tu quieres hacer es contar los objetos que se generan en esa escena, No agarrar los objetos y contarlos igual podes usar  el Collider  lo puedes poner en el suelo con su respectivo TAG CompareTag  lo creas y quedaría., te lo digo porque yo estaba haciendo el contador y puse otro CompareTag con el nombre del suelo y me conto el objeto que tocaba el suelo, si tu objeto no toca el suelo pues nose. //sacale el Destroy  si solo es para contar cuantos elementos tienes en esa escena.


  11. para contar los objetos podes usar esto, espero te sirva saludos

     

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;

    public class Ejemplo: MonoBehaviour
    {
        public GameObject Objeto;
        public bool Mostrando;
        public int contador;
        public Text Cantidad;
        Rigidbody rb;
        // Start is called before the first frame update

        // Update is called once per frame
        public void OnTriggerEnter(Collider other)
        {
            if (other.CompareTag("NombreDelObjetoTag")) //objeto con el que colisiona
            {
                Destroy(other.gameObject); //se destruye el objeto
                contador = contador + 1; // cuenta como 1
                Cantidad.text = "" + contador; // va al contador
            }
        }

        public void Awake()
        {
            rb = GetComponent<Rigidbody>();
            contador = 0;
        }

    }


  12. este es el código que utilizo pero utiliza 2 teclas y yo quiero usar solo 1 como lo podría hacer si alguien seria tan amable de darme un ejemplo se lo agradecería.

            if (Input.GetKeyDown(KeyCode.Alpha3))
            {

                    Pistola.gameObject.SetActive(false);
            }

            if (Input.GetButton("1"))
            {
                Pistola.gameObject.SetActive(true);
            }


  13. algo así quiero hacer no lo probé todavía, esa seria la idea y después se cura la vida y comienza otra vez. lo tengo en otro script

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class prueba : MonoBehaviour
    {
    
        public bool ZZZZ = false;
        public float health = 100f;
        public float dormido = 10;
        public float tiempoNoMorir = 10;
        public float tiempo_frenado = 10;
    
        Animator anim;
    
        public void RestarVida(float cantidad)
        {
            if (!ZZZZ && health > 0)
            {
                health -= cantidad;
                StartCoroutine(TiempoEspera());
                StartCoroutine(VelocidadRestar());
                if (health <= 0)
                {
                    Tiempo();
    
                }
    
    
                void Tiempo()
                {
                    Debug.Log("ZZZZ");
                    anim.Play("Dormido");
                    IEnumerator TiempoMuerto()
                    {
                        var Velocidad = GetComponent<Target>().agent.acceleration;
                        GetComponent<Target>().agent.acceleration = 0;
                        yield return new WaitForSeconds(dormido);
                        GetComponent<Target>().agent.acceleration = Velocidad;
                    }
    
                }
            }
    
    
            IEnumerator TiempoEspera()
            {
                ZZZZ = true;
                yield return new WaitForSeconds(tiempoNoMorir);
                ZZZZ = false;
            }
    
            IEnumerator VelocidadRestar()
            {
                var velocidad0 = GetComponent<Target>().agent.acceleration;
                GetComponent<Target>().agent.acceleration = 0;
                yield return new WaitForSeconds(tiempo_frenado);
                GetComponent<Target>().agent.acceleration = velocidad0;
            }
    
        }
    
    }

     


  14. Hola lo que quiero decir con eso es que en la parte de la animación el NavMeshAgent  se quede quieto por 10 segundos y retome la animación de correr e probado con agent.enabled = false; pero claro se para por completo, tengo entendido que para hacer que esto funcione necesito declarar la entrada en if y else 

        void Die()
        {
            anim.Play("Dormido");
            agent.enabled = false;
            agent.acceleration = 0;
    
        }
    
        void Corre()
        {
    
    
            anim.Play("Run");
            agent.enabled = true;
    
    
        }

     

     

×
×
  • Create New...