Propicios dias gente.Hay un detalle en mi proyecto que me escama un poco. El caso es que tengo una funcion con una operacion matematica que me devuelve un float, que es el daño que hace a un gameobject. Lo que no me gusta es que, una vez que el daño se ha aplicado, la vida restante se muestra con decimales (con 4 decimales ni mas ni menos). Y 145.0156/300 en la barra de vida queda feo. Por lo que me gustaria, si no redondear, eliminar los decimales para que quede un numero entero, aunque sea float. Gracias de antemano.
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.
Páginas1
#2
General (Antiguo) / El script no anda hasta que no encuentra un Gameobject "Objetivo".
Diciembre 27, 2015, 05:16:08 PM// Muchas gracias.
/*
Que dios se lo pague
*\
#3
General (Antiguo) / El script no anda hasta que no encuentra un Gameobject "Objetivo".
Diciembre 27, 2015, 04:15:08 PM
Muchisimas gracias señor mio. Es usted un grande xDHe agrupado las lineas que me has señalado en un if con la condición de si ha encontrado un objetivo y funciona de perfectamente. if (objetivo) {
statsenemy = objetivo.GetComponent <estadisticas> ();
distanciaenemigo = Vector3.Distance (this.transform.position, objetivo.transform.position);
} else if (!objetivo) {
distanciaenemigo = 20000f;
}Ahora si me pudieran contestar una pregunta mas, les estaria eternamente agradecido;¿Como se ponen las lineas de codigo en plan guay en los comentarios? Viendo la rapidez, eficacia y maestria de los lectores del foro, algo me dice que voy a pasar mucho tiempo aqui, y me vendria bien saberlo xDGracias.
statsenemy = objetivo.GetComponent <estadisticas> ();
distanciaenemigo = Vector3.Distance (this.transform.position, objetivo.transform.position);
} else if (!objetivo) {
distanciaenemigo = 20000f;
}Ahora si me pudieran contestar una pregunta mas, les estaria eternamente agradecido;¿Como se ponen las lineas de codigo en plan guay en los comentarios? Viendo la rapidez, eficacia y maestria de los lectores del foro, algo me dice que voy a pasar mucho tiempo aqui, y me vendria bien saberlo xDGracias.
#4
General (Antiguo) / El script no anda hasta que no encuentra un Gameobject "Objetivo".
Diciembre 27, 2015, 03:49:04 PM
Buenos dias, tardes, noches señoras y señores.Me ha surgido un problema a la hora de actualizar los scripts de mi proyecto a el nuevo Unity 5. El problema es el siguiente:Trato de crear un moba, y para seleccionar un objetivo al que atacar utilizo un raycast que cuando colisiona con un gameobject con el tag de "enemigo", este cambia a "objetivo". Hasta ahi todo perfecto, el problema comienza cuando utilizo un FindGameObjectWithTag ("Objetivo") en void Update para calcular la distancia entre el objetivo y el personaje y asi determinar si esta en rango de ataque.En la versión anterior de Unity este metodo me funcionaba de maravilla (obviando los cientos de mensajes de error mientras que el FindGameObjectWithTag no encontraba ningun "Objetivo"), pero ahora mientras este no encuentre un objetivo, el script completo deja de funcionar y no se me actualiza el rango, ni la variable booleana que determina si esta atacando, ni la distancia del enemigo (es comprensible que no se actualice la distancia ya que realmente no hay un enemigo, por ese motivo puse un if que resetea la distancia si no hay un objetivo y no funciona).Les dejo el script completo:using UnityEngine;
using System.Collections;public class Ataque_basico : MonoBehaviour {
GameObject objetivo;
estadisticas statsplayer;
public float distanciaenemigo = 0;
public float firerate;
float nextfire = 0.0f;
estadisticas statsenemy;
public float rango;
void Start () {
statsplayer = this.gameObject.GetComponent <estadisticas> ();
}
// Update is called once per frame
void Update () {
objetivo = GameObject.FindGameObjectWithTag ("Objetivo");
statsenemy = objetivo.GetComponent <estadisticas> ();
statsplayer = this.gameObject.GetComponent <estadisticas> ();
rango = statsplayer.rango;
firerate = 1 / (statsplayer.vel / 2);
distanciaenemigo = Vector3.Distance (this.transform.position, objetivo.transform.position); if (distanciaenemigo < rango) {
statsplayer.ataquebasico = true;
} else if (distanciaenemigo > rango){
statsplayer.ataquebasico = false;
} if (!objetivo) {
distanciaenemigo = 20000000f;
} while (statsplayer.ataquebasico && statsenemy.hp != 0 && Time.time > nextfire) {
statsenemy.hp = statsenemy.hp - statsplayer.basicatk;
nextfire = Time.time + firerate;
}
}
} Gracias de antemano y disculpen las molestias.
using System.Collections;public class Ataque_basico : MonoBehaviour {
GameObject objetivo;
estadisticas statsplayer;
public float distanciaenemigo = 0;
public float firerate;
float nextfire = 0.0f;
estadisticas statsenemy;
public float rango;
void Start () {
statsplayer = this.gameObject.GetComponent <estadisticas> ();
}
// Update is called once per frame
void Update () {
objetivo = GameObject.FindGameObjectWithTag ("Objetivo");
statsenemy = objetivo.GetComponent <estadisticas> ();
statsplayer = this.gameObject.GetComponent <estadisticas> ();
rango = statsplayer.rango;
firerate = 1 / (statsplayer.vel / 2);
distanciaenemigo = Vector3.Distance (this.transform.position, objetivo.transform.position); if (distanciaenemigo < rango) {
statsplayer.ataquebasico = true;
} else if (distanciaenemigo > rango){
statsplayer.ataquebasico = false;
} if (!objetivo) {
distanciaenemigo = 20000000f;
} while (statsplayer.ataquebasico && statsenemy.hp != 0 && Time.time > nextfire) {
statsenemy.hp = statsenemy.hp - statsplayer.basicatk;
nextfire = Time.time + firerate;
}
}
} Gracias de antemano y disculpen las molestias.
Páginas1