Unity:如何检查相机视图内的区域?

时间:2017-03-20 03:36:38

标签: unity3d

我正在建立一个僵尸生存游戏,在游戏中我有一些游戏对象充当僵尸的产生点。我想在产卵点不在摄像机视图中时产生僵尸,所以我该如何检查如果生成点在摄影机视图之外,以便生成它们。

下面是我的敌人产卵剧本。

Enemy Spawn

public class EnemyManager : MonoBehaviour
{
    PlayerHealth playerHealth;       // Reference to the player's heatlh.
    public GameObject enemy;                // The enemy prefab to be spawned.
    public float spawnTime = 3f;            // How long between each spawn.
    public Transform[] spawnPoints;         // An array of the spawn points this enemy can spawn from.


    void Start ()
    {
        // Call the Spawn function after a delay of the spawnTime and then continue to call after the same amount of time.
        playerHealth = GameObject.FindWithTag("Player").GetComponent<PlayerHealth>();
        InvokeRepeating ("Spawn", spawnTime, spawnTime);
    }


    void Spawn ()
    {
        // If the player has no health left...
        if(playerHealth.currentHealth <= 0f)
        {
            // ... exit the function.
            return;
        }

        // Find a random index between zero and one less than the number of spawn points.
        int spawnPointIndex = UnityEngine.Random.Range (0, spawnPoints.Length);

        // Create an instance of the enemy prefab at the randomly selected spawn point's position and rotation.
        Instantiate (enemy, spawnPoints[spawnPointIndex].position, spawnPoints[spawnPointIndex].rotation);
    }
}

1 个答案:

答案 0 :(得分:2)

您可以使用GeometryUtilityTestPlanesAABB来测试这一点。

bool IsVisible(Vector3 pos, Vector3 boundSize, Camera camera)
{
    var bounds = new Bounds(pos, boundSize);
    var planes = GeometryUtility.CalculateFrustumPlanes(camera);
    return GeometryUtility.TestPlanesAABB(planes, bounds);
}

请参阅http://answers.unity3d.com/answers/560147/view.htmlhttp://answers.unity3d.com/questions/227806/how-do-i-check-if-an-object-is-completely-visible.html