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

#316
General (Antiguo) / Retrasar sonido...
Junio 30, 2015, 03:26:41 PM
Cita de: ramunda date=1435587886Hola muy buenas tengo un dilema, tengo un sonido que cuando le pegan a mi pelele grita, y si muere suena otro grito.
 
Eso lo hace, pero no suena como deberia suena como si estuviera a 1000 revoluciones por minuto osea super rapido o agudo por decir algo , se me ocurrio ponerle un length para determinarle el tiempo de durada de este audioclip..pero me hace caso omiso sigue rapido y no suena bien.
 
Alguna idea?
 
aqui el script:

using UnityEngine;
using System.Collections;
    public class PlayerInfo : MonoBehaviour {
public GameObject healthBottle;
public GameObject player;
public AudioClip deathClip;
public AudioClip deathClip2;
public float length;
int health = 100;
int damageCount = 0;
int currentHealth;
bool playerFighting;
public GUIText healthbar;
float timer = 0.0f;
float healthTimer = 0.0f;
bool healthShouldRespawn = false;
// Use this for initialization
void Start () {
currentHealth = health;
}

// Update is called once per frame
void Update () {
   Cursor.visible = false;
   print("player in combat? " + playerFighting);
   if(!playerFighting){
      print("player is not fighting");
      if(currentHealth != 100){
         timer += Time.deltaTime;
         print ("timer: " + timer);
         if(timer > 90.0f){
            currentHealth += 10;
            timer = 0.0f;
         }
      }
   }
   else
   {
      if(currentHealth <= 0){
         GetComponent<AudioSource>().PlayOneShot(deathClip);length = 0.8f;
         transform.position = new Vector3(Random.Range(50.0f, 120.0f), 0, Random.Range(10.0f, 200.0f));
         currentHealth = 100;
      }
   }
   healthbar.text = "Vida " + currentHealth + " / 100";
   if(healthShouldRespawn)
   {
      healthTimer += Time.deltaTime;
      if(healthTimer > 5.0f)
      {
         healthBottle.gameObject.SetActive(true);
         healthTimer = 0.0f;
      }
   }
}
public void ApplyDamage(int damage){
   damageCount = damageCount + damage;
   if(damageCount == 100){
      currentHealth = currentHealth - 30;
      GetComponent<AudioSource>().PlayOneShot(deathClip2);length = 0.5f;
      healthbar.text = "Health " + currentHealth + " / 100";
      damageCount = 0;
   }
   print(currentHealth);
}
public void playerInCombat(int combat){
   if(combat == 1){
      playerFighting = true;
   }
   else
   {
      playerFighting = false;
   }
}
void OnTriggerEnter(Collider item){
   if(item.gameObject.tag == "PlayerHealthBottle")
   {
      if(currentHealth < 100)
      {
         currentHealth = currentHealth + 50;
         item.gameObject.SetActive(false);
         healthShouldRespawn = true;
      }
   }
}
 
}

Esta es la parte de donde muere:

f(currentHealth <= 0){
         GetComponent<AudioSource>().PlayOneShot(deathClip);length = 0.8f;

y este fragmento es el que cuando le pegan grita:

if(damageCount == 100){
      currentHealth = currentHealth - 30;
      GetComponent<AudioSource>().PlayOneShot(deathClip2);length = 0.5f;
      healthbar.text = "Health " + currentHealth + " / 100";
      damageCount = 0;

Las dos partes constan de su length que esta arriba con su public float correspondiente....
Nadie me puede echar un cable?
#317
Hola , alguna idea de como detener un script que es de JS , detenerlo desde el codigo c#? de c# a c# no he tenido problemas pero al reves si...
 
Ejemplo del No funciona.
 
El nombre de el script de java que se esta ejecutando y quiero detener en un momento de deteccion de un enemigo es FollowPath
 
Aqui lo intento detener desde c#

else if (distance < 50 && distance > 3.0f) {
      GetComponent<FollowPath>().enabled = false; /// aqui lo intento parar...
      skelly1.GetComponent<Animation>().CrossFadeQueued("SwingHeavy", 0.3f, QueueMode.PlayNow);
      skelly1.GetComponent<Animation>().CrossFade("Run");
      skelly1.transform.LookAt(player.transform.position);
      transform.position = Vector3.MoveTowards(transform.position, player.transform.position, 0.30f);
      character.playerInCombat(1);

Agradecería una idea.
 
 
#318
General (Antiguo) / Retrasar sonido...
Junio 29, 2015, 04:24:46 PM
Hola muy buenas tengo un dilema, tengo un sonido que cuando le pegan a mi pelele grita, y si muere suena otro grito.
 
Eso lo hace, pero no suena como deberia suena como si estuviera a 1000 revoluciones por minuto osea super rapido o agudo por decir algo , se me ocurrio ponerle un length para determinarle el tiempo de durada de este audioclip..pero me hace caso omiso sigue rapido y no suena bien.
 
Alguna idea?
 
aqui el script:

using UnityEngine;
using System.Collections;
    public class PlayerInfo : MonoBehaviour {
public GameObject healthBottle;
public GameObject player;
public AudioClip deathClip;
public AudioClip deathClip2;
public float length;
int health = 100;
int damageCount = 0;
int currentHealth;
bool playerFighting;
public GUIText healthbar;
float timer = 0.0f;
float healthTimer = 0.0f;
bool healthShouldRespawn = false;
// Use this for initialization
void Start () {
currentHealth = health;
}

// Update is called once per frame
void Update () {
   Cursor.visible = false;
   print("player in combat? " + playerFighting);
   if(!playerFighting){
      print("player is not fighting");
      if(currentHealth != 100){
         timer += Time.deltaTime;
         print ("timer: " + timer);
         if(timer > 90.0f){
            currentHealth += 10;
            timer = 0.0f;
         }
      }
   }
   else
   {
      if(currentHealth <= 0){
         GetComponent<AudioSource>().PlayOneShot(deathClip);length = 0.8f;
         transform.position = new Vector3(Random.Range(50.0f, 120.0f), 0, Random.Range(10.0f, 200.0f));
         currentHealth = 100;
      }
   }
   healthbar.text = "Vida " + currentHealth + " / 100";
   if(healthShouldRespawn)
   {
      healthTimer += Time.deltaTime;
      if(healthTimer > 5.0f)
      {
         healthBottle.gameObject.SetActive(true);
         healthTimer = 0.0f;
      }
   }
}
public void ApplyDamage(int damage){
   damageCount = damageCount + damage;
   if(damageCount == 100){
      currentHealth = currentHealth - 30;
      GetComponent<AudioSource>().PlayOneShot(deathClip2);length = 0.5f;
      healthbar.text = "Health " + currentHealth + " / 100";
      damageCount = 0;
   }
   print(currentHealth);
}
public void playerInCombat(int combat){
   if(combat == 1){
      playerFighting = true;
   }
   else
   {
      playerFighting = false;
   }
}
void OnTriggerEnter(Collider item){
   if(item.gameObject.tag == "PlayerHealthBottle")
   {
      if(currentHealth < 100)
      {
         currentHealth = currentHealth + 50;
         item.gameObject.SetActive(false);
         healthShouldRespawn = true;
      }
   }
}
 
}

Esta es la parte de donde muere:

f(currentHealth <= 0){
         GetComponent<AudioSource>().PlayOneShot(deathClip);length = 0.8f;

y este fragmento es el que cuando le pegan grita:

if(damageCount == 100){
      currentHealth = currentHealth - 30;
      GetComponent<AudioSource>().PlayOneShot(deathClip2);length = 0.5f;
      healthbar.text = "Health " + currentHealth + " / 100";
      damageCount = 0;

Las dos partes constan de su length que esta arriba con su public float correspondiente....
 
 
 
#319
General (Antiguo) / Duda distancia de ataque
Junio 26, 2015, 03:12:05 PM
Solucionado!!! , aumentando en 4f y 4f en las lineas y anumentando la distancia a 50 funciona perfectamente
 
Quedo asi la cosa_

if (distance <= 4) {
      skelly6.GetComponent<Animation>().CrossFadeQueued("Run", 0.3f, QueueMode.PlayNow);
      skelly6.GetComponent<Animation>().CrossFade("Attack_01");
      character.ApplyDamage(1);
      character.playerInCombat(1);
      }
      else if (distance < 50 && distance > 4.0f) {

Muchas gracias por las ideas 
#320
General (Antiguo) / Duda distancia de ataque
Junio 26, 2015, 01:46:31 PM
Cita de: esr date=1435305238Vale creo que tu problema esta en el segundo if (else if (distance < 3 && distance > 3.0f) {) esa linea no tiene sentido la distancia nunca podra ser mayor y menos que tres a la vez, en ese if no puede entrar nunca. De todas formas utiliza Debug.log para depurar y saber a que distancia se encuentra en cada momento.
 
Despues te daria algunos consejos, si vas poner el player como una variable global inicializalo en el start te estaras ahorrando rendimiento al no tener que buscar el jugador en cada iteracion, segundo si es un script de un enemigo este tendra que ir enlazado al enemigo, por lo que no necesitas tener una instancia de este en el, ademas con ese codigo no vas a poder poner mas de un "skelly6" y una menor si la distancia solo la utilizas en el update declarala solo en el update.
 
Saludos.
Antes de nada gracias por responder @esr , entiendo lo que me dices pero me pierdo en el camino soy bastante novato en esto...lo del skelly 6 lo que ago es crear mas scripts iguales cambiando los skelly6 por 7 etc en todas las directrices.El tema que me comentas de lo de la distancia serias tan amable de darme una soluciñon en codigo que pueda aplicarla y funcione, que bien como te digo me cae grande y estoy parado por esto.....por favor.
 
Un saludo.
 
Vale..despues de hacer unas pruebas .....esta linea:

else if (distance < 30 && distance > 3.0f) {
skelly6.GetComponent<Animation>().CrossFadeQueued("Attack_01", 0.3f, QueueMode.PlayNow);

Si le cambias el valor este caso donde pone "30" que estaba en 3, que mirando antes de toquetar estaba en 15......si que te detecta mucho antes y empieza a correr hacia mi, pero....sigue corriendo y no ataca como hacia antes ...lo cual no deberia ser asi ya que estamos en distancia menos de 30 y mas de 3.....
 
Ideas???
 
#321
General (Antiguo) / Duda distancia de ataque
Junio 26, 2015, 12:43:31 AM
Muy buenas a todos, tengo un dilema que parece una tontería pero me lleva de cabeza.

using UnityEngine;
using System.Collections;
public class skellyattack6 : MonoBehaviour {
   public GameObject player;
   public GameObject skelly6;
   public float distance;
   public PlayerInfo character;
   
   // Use this for initialization
   void Start () {
   }
   
   // Update is called once per frame
   void Update () {
      
   player = GameObject.FindWithTag("jugador");
   skelly6 = GameObject.FindWithTag("Troll");
   distance = Vector3.Distance(player.transform.position,skelly6.transform.position);
      
      if (distance <= 3) {
      skelly6.GetComponent<Animation>().CrossFadeQueued("Run", 0.3f, QueueMode.PlayNow);
      skelly6.GetComponent<Animation>().CrossFade("Attack_01");
      character.ApplyDamage(1);
      character.playerInCombat(1);
      }
      else if (distance < 3 && distance > 3.0f) {
      skelly6.GetComponent<Animation>().CrossFadeQueued("Attack_01", 0.3f, QueueMode.PlayNow);
      skelly6.GetComponent<Animation>().CrossFade("Run");
      skelly6.transform.LookAt(player.transform.position);
         transform.position = Vector3.MoveTowards(transform.position, player.transform.position, 0.30f);
         //character.playerInCombat(1);
         
      }   
      else
      {
      skelly6.GetComponent<Animation>().CrossFadeQueued("Run", 0.3f, QueueMode.PlayNow);
      skelly6.GetComponent<Animation>().CrossFade("Idle_01");
      character.playerInCombat(1);
      }
   }
   
   
}

Este script, lo que hace es que si el bixo o lo que sea , se encuentra en un rango de distancia =X y entras en ese rango, se activan las animaciones X te persigue y te ataca y cuando sales de ese rango se para.
 
Bien, pues por mucho que le cambio el valor: 
 
if (distance <= 3) {
skelly6.GetComponent<Animation>().CrossFadeQueued("Run", 0.3f, QueueMode.PlayNow);
 
Para que me detecte y venga corriendo hacia mi no aumenta el radio de detección.
 
Deberia ser asi? o estoy cambiando el valor que no es?
 
Si alguien se le ocurre agradecería la ayuda.
 
Gracias de antemano.
 
 
 
 
#322
General (Antiguo) / Enemigo e destruie al morir
Junio 23, 2015, 12:43:30 PM
SOLUCIONADO =  asi esta perfecto la animacion muere a los pocos segundos y el Gameobject "el eskeleto en este caso" tambien todo arreglado..GRACIAS!!!
 
dejo el codigo por si le sirve a alguien mas:

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(clone.gameObject,3.6f);
Destroy(gameObject);
}   
#323
General (Antiguo) / Enemigo e destruie al morir
Junio 23, 2015, 12:05:51 PM
Vaya ..algo he echo mal ahora ni muere, ni hace la animación.. una manita?

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(clone.gameObject,0.10f);
}   
#324
General (Antiguo) / Enemigo e destruie al morir
Junio 23, 2015, 10:33:08 AM
Cita de: pioj date=1435047745Acostumbraros a recoger en una variable el GameObject previamente instanciado o clonado, siempre que queráis trabajar con él (o incluso destruirlo).
 
Gracias por la respuesta Pioj, es algo a tener en cuanta a partir de ahora
#325
General (Antiguo) / Enemigo e destruie al morir
Junio 23, 2015, 10:27:03 AM
Muchas gracias por tan prontas e instructivas respuestas,da gusto ver gente como ustedes.
 
@Arthure, gracias por dedicar tiempo a explicarme la función de los scrips ya que me has ayudado y mucho a entenderlo.
 
Ahora mismo lo pondre en practica y te digo cosillas en breve  
 
Lo unico que no tengo muy claro es como le indico los segundos seria algo asi?
 
 Destroy (clone.gameobject, _3f_5f_animacion);?????
 
Espero saber de ti  : gracias!!
#326
General (Antiguo) / Enemigo e destruie al morir
Junio 22, 2015, 09:12:13 PM
Hola muy buenas , tengo un pequeño dilema con este script:

ar 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);
}   

Es muy sencillo pero no termina de ir bien , es simplemente una cantidad de vida a un enemigo que cuando llega a 400 llama a la funcion muere y con la variable choke que en el inspector te sale que le añadas un prefab que en este caso es un eskeleto con solo la animación de morir, pues hace eso reproduce la animacion primera que es la de death, pero....hasta aqui bien...pero deberia destruirse al terminar dicha animación Destroy(gameObject); pero se queda tirda en el suelo y no se va.....alguna idea?
 
Gracias de antemano
#327
General (Antiguo) / Colisiones de balas sin motivo
Junio 22, 2015, 08:25:25 AM
Cita de: Kondor0 date=1434952480Debug.Log es sólo una línea, no es ninguna ciencia: http://docs.unity3d.com/ScriptReference/Debug.Log.html" rel="external nofollow">http://docs.unity3d.com/ScriptReference/Debug.Log.html
 
Las Physic Settings a menos que las hayan cambiado de lugar debieran estar en Edit -> Project Settings -> Physics.
 
Leete el manual de Unity, todos estos conceptos son explicados ahí.
Gracias de nuevo Kondor0, me pongo a ello y te digo si funciono para futuras referencias,tambien intentare lo de log , gracias de nuevo.
 
Aaa y tengo video para que se vea mejor
 
https://drive.google.com/file/d/0B10zO1NOrZQRUkpEVWNUd1R0dXc/view?usp=sharing" rel="external nofollow">https://drive.google.com/file/d/0B10zO1NOrZQRUkpEVWNUd1R0dXc/view?usp=sharing
 
Primer fragmento de video las balas salen a ritmos diferentes, lentas, rapidas o muy rapidas.... , segundo fragmento cuando paso de nivel no llegan ni a un palmo delante mia y chocan....
#328
General (Antiguo) / Colisiones de balas sin motivo
Junio 19, 2015, 11:20:59 AM
Cita de: Kondor0 date=1434684371En el evento de colisión ponle un debug.log que muestre el nombre del objeto con que colisiona, eso te debiera aclarar que sucede.
 
También debes revisar las Physic settings del proyecto y asignar layers a los distintos objetos: por ejemplo, un layer llamado "Municion" sólo debiera colisionar con los layers "Terreno" y "Enemigo", así las balas no chocan entre sí ni con el jugador que debiera tener su propio layer "Jugador".
 
Gracias por contestar Kondor0 lo que me dices me parece muy acertado y me gustaria probarlo, pero soy demasiado lerdo en esto para saber meter un log... lo de los layers si lo probare y el Phusic settings donde lo encuentro, gracias de antemano.
#329
General (Antiguo) / Colisiones de balas sin motivo
Junio 19, 2015, 11:18:42 AM
Cita de: AVSoftware date=1434674669Tiene pinta de que las balas están chocando entre ellas, o deshabilitas las colisiones entre balas o modificas tu script para que no exploten las balas si chocan con otras balas.
 
AVSoftware gracies por contestar, no se exactemente como hacer lo que me dices , pongo el script de disparo aver si vees algo raro por aqui y me puedes dar una luz:

var Bala : Rigidbody;
var Velocidad = 100;
static var municion : int = 100;
var municiontotal = 1000;
var guimuni : GUIText;
public var guitotal : GUIText;
var destello : GameObject;
var manoanim : GameObject;
var municionanim : GameObject;
var gunShot : AudioClip;
var recarga : AudioClip;
var vacio: AudioClip;
//var recarga : AudioClip;
//var gunShot : AudioSource;
//public  var Sonidodisparo : AudioClip;  
//public  var Sonidorecarga : AudioClip ;
//public  var Sonidovacio : AudioClip ;  
 
function Start(){
destello.active = false;
}
function Update(){
guimuni.text = "Municion: " + municion.ToString();
guitotal.text = "Municion Total: " + municiontotal.ToString();
 
if(Input.GetButton("Fire1")){
    if (municion > 0 && municiontotal >= 0){
    AudioSource.PlayClipAtPoint(gunShot, transform.position, 1);
     
        var clona = Instantiate(Bala, transform.position, transform.rotation);
   clona.velocity = transform.TransformDirection(Vector3(0, 0, Velocidad));
         municion -= 1;
         Destroy (clona.gameObject, 2);
         
}
}
if(Input.GetKeyDown("r") && municiontotal > 0){
   
    municion = 0;
    AudioSource.PlayClipAtPoint(recarga, transform.position, 1);
    Invoke ("recargando",2);
    
}
if(Input.GetMouseButtonDown(0)){
destello.active = true;
}
else
if(Input.GetMouseButtonUp(0)){
destello.active = false;
}   
if (municion <= 0){
if(Input.GetButton("Fire1")){
AudioSource.PlayClipAtPoint(vacio, transform.position, 1);}
destello.active = false;

}
}
function recargando (){
if(municiontotal > 0){
   
municiontotal -= 100;
municion +=100;
}
if (municion >100){
municion = 100;
}
}
#330
General (Antiguo) / Colisiones de balas sin motivo
Junio 19, 2015, 11:14:04 AM
Cita de: ProgramacionWH date=1434673213Veo que has seguido adelante con tru trabajo!
Felicidades,
puede ser que sea el collider?
es dificils aberlo sin mas informacion tal vez pasa un video?
Un saludo!
Gracias ProgramacionWH, si decidi meterle cuernos a la cosa y sigo adelante , mirare si puedo grabar un video o algun screeen y las colgare.