Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Pausa entre ataques...

Iniciado por ramunda, Julio 30, 2015, 07:31:04 PM

Tema anterior - Siguiente tema
Hola muy buenas,tengo este script a un enemigo eskeleto el cual funciona ...pero no muy bien, si me vee en un rango de 50 me persigue y me ataca, eso va bien pero la cosa esque me daña a 1000 revoluciones por segundo....me hace 30 de daño:character.ApplyDamage(30); pero a velocidad rayo!!!he intentado ponerle una pausa o relentizar el tiempo de el ataque con un yield wait for seconds, pero lo de la coorutina o como se llame no hay manera de colocarsela. el script es cortito:
using UnityEngine;
using System.Collections;
public class skellyattack : MonoBehaviour {
public GameObject player;
public GameObject skelly;
public float distance;
//private int damage =10;
public PlayerInfo character;
private float timer = 5f;
   
   // Use this for initialization
   void Start () {

}

   
   // Update is called once per frame
   void Update () {

      
   player = GameObject.FindWithTag("jugador");
   skelly = gameObject;
   distance = Vector3.Distance(player.transform.position,skelly.transform.position);
   if (distance <= 3) {
   skelly.GetComponent<Animation>().CrossFadeQueued("Run", 0.3f, QueueMode.PlayNow);
   skelly.GetComponent<Animation>().CrossFade("SwingHeavy");
         

      character.playerInCombat(true);
      character.ApplyDamage(30);
      }
      else if (distance < 45 && distance > 3.0f) {
      skelly.GetComponent<Animation>().CrossFadeQueued("SwingHeavy", 0.3f, QueueMode.PlayNow);
      skelly.GetComponent<Animation>().CrossFade("Run");
      skelly.transform.LookAt(player.transform.position);
      transform.position = Vector3.MoveTowards(transform.position, player.transform.position, 0.15f);
      //character.playerInCombat(true);
         
      }   
      else
      //GetComponent<FollowPath>().enabled = true;
      {
      skelly.GetComponent<Animation>().CrossFadeQueued("Run", 0.3f, QueueMode.PlayNow);
      skelly.GetComponent<Animation>().CrossFade("IdleHoldSword");
      //character.playerInCombat(true);
      }
   }
   
   
}
en la linea 26 es donde hace el ataque ...le puse el return yeld waitforseconds y me manda al carajo XDD Alguna idea por favor de donde o como poner la coorutina? Gracias!!!   


dos maneras amigo, las coroutines o intervalos de tiempos en el update,  aunque las coroutines son mas sencillas  si quieres un ejemplo con ambas me avisas saldios.

Hola gracias a los 2 por las respuestas , y si , por favor @ACarranza te lo agradeceria ya que no tengo ni idea de como hacerlo  
[quote author=GSG3D" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15859" data-ipsquote-contentcommentid="100975">Asihttp://docs.unity3d.com/es/current/Manual/Coroutines.html"> http://docs.unity3d.com/es/current/Manual/Coroutines.html date=1438278150]http://docs.unity3d.com/es/current/Manual/Coroutines.html[/quote]Madre de dios del saber hermoso....la de comas y puntos que hay aqui...alguna aunque sea muestra de como seria?, porque en el link que me has mandado habla de colores y cosas muyyy extrañas...Sea cual sea tu decision.Gracias.  

de buen rollo ramunda, si te pierdes con un "tutorial" de la pagina oficial de unity mejor aprender programacion general antes de querer programar un videojuego xd si para entender algo necesitas que te den justo lo que necesitas hacer, no se llama entender si no hacer copy-paste.segun comentaste, por un problema que tienes (que no es cuestion de recordar el problema) no puedes salir todo lo que te gustaria; pues porque no sacas una ventaja de eso y lo aprovechas para aprender programacion si te gusta este mundillo ? la de gente que quisiera aprender a programar y no puede porque no dispone del tiempo necesario ... si aprendieras programacion antes de meterte a unity, tendrias una nocion y te seria mas o menos sencillo entender los scripts y adaptar-modificar cualquier script a tus necesidades.si no siempre tambien esta la opcion de la seccion "Colaboraciones" en el foro para buscar a alguien que te haga los scripts a medida que tengan la funcion especifica que necesitas para tu proyecto


[quote author=Arthure" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15859" data-ipsquote-contentcommentid="100982">de buen rollo ramunda, si te pierdes con un "tutorial" de la pagina oficial de unity mejor aprender programacion general antes de querer programar un videojuego xd si para entender algo necesitas que te den justo lo que necesitas hacer, no se llama entender si no hacer copy-paste.segun comentaste, por un problema que tienes (que no es cuestion de recordar el problema) no puedes salir todo lo que te gustaria; pues porque no sacas una ventaja de eso y lo aprovechas para aprender programacion si te gusta este mundillo ? la de gente que quisiera aprender a programar y no puede porque no dispone del tiempo necesario ... si aprendieras programacion antes de meterte a unity, tendrias una nocion y te seria mas o menos sencillo entender los scripts y adaptar-modificar cualquier script a tus necesidades.si no siempre tambien esta la opcion de la seccion "Colaboraciones" en el foro para buscar a alguien que te haga los scripts a medida que tengan la funcion especifica que necesitas para tu proyecto[/quote]hey, compi , que mas quisiera yo que tener todo el dia para aprender mas...cada dia tengo sesiones de bueno unas cosas desagradables que me hacen para que mi cuerpo no me quede vejetal..pero eso es otro tema jejej, aunque no lo creas....aprendo de los copi pastes porque luego me los miro horas y horas y como se que estan bien..pues los aprendo mas rapido  No apliques pausas, en su lugar utiliza eventos de animacion: http://docs.unity3d.com/es/current/Manual/AnimationEventsOnImportedClips.html">http://docs.unity3d.com/es/current/Manual/AnimationEventsOnImportedClips.html al final de la animacion de ataque.[/quote]Gracias @Kaito de buen grado le echare un ojo a la cosa.Sabeis que la he liado.....ahora me doy cuenta de que,,,las animaciones, no son el problema!!!El problema es que me esta aplicando el daño frame a frame en esta intruccion!!
character.ApplyDamage(30);
Osea explico, que me esta machacando daño de 30 a 1000 revoluciones por segundo sea cual sea la animación , lo que necesito saber..entonces es como relentizar el daño que me aplica por segundo. Mi personaje tiene 100 de vida y tarda el eskeleto 1 segundo en matarme imaginaros lo rapido que me aplica el daño.Osea, un retardo de aplique de daño , algo que relentice esto: 
character.ApplyDamage(30);
Por favore :)

[quote author=ramunda" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15859" data-ipsquote-contentcommentid="100985 date=1438288835] Sabeis que la he liado.....ahora me doy cuenta de que,,,las animaciones, no son el problema!!!El problema es que me esta aplicando el daño frame a frame en esta intruccion!![/quote]Por eso te he dicho que apliques el daño al final de la animación con un evento de animación. Es decir, dentro de una función que es llamada mediante evento de animación compruebas que el player sigue cerca del enemigo y no ha cambiado de posición, y aplicas el daño, una sola vez y al final del ataque.
[quote author=ramunda" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15859" data-ipsquote-contentcommentid="100985 date=1438288835] Sabeis que la he liado.....ahora me doy cuenta de que,,,las animaciones, no son el problema!!!El problema es que me esta aplicando el daño frame a frame en esta intruccion!![/quote]Por eso te he dicho que apliques el daño al final de la animación con un evento de animación. Es decir, dentro de una función que es llamada mediante evento de animación compruebas que el player sigue cerca del enemigo y no ha cambiado de posición, y aplicas el daño, una sola vez y al final del ataque.

Julio 31, 2015, 06:19:12 PM #8 Ultima modificación: Julio 31, 2015, 06:20:33 PM por ramunda
[quote author=kaito" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15859" data-ipsquote-contentcommentid="100996">Por eso te he dicho que apliques el daño al final de la animación con un evento de animación. Es decir, dentro de una función que es llamada mediante evento de animación compruebas que el player sigue cerca del enemigo y no ha cambiado de posición, y aplicas el daño, una sola vez y al final del ataque.Por eso te he dicho que apliques el daño al final de la animación con un evento de animación. Es decir, dentro de una función que es llamada mediante evento de animación compruebas que el player sigue cerca del enemigo y no ha cambiado de posición, y aplicas el daño, una sola vez y al final del ataque.[/quote]Eso mismo XD :P

hombre ramunda veo que sigues por aqui!!
te recomiendo que cuando vayas a hacer algo nuevo para ti, como en este caso las corrutinas te hagas un proyectillo aparte y lo uses para probar cosas, yo es lo que hago, ademas intentar "encajar" algo ahi en medio de tu codigo sin entenderlo no creo que sea muy productivo!
 Las corrutinas yo las use por primera vez la semana pasada y no es tan complicado, me puse a buscar tutoriales y en una tarde ya lo habia entendio, a veces aprender por ti mismo algunas cosas te hará entenderlas con mas profundidad, a mi me pasa! y otras me explican mil veces algo y no lo entiendo xD. en fin es un consejo...

[quote author=o0Charly0o" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15859" data-ipsquote-contentcommentid="101062 date=1438482694]hombre ramunda veo que sigues por aqui!! te recomiendo que cuando vayas a hacer algo nuevo para ti, como en este caso las corrutinas te hagas un proyectillo aparte y lo uses para probar cosas, yo es lo que hago, ademas intentar "encajar" algo ahi en medio de tu codigo sin entenderlo no creo que sea muy productivo! Las corrutinas yo las use por primera vez la semana pasada y no es tan complicado, me puse a buscar tutoriales y en una tarde ya lo habia entendio, a veces aprender por ti mismo algunas cosas te hará entenderlas con mas profundidad, a mi me pasa! y otras me explican mil veces algo y no lo entiendo xD. en fin es un consejo...[/quote]Gracias por el consejo , es l que vengo aciendo , probando , mirando cagandola...  hahhaha. un abrazo 

pues hazte tutoriales de programacion, te lo digo por que andas perdido con cosas muy basicas, en tu postanterior, tu error era pasar un float a una funcion que recibia un int, ahora esto...xD a este paso te hara el juego entero el foro jijiji

[quote author=o0Charly0o" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15859" data-ipsquote-contentcommentid="101072">pues hazte tutoriales de programacion, te lo digo por que andas perdido con cosas muy basicas, en tu postanterior, tu error era pasar un float a una funcion que recibia un int, ahora esto...xD a este paso te hara el juego entero el foro jijiji[/quote]o0Charly0o, con todo el respeto a tu persona y a los demás miembros de este foro , aprecio de verdad el esfuerzo, tiempo y dedicación, que muchos de vosotros incluiendote a ti, estáis, haciendo aquí, de echo lo aprecio casi mas que nadie porque yo estoy haciendo lo mismo a diario en otro foro ,que no es de scripting eso esta claro , pero si de informática y otros temas que puedo y me encanta ayudar, a que voy, a que, te habrá costado sudores saber lo que sabes, y con la cabeza bien alta.Si te complace ayudar a quien lo pueda necesitar,y te sientes bien con ello, encantado, pero , si te molesta ayudarme, o ayudar a alguien que lo ncesite , nadie te apunta con una pistola para que lo agas...y lo entendería, pero vamos hombre todos hemos sido novatos en algo alguna vez.No pregunto hasta que no me sale de ninguna manera y así voy pillando despacio y con buen pie.Espero que estas palabras no se mal interpreten ya que no son sino una reflexion de uno de los novatos que aprendemos a andar.Sin mas recibe el mas afectuoso abrazo y un gran saludo de mi parte. Si no te vuelvo a ver por ninguno de mis seguramente jeje futuros post, ya te mandare algún saludo en algún otro que contestes.Y recuerda , que si tienes alguna duda relacionada con tu pc, software o hardware no dudes en mandarme un MP.Estare encantado de contestarte. :)

@ramunda no es que moleste ayudar a la gente que tiene alguna duda puntual, para eso esta el foro. pero las dos cosas que ha dicho son dos verdades bien grandes:a ) deberias hacerte como minimo tutoriales (y no sobre unity, si no sobre programacion general). no es normal querer programar un videojuego sin saber cosas basicas como los tipos de variables o el uso de los if. dedicate un tiempo a aprender como minimo lo basico, luego algo un poquito mas avanzado y cuando tengas una base ya tendras tiempo de querer hacer un videojuego. el tiempo que "gastes" en aprender programacion basica, sera bien invertido porque luego lo amortizaras.b ) es cierto que parece que quieras te lo den todo hecho, porque cuando te dan una orientacion o un codigo tambien preguntas "pero eso donde va". eso es algo que no te pasaria con una minima base de programacion.nadie tiene ningun problema en ayudar y todo el mundo se siente bien pero cuando ves que es una cosa tras otra sobre el mismo tema y que con una orientacion no hay sufuciente si no se da exactamente lo que pides para que haga lo que necesitas, no es que moleste pero aqui todos tienen sus propios proyectos y perder horas de tu propia ***a en alguien que no se molesta en aprender lo mas basico pues no tiene mucha logica.mi consejo ya te lo di, aprovecha que tienes tiempo para aprender a programar (no aprender unity) y luego ya aprenderas a hacer cosas exclusivas de unity. pero que minimo que demostrar un minimo de conocimiento o al menos que entiendes cuando te muestran un codigo o te dan una orientacion.

[quote author=Arthure" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15859" data-ipsquote-contentcommentid="101098 date=1438554998]@ramunda no es que moleste ayudar a la gente que tiene alguna duda puntual, para eso esta el foro. pero las dos cosas que ha dicho son dos verdades bien grandes:a ) deberias hacerte como minimo tutoriales (y no sobre unity, si no sobre programacion general). no es normal querer programar un videojuego sin saber cosas basicas como los tipos de variables o el uso de los if. dedicate un tiempo a aprender como minimo lo basico, luego algo un poquito mas avanzado y cuando tengas una base ya tendras tiempo de querer hacer un videojuego. el tiempo que "gastes" en aprender programacion basica, sera bien invertido porque luego lo amortizaras.b ) es cierto que parece que quieras te lo den todo hecho, porque cuando te dan una orientacion o un codigo tambien preguntas "pero eso donde va". eso es algo que no te pasaria con una minima base de programacion.nadie tiene ningun problema en ayudar y todo el mundo se siente bien pero cuando ves que es una cosa tras otra sobre el mismo tema y que con una orientacion no hay sufuciente si no se da exactamente lo que pides para que haga lo que necesitas, no es que moleste pero aqui todos tienen sus propios proyectos y perder horas de tu propia ***a en alguien que no se molesta en aprender lo mas basico pues no tiene mucha logica.mi consejo ya te lo di, aprovecha que tienes tiempo para aprender a programar (no aprender unity) y luego ya aprenderas a hacer cosas exclusivas de unity. pero que minimo que demostrar un minimo de conocimiento o al menos que entiendes cuando te muestran un codigo o te dan una orientacion.[/quote]Recibido.Tengo un post por ai que se titula doble disparo o algo asi que No pido que me agan nada! , el script ya lo he echo yo :(, solo quiero una opinión o si a alguien le ha pasado, si soys tan amables y queréis poner un comentario os lo agradeceré. Un saludo.P.D , lo he buscado lo he remirado, y no he allado  explicación alguna o situación similar y solo es una pregunta nada mas. 

Etiquetas: