2012-04-26 3 views
0

Я создал базовую радарную систему HUD на основе 3D-объектов (Plane), сценарий обнаруживает врага и следует за ним на экране, но моя проблема заключается в том, что иногда HUD выходит из области экрана.Проблема с радаром HUD

Вот мой код:

#pragma strict 

// ******Public dimentions ****** 
public var AircraftObject : Transform; 
// ******Private dimentions ****** 
//Fetch CpuScript class to get some varibles 
private var mainClass : CpuScript; 
private var isRenderer : boolean; 
private var aircraftArea : float; 
//Other perfabs 
private var Spd : GameObject; 
private var Alt : GameObject; 
private var Trg : GameObject; 
//Calculating varibles 
private var Distance : int; 
private var Speed : int; 


function Awake() 
{ 
    //Finding all objects 
    findObjects(); 
    //Set PlayerScript into the mainClass 
    mainClass = gameObject.GetComponent(CpuScript); 
} 

function FixedUpdate() 
{ 
    isRenderer = mainClass.isProximity; 
    aircraftArea = mainClass.mainObjectArea; 
    transform.position.x = aircraftArea/6; 
    //Set GUI's 
    guiControl(); 
    getValue(); 
} 

function guiControl() 
{ 
    Spd.GetComponent.<TextMesh>().text = Speed + " Knot"; 
    Alt.GetComponent.<TextMesh>().text = "Enemy detected"; 
    Trg.GetComponent.<TextMesh>().text = Distance + " Ft"; 
} 

function getValue() 
{ 
    Distance = Vector3.Distance(AircraftObject.transform.position, mainClass.AircraftDistance) * 4; 
    Speed = Random.Range(100, 300); 
} 

function findObjects() 
{ 
    Spd = GameObject.Find("Speed"); 
    Alt = GameObject.Find("Alt"); 
    Trg = GameObject.Find("AimTarget"); 
} 

ответ

2

это невозможно сказать из кода вы показали, почему именно ваш 3d HUD будет выключен экран.

Но если вы хотите, чтобы все 3D-объекты, как ваш HUD, всегда были на экране, вам нужно будет убедиться, что он постоянно отображается на экране камерой.

Это можно сделать несколькими способами.

Один из способов, будет заключаться в следующем:

  1. использовать вторую камеру, чтобы сделать ИЛС
  2. установить свои четкие флаги на глубину только (в инспекторе)
  3. набора глубины этой камеры на более чем основная камера (в инспекторе)

Пока вы не перемещаете эту вторую камеру, всегда должен отображаться HUD.

Вам также необходимо убедиться, что основная камера не отображает HUD. Сделайте это следующим образом:

  1. изменение слоя HUD (создание вашего выигранного слоя HUD).
  2. установить камеру hud для отображения только этого слоя.
  3. установить основную камеру, чтобы отобразить все остальные слои отдельно от слоя HUD.

Вы делаете это, используя селектор сброса маскировочной маски в инспекторе для обеих камер.

FYI: вы также можете установить маскировочные маски камер в коде, но для этого вам понадобятся побитовые операторы.

Альтернативные методы включают в себя, что делает HUD дочерним элементом основной камеры в сцене, так что, когда камера перемещается, движется HUD. Однако это может привести к тому, что ваш HUD будет закрыт другими игровыми объектами.

+0

Большое спасибо, работайте как шарм :-D – iSun

Смежные вопросы