0

こんにちは、以下は、私のキャラクターが移動し、2 つ以上のオブジェクトがレイキャストの視野に入ったときのコードです。GUI 要素はそれらの名前と重なっています。GUI の多くのオプションを試しましたが、成功しませんでした。正しいアプローチを教えてください。

using UnityEngine;
using System.Collections;

public class rayss : MonoBehaviour 
{
FOV2DEyes eyes;
FOV2DVisionCone visionCone;
float speed = -5;
RaycastHit hit;
RaycastHit[] objects ;
void Start() 
{
    eyes = GetComponentInChildren<FOV2DEyes>();
    visionCone = GetComponentInChildren<FOV2DVisionCone>();


}

void FixedUpdate()
{

    if (transform.position.x < -10 || transform.position.x > 10)
    {
        speed *= -1;
    }

    transform.position = new Vector3(transform.position.x + speed * Time.fixedDeltaTime, transform.position.y, transform.position.z);
}



void Update()
{
    objects  = new RaycastHit[eyes.hits.Count];



    int i = 0;
    foreach (RaycastHit hit in eyes.hits)
    {
        if (hit.transform)
        {
            objects[i] =hit ;
            i++;
        }

    }

}




void OnGUI()
{

    foreach (RaycastHit hit in objects)
    {


        GUI.Label( new Rect(40, 25, 100, 40), hit.collider.gameObject.name);

    }


}

}

4

1 に答える 1

0

コードを次のように変更できるのは簡単な OnGUI です。

void OnGUI()
{
    float yHeight = 25;
    foreach (RaycastHit hit in objects)
    {
        GUI.Label( new Rect(40, yHeight, 100, 40), hit.collider.gameObject.name);
        yHeight += 40 + 5// Label Height + some padding
    }
}

オブジェクト リストが多すぎる場合は、このようにスクロール ビューを追加する必要があります。

于 2015-02-02T14:54:15.197 に答える