- Home /
< INT_MIN || f > INT_MAX targeting error
i can never find answers to my problems, so forgive me if this is solved somewhere, f< INT_MIN || f > INT_MAX is my error, it happens when i play my game, and hit tab to target an enemy, it targets the enemies but does not bring up the gui and in my compiler it returns that error and also it reffers to a script i have not edited or touched, so i dont know even what script to show on here to help solve my problem maybe my"EDIT: OR PETEYS SCRIPT excuse me" targeting script please help
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Targeting : MonoBehaviour {
public List<Transform> targets;
public Transform selectedTarget;
private Transform myTransform;
// Use this for initialization
void Start () {
targets = new List<Transform>();
selectedTarget = null;
myTransform = transform;
AddAllEnemies();
}
public void AddAllEnemies() {
GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy");
foreach(GameObject enemy in go)
AddTarget(enemy.transform);
}
public void AddTarget(Transform enemy)
{
targets.Add(enemy);
}
private void SortTargetsByDistance()
{
targets.Sort(delegate(Transform t1, Transform t2) {
return Vector3.Distance(t1.position, myTransform.position).CompareTo(Vector3.Distance(t2.position, myTransform.position));
});
}
private void TargetEnemy() {
if(targets.Count == 0)
AddAllEnemies();
if(targets.Count > 0) {
if(selectedTarget == null) {
SortTargetsByDistance();
selectedTarget = targets[0];
}
else {
int index = targets.IndexOf(selectedTarget);
if(index < targets.Count - 1) {
index++;
}
else {
index = 0;
}
DeselectTarget();
selectedTarget = targets[index];
}
SelectTarget();
}
}
private void SelectTarget() {
Transform name = selectedTarget.FindChild("Name");
if(name == null) {
Debug.LogError("Could not find the name on" + selectedTarget.name);
return;
}
name.GetComponent<TextMesh>().text = selectedTarget.GetComponent<Mob>().Name;
name.GetComponent<MeshRenderer>().enabled = true;
selectedTarget.GetComponent<Mob>().DisplayHealth();
Messenger<bool>.Broadcast("show mob vital bars", true);
}
private void DeselectTarget() {
selectedTarget.FindChild("Name").GetComponent<MeshRenderer>().enabled = false;
selectedTarget = null;
Messenger<bool>.Broadcast("show mob vital bars", false);
}
// Update is called once per frame
void Update () {
if(Input.GetKeyDown(KeyCode.Tab)) {
TargetEnemy();
}
}
}
edit::: here is the script when i hit tab itll target and bring up the gui
using UnityEngine;
using System.Collections;
public class VitalBar : MonoBehaviour {
public bool _isPlayerHealthBar; //this bool value tells us if this the player health or mob healthbar
private int _maxBarLength; //how long the vital bar can be at its maximum health
private int _curBarLength; // this is the current length of the vital bar
private GUITexture _display;
void Awake() {
_display = gameObject.GetComponent<GUITexture>();
}
// Use this for initialization
void Start () {
// _isPlayerHealthBar = true;
_maxBarLength = (int)_display.pixelInset.width;
OnEnable();
}
// Update is called once per frame
void Update () {
}
//this method is called when the gameObject is enabled
public void OnEnable() {
if(_isPlayerHealthBar)
Messenger<int, int>.AddListener("player health update", OnChangeHealthBarSize);
else {
ToggleDisplay(false);
Messenger<int, int>.AddListener("mob health update", OnChangeHealthBarSize);
Messenger<bool>.AddListener("show mob vital bars", ToggleDisplay);
}
}
//this method is called when the gameobject is disabled
public void OnDisable() {
if(_isPlayerHealthBar)
Messenger<int, int>.RemoveListener("player health update", OnChangeHealthBarSize);
else {
Messenger<int, int>.RemoveListener("mob health update", OnChangeHealthBarSize);
Messenger<bool>.RemoveListener("show mob vital bars", ToggleDisplay);
}
}
// this method will calculate the total size of the health bar in relation to the x of health the target has left
public void OnChangeHealthBarSize(int curHealth, int maxHealth) {
// Debug.Log("We heard an event: curHealth - " + curHealth + " - maxhealth - " + maxhealth);
_curBarLength = (int)((curHealth / (float)maxHealth) * _maxBarLength); //this calculates the current bar length based on the health %
//_display.pixelInset = new Rect(_display.pixelInset.x, _display.pixelInset.y, _curBarlength, _display.pixelInset.height);
_display.pixelInset = CalculatePosition();
}
//setting the healthbar to the player or mob
public void SetPlayerHealth(bool b) {
_isPlayerHealthBar = b;
}
private Rect CalculatePosition() {
float yPos = _display.pixelInset.y / 2 - 10;
if(!_isPlayerHealthBar) {
float xPos = (_maxBarLength - _curBarLength) - (_maxBarLength / 4 + 10);
return new Rect(xPos, yPos, _curBarLength, _display.pixelInset.height);
}
return new Rect(_display.pixelInset.x, _display.pixelInset.y, _curBarLength, _display.pixelInset.height);
}
private void ToggleDisplay(bool show) {
_display.enabled = show;
}
}GUITexture
Answer by nicklorion · Sep 10, 2012 at 09:08 PM
I've Got the exact same problem.. narrowed it down to the following function:
private Rect CalculatePosition() {
float yPos = _display.pixelInset.y / 2 - 10;
if(!_isPlayerHealthBar){
float xPos = (_maxBarLength - _curBarLength) - (_maxBarLength / 4 + 10);
return new Rect(xPos, yPos, _curBarLength, _display.pixelInset.height);
}
return new Rect(_display.pixelInset.x, yPos, _curBarLength, _display.pixelInset.height);
//return new Rect(_display.pixelInset.x, _display.pixelInset.y, _curBarLength, _display.pixelInset.height);
}
By switching the comment tags between the last 2 returns you remove the error, BUT this is not the desirable result. It looks to me like a turn over error..
Regards, Nicklorion
Your answer
Follow this Question
Related Questions
Ending my game 3 Answers
Does anyone know how to embed AIML? 1 Answer
I need help with an error 1 Answer
SetActive() Object reference not set to an instance of an object. 1 Answer