Raycasting & Disparo - Tutorial Unity3d

Поделиться
HTML-код
  • Опубликовано: 11 фев 2025
  • En este tutorial aprenderas como usar el raycasting y hacer un pequeño sistema de disparo en unity3d
    ····················································································
    ♥ Suscribete: www.youtube.co....
    ● Twitter: / pepegamedevelop
    ········································­­·······································­·­····
    ►Todo el contenido de este canal es gratuito, avogo por una educación gratis y sin fronteras, puesto que el conocimiento no debe debe de ser ni es de nadie
    ········································­­·······································­·­····
    Pc Specs:
    ········································­­·······································­·­····
    ● Procesador: AMD r5 1600
    ● Gpu: Rx 470
    ● Mobo: msi pro carbon b350
    ● Refrigeracion: Corsair H100v2
    ● Caja: nzxt s340 elite

Комментарии • 81

  • @pepitogrillo247
    @pepitogrillo247 5 лет назад +5

    Muy buen vídeo, de los pocos que lo explican bien
    Para que los bloques se muevan en el mismo sentido que la bala le golpea es así:
    hit.collider.GetComponent().AddForce(Camera.main.transform.forward * force);
    El hit.normal cogerá la perpendicular de la superficie del cubo, no de la bala.
    Creo que a todos nos gustaría que subieras más vídeos, no hay muchos con esta calidad

    • @GameDevLibrary
      @GameDevLibrary  5 лет назад

      Estoy preparando una serie de hacer un fps, bien echo no como algunos tutoriales que he visto por ahí pero no quiero subir ningún episodio hasta tener la serie entera terminada

    • @pepitogrillo247
      @pepitogrillo247 5 лет назад

      @@GameDevLibrary Aquí la estaremos esperando ansioso ;)

  • @activoysaludable
    @activoysaludable 7 лет назад +5

    De verdad eres el puto amo. Llevaba mucho buscando un vídeo así pero no entendía nada porque los videos estaban en ruso y en inglés. Pero con este vídeo ufff like, suscrito y la campanita. De veras te aprecio mucho por tu y esfuerzo y dedicación. Bueno no tengo como agradecerte así que te dejare mi suscrision permanente. Gracias por el valioso material mi amigo.😄😃

  • @GabrielTroncoso115
    @GabrielTroncoso115 6 лет назад +1

    Al fin un buen video que explica claro algo tan esencial como el Raycasting

  • @emiibenitez5690
    @emiibenitez5690 6 лет назад

    EL PUTO AMO !!!
    Llevo una semana tratando de entender lo q explicas en un solo vídeo CRACK !!!

  • @LINK1V4N
    @LINK1V4N 5 лет назад +2

    Al fin un video explicando claro y conciso el raycasting en si y no sobre como aplicarlo a casos especificos en videos de 20 minutos xD gracias.

  • @camilius1390
    @camilius1390 4 года назад +1

    No se si todavía sigas leyendo comentarios de este video pero men muchas gracias me sirvió mucho era justo lo que buscaba :3

  • @andresocete6599
    @andresocete6599 4 года назад

    Te amo negro, te amooo es buenardo tu tutorial

  • @anunnakimusicaretro
    @anunnakimusicaretro 4 года назад

    Muchas gracias por el video me dejo claro el camino para aprender mas...ya me suscribi y di el like

  • @kerodelta
    @kerodelta 6 лет назад +15

    Buen video!
    El único que veo decente... XD

    • @GameDevLibrary
      @GameDevLibrary  6 лет назад

      JAJAJAJJA el resto del canal estan un poco mal echos xDDD

  • @richardkimberly3511
    @richardkimberly3511 6 лет назад

    Super bien explicado, corto y conciso. Suscrito

    • @GameDevLibrary
      @GameDevLibrary  6 лет назад +1

      Gracias ;) si me pudieras. Decir que tutoriales te gustaría que subiera te lo agradecería :)

  • @CarlosAlberto-px8so
    @CarlosAlberto-px8so 4 года назад

    Una consulta, voy a ir variando la posicion de un objeto con un punto de referencia, y vere si hay ray casting, en funcion si hay o no obstaculo.Dichos resultados como hago para que se almacenen en un bloc note o excel?? todo consejo sera bienvenido

  • @tomyce9472
    @tomyce9472 4 года назад +1

    Hola GameDev!
    Tengo una consulta:
    Si quiero q una vez q disparo,haya tantos segundos de tardanza hasta el siguiente disparo,como lo hago?

    • @GameDevLibrary
      @GameDevLibrary  4 года назад +1

      Hola amigo! Busca información sobre las corrutinas de unity, y también sobre el módulo Time de unity ;)

  • @TheLuchoss10
    @TheLuchoss10 6 лет назад +2

    Que video tan bueno.

  • @alvarojreugenio9212
    @alvarojreugenio9212 4 года назад

    alto capo makina

  • @alvarojreugenio9212
    @alvarojreugenio9212 4 года назад

    bien fachero

  • @abdielnunez8342
    @abdielnunez8342 4 года назад

    ayuda me sale esto NullReferenceException: Object reference not set to an instance of an object
    rayitocontrol.OnDrawGizmos () (at Assets/scrips/rayitocontrol.cs:37)
    UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

  • @pablolivera235
    @pablolivera235 4 года назад

    Buen video, seguí todos los pasos y puse todos los codigos, pero la "bala" en vez de ir en la dirección del objeto a impactar, va en la dirección de la camara, no se si me explico, sabrías por casualidad alguna manera de solicionarlo??
    Gracias

  • @dan.7.vk7
    @dan.7.vk7 2 года назад

    9:50 pongan F en el chat

  • @fonsekoo4504
    @fonsekoo4504 4 года назад +1

    La Cuarentena Me Tiene Haciendo Juegos Y Es Divertido Ya Llevo Una Semana Y Me Gusta, Mi Pregunta Es ¿ Solo Se Puede Añadir Ese Codigo A Esa Mano Con Arma O Se La Puedo Añadir A Lo Que Sea, Yo Se Lo Añadi A Mi Capsule Y Solo Se Detecta Que Pulso El Boton Izquierdo Del Mouse Y Tambien El Rayo Rojo Mas No Pasa Nada Con El Objeto Con RigiBody... Espero Me Contestes Despues Ya Que El Ultimo Comentario Fue Hace 1 Año... Saludos De Colombia

    • @GameDevLibrary
      @GameDevLibrary  4 года назад +1

      Se puede añadir a cualquiera, es raycasting una herramienta general de unity :)

    • @fonsekoo4504
      @fonsekoo4504 4 года назад

      @@GameDevLibrary Hey Bro Perdon Por La Molestia Pero La Solucion De Mi Problema Era Quitarle El Collider Alas Gafitas Que Tenia Mi Capsula, La Gafita Es Un Cubito Con La Escala Cambiada Jjajaja Creo Que Soy El Unico Que Le Pasan Esas Cosas...

    • @GameDevLibrary
      @GameDevLibrary  4 года назад +1

      @@fonsekoo4504 perfectoo, tienes que tener cuidado, siempre puedes usar layer masks para evitar que el rayo colisione con ciertos objetos ;)

    • @fonsekoo4504
      @fonsekoo4504 4 года назад

      @@GameDevLibrary Me Gusto Bastante Este Video Gracias Broo Eres El Unico Que Me Ha Respuesto De Todos Esos Canales, Seria Excelente Poner Algo Como SemiAuto Y FullAuto Ya Que Toca Presionar Para Cada Disparo... Gracias Broo :3

    • @GameDevLibrary
      @GameDevLibrary  4 года назад

      @@fonsekoo4504 eso es bastante facil de hacer, simplemente pon Input.GetMouseButton y le pones un contador de cadencia.

  • @jhonygamer1969
    @jhonygamer1969 2 года назад

    Hay un problema que no se solucionar. Cuando creas un raycast en Unity 3D y rotas el objeto lateralmente o frontalmente el rayo se mueve de su centro. No importa que pongas que inicie desde charactercontroller ().center, siempre que rote el personaje lateralmente o frontalmente el raycast se va a mover de su centro siguiendo los pies (me refiero a un raycast hacia el suelo), ¿sabes por qué se produce esto y como se puede corregir?.

    • @CHlNA
      @CHlNA 2 года назад

      Probaste con hacer un Empty GameObject y posicionarlo de donde quieras que salga el rayo, hacer este hijo del player y que en el código lo pongas como un GameObject para luego sacar de ahí mismo el orígen en el raycast? no sé si se entienda xD

  • @lyricaltrap6889
    @lyricaltrap6889 4 года назад

    Ai loviu llevava horas buscando un video y esos estaban en portugues. o solo decian el script abajo en la descripcion y no explicaban. ah da filho agora sim emtendo xD

  • @Eliannnn815
    @Eliannnn815 2 года назад

    bro cuando disparo me aparecen muchos cubos no se si esta mal pero te dejo mi codigo :
    {
    public float range = 10f;
    public float force = 4f;
    public GameObject effect;
    // Start is called before the first frame update
    void Start()
    {

    }
    // Update is called once per frame
    void Update()
    {
    if (Input.GetMouseButton(0))
    {
    RaycastHit hit;
    if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hit, range))
    {
    Debug.Log(hit.collider.name);
    GameObject _effect = Instantiate(effect, hit.point, Quaternion.identity);
    Destroy(_effect, 0.5f);
    if (hit.collider.GetComponent() != null)
    {
    hit.collider.GetComponent().AddForce(hit.normal * force);
    }
    }
    }

    }
    private void OnDrawGizmos()
    {
    Gizmos.color = Color.red;
    Gizmos.DrawRay(Camera.main.transform.position, Camera.main.transform.forward * range);
    }
    }
    PD : dime si algo esta mal

  • @raulmartinezcristobal3074
    @raulmartinezcristobal3074 4 года назад

    Hola, ¿Y el raycast detectaría una imagen, por ejemplo una diana?

    • @GameDevLibrary
      @GameDevLibrary  4 года назад

      El raycast detecta cualquier objeto que tenga un collider, si esa imagen contiene uno entonces si debería, alfinal todas las colisiones y hitbox en unity funcionan bajo el mismo principio

  • @elhijodelviento89
    @elhijodelviento89 4 года назад

    este scrip funciona para un juego en 3 persona?

  • @fenshu2834
    @fenshu2834 4 года назад

    me pegaste la gripe men :v
    PD: buen video.

  • @Anders2057
    @Anders2057 5 лет назад

    Gracias

  • @tebitosan9771
    @tebitosan9771 5 лет назад

    Lastima que hayas dejado de hacer videos, parece buen canal, ten paciencia y se te ira llenando de suscriptores, pero pon mas material! ;D

  • @seabluelight667
    @seabluelight667 4 года назад

    hola
    podrias ayudarme?
    veo que te manejas muy bien con raycast
    como puedo hacer un disparo mediante raycast pero que no sea infinitamente rapido,sino que se desplace a la velocidad de una bala real (300 m/s)?.
    estoy con un proyecto y me gustaria saber,como puedo variar la velocidad de la bala,disparada con raycast.
    gracias

    • @GameDevLibrary
      @GameDevLibrary  4 года назад

      la mejor manera de hacer una bala realista es usar un objeto bala y dispararlo, para ello te recomiendo que uses el patron de diseño object pooling, si de lo contrario buscas un sistema parecido al de csgo o call of duty puedes ver el proyecto de ejemplo shooter de unity, esta bastante bien comentado y cualquier puede entender lo que se hace

    • @seabluelight667
      @seabluelight667 4 года назад

      ​@@GameDevLibrary
      Es un proyecto de curso y estoy con la duda.
      Mira,yo prefiero ser sincero,y asi me soluciono problemas..
      yo tengo una deficiencia psicologica,si me explico...Necesito ver como se hacen las cosas para entenderlas,no me entero solamente leyendolas,necesito saber cual es la respuesta pero tambien saber el motivo..
      Es decir,saber cual seria la correcta pero entender el porque..
      y el tema esque solo puedo comentar dudas al profesor,1 vez a la semana...
      se me echa el tiempo encima :(.Porfavor ayuda
      1- utilizando eventos de colision en lugar de raycast,lanzando el objeto bala con un rigidbody a esa velocidad.
      2- lanzando un raycast de 300 metros de distancia.
      3- utilizando el metodo raycastall en lugar de raycast.
      4- lanzando un raycast de distancia 300* time.deltaTime y alfinal de su trayectoria repetirlo en el siguiente frame y asi sucesivamente.

    • @GameDevLibrary
      @GameDevLibrary  4 года назад

      @@seabluelight667 yo te diría que te decantaras por la primera opción, pero envez de hacerla instanciando y eliminando clases tipo bala, deberías hacerlo a través de un patrón de diseño llamado object pool. Cualquier duda me dices.

    • @seabluelight667
      @seabluelight667 4 года назад

      @@GameDevLibrary gracias compañero.
      el tema es que tenia que elegir entre esas 4 opciones,porque encima el capullo del profe lo ha hecho tipo test..solamente 1 respuesta es valida.
      siendo una pregunta tipo test,imagino que ira con ´´trampa´´ por eso queria preguntarte,tu manejas mejor que yo el tema

    • @seabluelight667
      @seabluelight667 4 года назад

      @@GameDevLibrary el tema es que de las 4 respuestas,solo 1 es la verdadera.
      y por mucho que lo leo bfff no me entero

  • @CarlosAlberto-px8so
    @CarlosAlberto-px8so 5 лет назад

    Como harías
    para detener el disparo si hubiese un obstáculo?

    • @GameDevLibrary
      @GameDevLibrary  4 года назад

      A que te refieres?

    • @CarlosAlberto-px8so
      @CarlosAlberto-px8so 4 года назад

      Es decir disparas; pero si pasa algun obstaculo deja de disparar o que el rayo llegue hasta el obstaculo .

    • @GameDevLibrary
      @GameDevLibrary  4 года назад

      Una vez que el rayo se topa un colider no sigue se frena ahí, si quisieras que lo atravesara puedes usar el sistema de layers de unity

  • @Anders2057
    @Anders2057 6 лет назад

    Gracias amigo

  • @sos541
    @sos541 6 лет назад

    me gustaría saber como hago para aparezca muchos prefabs mientras presiono el botón izquierdo del mouse. porque aparece un prefab por cada click.

    • @GameDevLibrary
      @GameDevLibrary  6 лет назад +1

      vale! mira es muy facil prueba usando envez de Input.GetMouseButtonDown , Input.GetMouseButton, asi aparecera mientras mantienes el boton izquierdo!

  • @lsmm7268
    @lsmm7268 4 года назад

    Gracias :D

  • @elgrego3849
    @elgrego3849 4 года назад

    Tambien sirve para disparar en realidad aumentada?

    • @GameDevLibrary
      @GameDevLibrary  4 года назад +1

      No lo he intentado nunca, pero estoy casi seguro que si.

  • @sleter2929
    @sleter2929 5 лет назад

    gracias craaaack

  • @JUANZ503
    @JUANZ503 6 лет назад

    Porque el cubo de se genera a veces se lanza a otras partes, me dijeron que podria se que el rayo podria estar pegando en el objeto instanciado

    • @GameDevLibrary
      @GameDevLibrary  6 лет назад

      No sé exactamente a qué te refieres amigo 🤔

    • @JUANZ503
      @JUANZ503 6 лет назад

      @@GameDevLibrary el cubo que estoy instanciando no se va al punto del hit.point, sino que varia la posicion del eje Y y Z

    • @JUANZ503
      @JUANZ503 6 лет назад

      @@GameDevLibrary el script del raycast no se lo puse a la camara sino a un gameobject, pero el rayo funciona bien, lo unico es que el objeto instanciado esta enviando mal las coodenadas

    • @GameDevLibrary
      @GameDevLibrary  6 лет назад

      @@JUANZ503 manda el código amigo 😂

  • @m4gmar
    @m4gmar 5 лет назад

    Bro, explicas muy bien, enserio gracias

  • @ColdHeadSkillet
    @ColdHeadSkillet 4 года назад

    Excelente video, pero alguien sabe como añadir una trayectoria de la bala usando el raycast?

    • @GameDevLibrary
      @GameDevLibrary  4 года назад

      Buenas, con el raycasting eso es imposible, deberías probar soluciones como instancias un prefab dr una bala y añadirle una fuerza. Con ello consigues un disparo más realista pero consume más recursos y no es tan preciso.

  • @LefdecIsHere
    @LefdecIsHere 4 года назад +1

    El vídeo esta muy bien hecho, pero creo que deberías explicar cada cosa que haces y porque lo haces, por ejemplo cuando pones GetMouseButtonDown, explicar porque pones ese y no otro, como GetMouseButtonUp u cualquier otro, creo que eso faltó en el vídeo, pero igual lo haces muy bien, y lo digo solo como crítica constructiva, no como hater. ¡Un saludo!

    • @GameDevLibrary
      @GameDevLibrary  4 года назад +1

      Buenas tengo un video dedicado a ese asunto de los inputs, pero tienes razón intentaré especificar mas ;)

  • @naomiyuuki1444
    @naomiyuuki1444 6 лет назад

    Me encanta la forma en la que explicas pero ando buscando disparos con balas o algo similar

    • @GameDevLibrary
      @GameDevLibrary  6 лет назад

      Hola amigo, y gracias! ;) ultimamente no tengo tiempo de subir mas tutoriales pero si tienes una duda pregunta por aqui.

    • @naomiyuuki1444
      @naomiyuuki1444 6 лет назад

      okidoki gracias.

  • @XamSav
    @XamSav 6 лет назад +1

    cuando la bala le da al objeto, el objeto se acerca a mi.. porque? xD

    • @GameDevLibrary
      @GameDevLibrary  6 лет назад

      XDXDXDXDX whaaaat manda el codigo q te has liao

    • @XamSav
      @XamSav 6 лет назад

      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      public class RayCastController : MonoBehaviour {
      public float range = 100f;
      public GameObject effect;
      public float Force = 100f ;
      // Use this for initialization
      void Start () {
      }
      // Update is called once per frame
      void Update () {
      if (Input.GetMouseButtonDown(0))
      {
      RaycastHit hit;
      if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hit, range))
      {
      Debug.Log(hit.collider.name);
      GameObject _effect = Instantiate(effect, hit.point, Quaternion.identity);
      Destroy(_effect, 0.5f);
      if (hit.collider.GetComponent() != null)
      {
      hit.collider.GetComponent().AddForce(hit.normal * Force);
      }
      }
      }
      }
      private void OnDrawGizmos()
      {
      Gizmos.color = Color.red;
      Gizmos.DrawRay(Camera.main.transform.position, Camera.main.transform.forward * range);
      }
      }

    • @GameDevLibrary
      @GameDevLibrary  6 лет назад

      prueba a poner la fuerza negativa! losiento por no haber podido responder antes!

    • @XamSav
      @XamSav 6 лет назад

      gracias! me a servido.
      Una pregunta, si quiero que "Cube" se destruya si a tocado 5 veces a "Bala", como lo hago?

    • @GameDevLibrary
      @GameDevLibrary  6 лет назад +5

      yo crearia otra script llamada vidacubo el cual tubiera una variable que sea la vidaobjeto, y una funcion de esta manera:
      public quitarvida(float vida){
      vidaobjeto -= vida;
      if(vidaobjeto

  • @ithanhunt3250
    @ithanhunt3250 4 года назад

    *AQUI EL SCRIPT* using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class DISPARORaycast : MonoBehaviour {
    public float range = 10f;
    public GameObject effect;
    public float fuerzaDisparo = 100;
    void Start () {

    }
    void Update () {
    if(Input.GetMouseButtonDown(0))
    {
    RaycastHit hit;
    if(Physics.Raycast(Camera.main.transform.position,Camera.main.transform.forward, out hit, range))
    {
    Debug.Log (hit.collider.name);
    //Instantiate (effect, hit.point, Quaternion.identity);//este igual funciona
    GameObject balazo = Instantiate (effect, hit.point, Quaternion.identity);
    Destroy (balazo, 5f);
    //APLICA LA FUERZA AQUI
    if(hit.collider.GetComponent() != null)
    {
    hit.collider.GetComponent ().AddForce (hit.normal * fuerzaDisparo);
    }//APLICA LA FUERZA AQUI HASTA AQUI
    }
    }
    }
    private void OnDrawGizmos()
    {
    Gizmos.color = Color.red;
    Gizmos.DrawRay (Camera.main.transform.position, Camera.main.transform.forward * range);
    }
    }

  • @frankastilla7637
    @frankastilla7637 4 года назад

    Separate un poco el micro porfa

  • @Brunales58
    @Brunales58 2 года назад

    lo unico malo del video es tu tragando mocos, muy molesto. El resto bien explicado.