Materials폴더내에 머티리얼(Material)를 신규작성
머티리얼(Material)에 텍스처(Texture) 설정
큐브(Cube)에 머티리얼(Material) 설정
=>3단계의 작업이지만 텍스처(Texture)를 직접 큐브(Cube)에 드래그 앤드 드롭하는 것으로도 같은 처리가 됨
큐브(Cube)의 이름을 GrassBlock으로 변경
GrassBlock으로 프리팹(Prefab) 작성
땅을 만들기위해 많은 GrassBlock이 복사되어야하니 관리를 위해 프리팹(Prefab)을 작성
씬(Scene)의 GrassBlock, 혹은 Hierachy내의 GrassBlock을 Prefabs폴더로 드래드 앤 드롭
프리팹(Prefab)작성후 씬(Scene)의 GrassBlock은 불필요하므로 삭제
땅을 만드는 처리를 할 스크립트(Script)작성
WorldGenerator로 명명
WorldGenerator스크립트(Script)를 작동하게 할 오브젝트(Object)추가 및 태그(Tag)설정
Hierarchy >> Create >> Create Empty로 빈 오브젝트(Object)추가
유니티(Unity)실행시 Hierarchy내의 각각의 오브젝트(Object)가 로드되면서 설정된 스크립트(Script)가 작동
오브젝트명을 Environment로 변경 태그(Tag)를 설정하기 위해 Add Tag
Environment명으로 태그(Tag)추가
태그(Tag)를 추가한 Environment로 설정 태그(Tag)는 스크립트(Script)에서 접근하거나, 분류를 위해 설정
WorldGenerator스크립트(Script) 코딩
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
publicclass WorldGenerator : MonoBehaviour
{
publicint sizeX; //땅의 좌우크기publicint sizeZ; //땅의 상하크기public GameObject[] blocks; //블록 저장// Start is called before the first frame updatevoidStart(){
GenerateTerrain();
}
// Update is called once per framevoidUpdate(){
}
//땅 만들기 함수voidGenerateTerrain(){
//땅의 좌우,상하 크기까지 반복하며 블록복사 배치 for (int x = 0; x < sizeX; x++)
{
for (int z = 0; z < sizeZ; z++)
{
Instantiate(blocks[0], new Vector3(x,0,z), Quaternion.identity);
}
}
}
}
public로 선언한 속성(Property)는 유니티(Unity)에서 직접 설정 가능 : sizeX, sizeZ, blocks;
static function Instantiate (original : Object, position : Vector3, rotation : Quaternion) : Object
Instantiate : 원본 오브젝트(Object)를 복사해 Vector3위치에 Quaternion의 회전상태로 표시
Quaternion.identity : 원본 오브젝트(Object)와 동일한 회전(회전없음)
Environment오브젝트(Object)에 스크립트(Script)추가 및 설정
Hierarchy>>Environment를 선택
Inspector>>Add Component에서 WorldGenerator검색해서 추가 혹은 Script폴더에서 WorldGenerator스크립트(Script)를 드래그 앤 드롭
WorldGenerator스크립트(Script) 추가 후
SizeX, SizeZ, Blocks를 설정 Blocks는 오브젝트(Object)를 담고있는 배열로 현 단계에서는 1개만 사용하므로 Size를 1로 설정
추가로 표시되는 Element 0에 GrassBlock프리팹(Prefab)을 설정(드래그 앤 드롭 또는 선택)
최종 설정 상태
실행
GrassBlock프리팹(Prefab)이 복사되어 땅이 만들어짐
x, z만의 조합이므로 평평한 땅이 됨, y도 조합하면 높이있는 땅의 표현도 가능
댓글 없음:
댓글 쓰기