Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ramunda

#346
Cita de: Samusan date=1434270954Puedes utilizar los eventos en animaciones como dice @juanma_teso. Si no tienes animaciones utiliza simplemente esto :
 
http://docs.unity3d.com/ScriptReference/AudioSource.PlayOneShot.html" rel="external nofollow">http://docs.unity3d.com/ScriptReference/AudioSource.PlayOneShot.html
 
El sistema de los GameObjects cuando tienes muchos puede ser un lio y no se hasta que punto es eficiente o no.
 
Además si no tienes que simular la bala te recomendaría que mirases los Raycast, son mas eficientes y dan menos errores. 
Samusan, muy interesante también y si te doy toda la razón del mundo en lo de los Raycasts, pero....lo he intentado varias veces y lo único que consigo es que dispare pero no he conseguido lo de recargar , tu entiendes de raycasts y eso podrías convertirme el script que tengo arriba en raycast?, te estaría muy agradecido!!!
#347
Cita de: DavidV date=1434244294Crea 3 Empty y añadele a cada uno un audio (Uno que contenga el de disparo, otro el recarga e.t.c) al añadirselo en el inspector donde dice Audio Source desactiva el "Play on Awake" 

public AudioSource Disparo;  
 public AudioSource Recargando;
 public AudioSource Sincarga;
if( precciono tecla de disparo)
Disparo.Play()
 
if(precciono tecla recargar)
Recargando.Play()
if (bala == 0)
Sincarga.Play()

En el inspector a cada variable añadele el Empty correspondiente. 
Que buena ideaaaaa si señor voy a probarlo ahora mismo y os cuento   ))) muchas gracias DavidV.Pero una cosa los empty los añado a que? al arma por ejemplo??
#348
Cita de: juanma_teso date=1434241228Si tienes animaciones, puedes poner eventos, así lo hice yo. Vete a la ventana anim y en el frame que creas que puede quedar bien el sonido creas un evento, se crea dándole a una pestañita cercana al contador de frames. Con el evento puedes disparar métodos, yo creé un script con diferentes sonidos y los reproducía mediante eventos (pasos, balas, herida).
Muchas gracias por responder Juanma_teso, lo estudiare aver que puedo hacer con animaciones y gracias por el detalle de los contadores de balas lo revisare.
#349
Hola muy buenas , tengo un quebradero de cabeza con este script, que funcionar funciona de maravilla, dispara , recarga, deja de disparar si no tiene balas....pero....me gustaria que cuando tiene balas y esta disparando reproduciera el sonido de metralleta por ej, que cuendo no tuviera balas(esperando el "R" de recarga que sonara a por ej cargador vacio, y al recargar un sonido de recarga osea cuando aprieto la R....
 
Seguro que es una tonteria pero me esta llevando de pura cabeza!! , un dato estoy con Unity5 lo digo porque es parte de mi problema que los Guetcomponet.Audio nose que han cambiado todo y me llevan loco.
 
Una ayudita por favor?, tengo la Var de recarga con uadiclip y la de gunshot...pero ....
 
aqui el script: "JS"

var Bala : Rigidbody;
var Velocidad = 20;
var municion : int = 60;
var municiontotal = 300;
var guimuni : GUIText;
var guitotal : GUIText;
var destello : GameObject;
var manoanim : GameObject;
var municionanim : GameObject;
var recarga : AudioClip;
var gunShot : AudioSource;
function Start(){
destello.active = false;
}
function Update(){
guimuni.text = municion.ToString();
guitotal.text = municiontotal.ToString();
 
if(Input.GetMouseButton(0)){

    if (municion > 0 && municiontotal >= 0){
     
        var clona = Instantiate(Bala, transform.position, transform.rotation);
   clona.velocity = transform.TransformDirection(Vector3(0, 0, Velocidad));
         municion -= 1;
         Destroy (clona.gameObject, 1);
}
}
if(Input.GetKeyDown("r") && municiontotal > 0){
    //manoanim.animation.play();
    //municionanim.animation.play();
    municion = 0;
    Invoke ("recargando",2);
    
}
if(Input.GetMouseButtonDown(0)){
destello.active = true;
}
else
if(Input.GetMouseButtonUp(0)){
destello.active = false;
}   
if (municion <= 0){
destello.active = false;

}
}
function recargando (){
if(municiontotal > 0){
   
municiontotal -= 100;
municion +=100;
}
if (municion >100){
municion = 100;
}
}
#350
General (Antiguo) / Compro script de inventario.
Junio 12, 2015, 09:49:47 AM
Buenos dias, no se si te ayudara de algo pero hace apenas 2 dias pusieron un INVENTARY bastante majo GRATIS en la asset store
 
Suerte!!!
#351
Cita de: ProgramacionWH date=1434016566Bolas/RayCast no cambia mucho simplemente cuando dispares cambia el Instantiate de la bola y lo referido por un Physics.Raycast correspondiente, aunque sea de 2010 no creo que tengas muchos problemas ya que es un codigo "bastante" general...
Se trata de que entiendas el concepto y lo sepas pasar a codigo, no de que copies y peges sin mas!
Un saludete!
 
Compañero estoy con los tutoriales de jocyf...mientras espero tu creacion...de momento todo son problemas ya que como te dije ha cambiado todo en unity 5 y todo peta por mucho que lo entienda hay syntaxis cambiadas las cuales desconoxco y que me llevan de cabeza...  , animate y dejame almenos el dichoso script que me dispare balas con ray..se gasten , tenga que recargar y cojer balas de por ai con eso me conformo almenos aprendere sobre el script que me agas actualizado y a partir de hay hasta que me lo sepa de memoria.Por favor.
 
Espero noticias gracias
#352
Cita de: ProgramacionWH date=1434016566Bolas/RayCast no cambia mucho simplemente cuando dispares cambia el Instantiate de la bola y lo referido por un Physics.Raycast correspondiente, aunque sea de 2010 no creo que tengas muchos problemas ya que es un codigo "bastante" general...
Se trata de que entiendas el concepto y lo sepas pasar a codigo, no de que copies y peges sin mas!
Un saludete!
 
por supuesto que si , asi aprendo pero te pido por favor que me agas el script tal i como me digistes asi aprendo aun mas!!!! , espero que no sea mucha molestia para ti
 
Espero impaciente )
#353
Cita de: ProgramacionWH date=1433950235Vale , creo que esto se te queda un poco grande, deberias empezar por cosas mas simples aun asi vamos a intentarlo:
 
Empezamos por el Reload:

//Variables , te lo pongo en español que es mas intuitivo
var MunicionTotal : int = 300;
var MunicionPorCargador : int = 50;
var MunicionActual : int = 50;
var TiempoRecargando : float = 2.0f;
var EstaRecargando : boolean = false;
//AQUI VAN OTRAS FUNCIONES BLA BLA BLA
function Reload(){
     var MunicionNecesarea = MunicionPorCargador-MunicionActual;
     EstaRecargando= true;
     if(MunicionActual == MunicionPorCargador) { //Cargador esta lleno asique salimos de la funcion
          return;
      }
      If(MunicionNecesarea > MunicionTotal){ //Necesitamos mas municion de la que tenemos, asique asignamos para darle el tope que podemos.
            MunicionNecesarea = MunicionTotal;
      }
      MunicionActual += MunicionNecesarea; //Metemos municion en el cargador.
      MunicionTotal -= MunicionNecesarea;    //La quitamos de la "bolsa".
     
      yield WaitForSeconds(TiempoRecargando); //Esperamos mientras recargamos, la funcion no continua hasta que pasa ese tiempo
      EstaRecargando = false; //Hemos acabado de recargar.
}

Hasta aqui lo entiendes?
 
De todas maneras creo que mejor que que te haga yo el script, deberias visitar el canal de @Jocyf, usuario de este foro , tiene una serie de videotutoriales acerca de hacer exactamente lo que estas pidiendo, muy bien explicado y creo que lo entenderas mucho mejor que si te lo escribo y ya esta:
 
" rel="external nofollow">Aqui su canal y el video
 
Estimado WH, estoy mas perdido que un pato sin estanque hahahhaha , siiiiiiiii por favor!!!, házmelo de nuevo , que se quede sin balas pida recargar y si no tiene cargadores que los busque por hay XDDD, seria muyyy veliz!!!!!!!! y si, voy a mirar el canal que me has dicho por supuesto pero asi si tu me lo fabricas debidamente lo mirare 100000 veces hasta que lo entienda y enciam te tomas la molestia de hacerlo en español...madre mia!!! si furas mujer te besaria   , a la espera de el milago ah por cierto antes de que te de mas quebraderos hahhaha asi como esta daña a los enemigos y mueren mira este es el script que esta funcionado y se mueren al darles la bala del raycast:

var Vida = 400;
var choke : Transform;
function ApplyDammage (Dammage : int)
{
Vida -= Dammage;

if(Vida <= 0)
{
   Muere();
}
}
function Muere()
{clone = Instantiate(choke, transform.position, transform.rotation);
Destroy(gameObject);
}   

Con el codigo que tengo ahora osea el que tu jentilmente arreglas se mueren sin problema Xd , espero que eso no cambie  juas me muerooo de ganas de ver que has echo!!!
 
Hasta ahora!!!
 
Por cierto empece a mirar los screencast que me comentaste y lo hace con bolas..no con raycast
#354
Cita de: ProgramacionWH date=1433939722Me extraña que sepas hacer eso y no sepas restar 1 bala por disparo pero bueno jajaja:

function Fire () {
    if(Input.GetButton("Fire1") && Time.time > nextFire) {
        nextFire = Time.time + fireRate;
        var hit : RaycastHit;
        var ray : Ray = Camera.main.ScreenPointToRay(Vector3(Screen.width*0.64, Screen.height*0.4, 0));
        if(Input.GetButton("Fire1")){ //NO ENTIENDO PORQUE HACES ESTA COMPROBACION OTRA VEZ,Creo que sobra
            if (Physics.Raycast (ray, hit, 100)){
                var particleClone = Instantiate(Effect, hit.point, Quaternion.LookRotation(hit.normal));
                Destroy(particleClone.gameObject, 1);
                hit.transform.SendMessage("ApplyDammage", TheDammage, SendMessageOptions.DontRequireReceiver);
            }
        }
        //AQUI YA SE HA EJECUTADO EL DISPARO POR LO TANTO:
        if(clipAmmo > 0) //Comprobamos que tiene municion.
            clipAmmo--; //Restas una bala...
       
        //No anides estos IF con un else porque modificas clipAmmo de por medio y te dara lugar a un bug
        if(clipAmmo <= 0){ //Has disparado y te has quedado sin balas, ahora te toca a ti decidir si recargas automaticamente o tiene que darse cuenta el jugador , un ejemplo:
              Reload();
        }
    }
}

Otra cosa, y siento meterme donde no me llaman pero me pica la curiosidad como haces el Raycast, probablemente sea por algun motivo "especial" que desconozco pero bueno por si no lo sabes otra forma mas simple y que te puede ayudar al hacer hacer el retroceso y tal es hacer el RayCast utilizando:

WeaponGameObject.transform.forward

 como direccion del RayCast.
 
Bueno un saludo!
 
ProgramacionWH, antes que nada decirte GRACIAS!!!, por responder a mi post y gracias por ser tan rapido!!!, estoy entusiasmado, respondiendo gratamente a tus 2 preguntas:
 
Me extraña que sepas hacer eso y no sepas restar 1 bala por disparo pero bueno jajaja: Facil porque este script lo he echo a trozos hahahhaa un poco de aqui un poco de alli y dentro lde lo lerdo que soy voy juntando y con logica uniendo y haciéndolo funcionar hasta que me rindo XDDDD, lo del raycast...ni idea!!! lo monte a chachos también y puse esas variables hasta que el disparo me salia acorde con el arma!!,  lo que me has añadido al scrip lo he puesto y borrado lo de abajo como me comentastes los if....pero la metralleta sigue disparando como una loca sin recargar ni naaa y sin quedarse sin balas o cargadores...me comentas que ponga el Reload....soy lerdo! no se como hacerlo  porfavor dame mas instrucciones!! , desearia que cuando se quedara sin balas o cargadores no disparara.....y si no es molestia y no te supone un gran trabajo(porque veo que sabes como 10000 veces mas que yo), que al cojer un ojbeto tip cargador se le añadieran balas...espero de verdad que leas esto y pueda conseguir mi metralleta recargable XD , muchas muchas gracias!!! , a se me olvidaba...donde deberia meter lo de el raycast que me has mencionado?
 
Saludotes!!! espero saber de tiiii
 
P.D :meterte donde no te llaman?, todo al contrario!!! encantado de que me lo digas y aprender de los que saben!! lo que sea dímelo por favor!!!
 
 
 
#355
Muy buenas espero que alguien sepa ayudarme en este dilema que llevo semanas y no puedo solucionar....
 
Tengo un scrip a mi metralleta que dispara balas con raycast hace agujeros todo perfecto , pero me gustaria que tuviera un numero de balas/cargadores y que cuando se acabaran dejara de disparar y pudiera coger mas de por el suelo etc.
 
Pues bien despues de 2 semanas rompiendome la cabeza y montdo el script...nada ni gasta balas y ni recarga ni me dice cuantas tengo nada de na
 
Por favor alguien me de luz a estooooo
 
Uso Unity 5
 
Aqui el script.(JS)

#pragma strict
var Effect : Transform;
var TheDammage = 100;
var fireRate : float = 0.5;
private var nextFire : float = 0.0;
private var reloading = false;
var reloadTime = 2.0;
private var st : int;
var clipAmmo = 50;
var clipSize = 50;
var stockAmmo = 100;
function Update () {
Fire ();
}
function Fire () {
if(Input.GetButton("Fire1") && Time.time > nextFire) {
nextFire =  Time.time + fireRate;
 
    var hit : RaycastHit;
    var ray : Ray = Camera.main.ScreenPointToRay(Vector3(Screen.width*0.64, Screen.height*0.4, 0));
        if(Input.GetButton("Fire1"))
         {
        if (Physics.Raycast (ray, hit, 100))
        {
            var particleClone = Instantiate(Effect, hit.point, Quaternion.LookRotation(hit.normal));
            Destroy(particleClone.gameObject, 1);
            hit.transform.SendMessage("ApplyDammage", TheDammage, SendMessageOptions.DontRequireReceiver);
        }
    }
 
}
}
if (Input.GetKeyDown ("space")){
  if(clipAmmo<clipSize && reloading == false && stockAmmo !=0){
   SaveTime(Time.time);
   reloading = true;
  }
}
if(st < Time.time && reloading == true){
  Reload();
}
//Making it show that you are reloading.
function OnGUI(){
if(reloading == true){
  GUI.Box(Rect(250,200,100,25),"Reloading");
}
}
function Reload(){
if(clipAmmo < clipSize){
  var neededAmmo = clipSize-clipAmmo;
  if(stockAmmo >neededAmmo){
   clipAmmo = clipSize;
   stockAmmo -= neededAmmo;
  }else if(stockAmmo <= neededAmmo){
   clipAmmo += stockAmmo;
   stockAmmo = 0;
  }
}
reloading = false;
}
function SaveTime(time){
st = reloadTime + Time.time;
 

Gracias y espero respuesta cuando se pueda.!!