2016-09-29 4 views
0

동료 개발자 : 유니티의 지형 폭과 높이를 찾기 다른 스크립트에서, 아래에 포함되지 않음).나는 플레이어가 WASD/화살표 키를 사용하여 카메라를 이동하면 지형을 (떨어져가는 카메라를 방지하는 RTS 카메라에 대한 스크립트를 작성 <p></p>가 발견

아래 코드에서 지형의 너비와 높이를 하드 코드했습니다. 지형의 너비와 높이를 자동으로 감지 할 수 있어야합니다.

참고 : 당신이 답을 알고있는 경우, 완전한 코드뿐만 아니라 조각을 제공하십시오, 그래서 당신이 말했듯이 나는 타이 :

public class CameraBounder : MonoBehaviour { 
int minXBound = 50; 
int maxXBound = 50; 
int minZBound = 100; 
int maxZBound = 200; 
int terrainWidth = 500; 
int terrainHeight = 500; 

// Use this for initialization 
void Start() { 
} 

// Update is called once per frame 
void Update() { 
    Debug.Log("X: " + transform.position.x + " Z: " + transform.position.z); 

    if (transform.position.x > terrainWidth - maxXBound) { 
     transform.position = new Vector3 ((terrainWidth-maxXBound), transform.position.y, transform.position.z); 
    } 
    if (transform.position.x < minXBound) { 
     transform.position = new Vector3 (minXBound, transform.position.y, transform.position.z); 
    } 
    if (transform.position.z > terrainHeight - maxZBound) { 
     transform.position = new Vector3 (transform.position.x, transform.position.y, (terrainHeight-maxZBound)); 
    } 
    if (transform.position.z < minZBound) { 
     transform.position = new Vector3 (transform.position.x, transform.position.y, minZBound); 
    } 
} 

}

+0

스크립트를 통해 지형을 자동 생성 하시겠습니까? – cjf93

+0

@ cj93 아니요, 수동으로 지형을 만듭니다. 그러나 각 장면의 스크립트에서 너비와 높이를 변경하지 않고도 여러 장면/레벨에 대해 스크립트를 사용할 수 있기를 원합니다. – Alkarnur

+0

TerrainData.size로 해봤습니까? https://docs.unity3d.com/ScriptReference/TerrainData-size.html –

답변

0

, 화합과 C#에 아주 새로운 오전 당신의 주석을 사용하면 레벨을 수동으로 생성하므로 하나의 솔루션은 공개 GameObject를 만들어 포인트로 사용할 수 있습니다.

그리고 나서이 gameobjects의 위치를 ​​취하여 계산을하십시오. 당신은 관리자의 수준을 만들 때

public class CameraBounder : MonoBehaviour { 
    public GameObject right; 
    public Gameobject left; 
    public Gameobject top; 
    public Gameobject bottom; 
    float minXBound; 
    float maxXBound; 
    float terrainWidth; 
    int terrainHeight; 

    // Use this for initialization 
    void Start() { 
    minXBound = left.transform.position.x; 
    maxXBound = right.transform.position.x; 
    terrainWidth = maxXBound-minXBound; 
    terrainHeigh = top.transform.position.y - bottom.transform.position.y; 
    //You get the idea 
    } 
} 

당신은 가장자리에 빈 게임 오브젝트를 생성하고 관리자를 통해 스크립트에 공용 변수로 설정해야합니다.