Noticias

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

Distancia de objetos

Iniciado por ramunda, Marzo 19, 2017, 02:48:49 PM

Tema anterior - Siguiente tema
Marzo 19, 2017, 02:48:49 PM Ultima modificación: Marzo 21, 2017, 02:07:28 AM por ramunda
Buenas tardes,
 
Tengo una duda y quiero preguntarles:
 
Tengo un sencillo sistema de paga para mi juego el cual simplemente me muestra en una textura de radar los enemigos y los busca por tag,
 
Esto funciona perfectamente el problema viene en la distancia en que los detecta.
 
por mucho que le suba la public float no aumenta la distancia en que me aparecen en el radar y no se el motivo....
 
Allá va el script:
 

using UnityEngine;
using HWRcomponent;
using System.Collections;
 
namespace HWRcomponent
{
public enum Alignment
{
   None,
   LeftTop,
   RightTop,
   LeftBot,
   RightBot ,
   MiddleTop ,
   MiddleBot
}
}
public class RadarSystem : MonoBehaviour
{
private Vector2 inposition;
public float Size = 400; //  tamaño e el mapa
public float Distance = ;// distania maxima de los objetos
public float Transparency = 0.5f;// transparencia de lso objetos
public Texture2D[] Navtexture;// lista de texturs
public string[] EnemyTag;// lista de tags de los objetos
public Texture2D NavCompass;// textura de el compas
public Texture2D CompassBackground;// textura de el fondo
public Vector2 PositionOffset = new Vector2 (, );// posición de el minimapa
public float Scale = 1;// escala de el minimapa
public Alignment PositionAlignment = Alignment.None;// alineamiento
public bool MapRotation;
public GameObject Player;
public bool Show = true;
public Color ColorMult = Color.white;

void Start ()
{

}
void Update ()
{
   if (!Player) {
      Player = this.gameObject;
   }
   
   if (Scale <= ) {
      Scale = 100;
   }
   // define la posición
   switch (PositionAlignment) {
   case Alignment.None:
      inposition = PositionOffset;
      break;
   case Alignment.LeftTop:
      inposition = Vector2.zero + PositionOffset;
      break;
   case Alignment.RightTop:
      inposition = new Vector2 (Screen.width - Size, ) + PositionOffset;
      break;
   case Alignment.LeftBot:
      inposition = new Vector2 (, Screen.height - Size) + PositionOffset;
      break;
   case Alignment.RightBot:
      inposition = new Vector2 (Screen.width - Size, Screen.height - Size) + PositionOffset;
      break;
   case Alignment.MiddleTop:
      inposition = new Vector2 ((Screen.width / 2) - (Size / 2), Size) + PositionOffset;
      break;
   case Alignment.MiddleBot:
      inposition = new Vector2 ((Screen.width / 2) - (Size / 2), Screen.height - Size) + PositionOffset;
      break;
   }
   
}
Vector2 ConvertToNavPosition (Vector3 pos)
{
   Vector2 res = Vector2.zero;
   if (Player) {
      res.x = inposition.x + (((pos.x - Player.transform.position.x) + (Size * Scale) / 2f) / Scale);
      res.y = inposition.y + ((-(pos.z - Player.transform.position.z) + (Size * Scale) / 2f) / Scale);
   }
   return res;
}
void DrawNav (GameObject[] enemylists, Texture2D navtexture)
{
   if (Player) {
      for (int i=; i<enemylists.Length; i++) {
         if (Vector3.Distance (Player.transform.position, enemylists [i].transform.position) <= (Distance * Scale)) {
            Vector2 pos = ConvertToNavPosition (enemylists [i].transform.position);
         
            if (Vector2.Distance (pos, (inposition + new Vector2 (Size / 2f, Size / 2f))) + (navtexture.width / 2) < (Size / 2f)) {
               float navscale = Scale;
               if (navscale < 1) {
                  navscale = 1;
               }
               GUI.DrawTexture (new Rect (pos.x - (navtexture.width / navscale) / 2, pos.y - (navtexture.height / navscale) / 2, navtexture.width / navscale, navtexture.height / navscale), navtexture);
            }
         }
      }
   }
}
float[] list;
void OnGUI ()
{
   if (!Show)
      return;
   
   GUI.color = new Color (ColorMult.r, ColorMult.g, ColorMult.b, Transparency);
   if (MapRotation) {
      GUIUtility.RotateAroundPivot (-(this.transform.eulerAngles.y), inposition + new Vector2 (Size / 2f, Size / 2f));
   }

   for (int i=; i<EnemyTag.Length; i++) {
      DrawNav (GameObject.FindGameObjectsWithTag (EnemyTag [i]), Navtexture [i]);
   }
   if (CompassBackground)
      GUI.DrawTexture (new Rect (inposition.x, inposition.y, Size, Size), CompassBackground);
   GUIUtility.RotateAroundPivot ((this.transform.eulerAngles.y), inposition + new Vector2 (Size / 2f, Size / 2f));
   if (NavCompass)
      GUI.DrawTexture (new Rect (inposition.x + (Size / 2f) - (NavCompass.width / 2f), inposition.y + (Size / 2f) - (NavCompass.height / 2f), NavCompass.width, NavCompass.height), NavCompass);
}
}

 
 
 
Linea 26: public float Distance 0 ;
 
Gracias.
 
 
 
 
 
 
 
 

Viendo el codigo de primeras no se ve nada que este mal (menos que no se desde donde se llama a la funcion DrawNav), el consejo que te daria es que probases a depurar. Pon un Debug.Log para mirar las distancias que estas comparando o pon un breakpoint para depurar el codigo.

Etiquetas: