회로

통일 소개 : 14 단계

다각화되는 요즘 무선 환경의 '3대 트렌드'

다각화되는 요즘 무선 환경의 '3대 트렌드'

차례:

Anonim

이 instructable 슈퍼 초보자를 겨냥한!
Unity 4.x (Free 또는 Pro)를 설치해야합니다.
http://unity3d.com/unity/download
Unity를 시작하고 새 프로젝트를 만듭니다. 아직 물건을 가져 오는 것에 대해 걱정하지 마십시오!

용품:

1 단계 : 이것은 UNITY입니다!

다른 Unity Windows에 대한 자세한 내용은 다음을 참조하십시오.
http://unity3d.com/unity/workflow/integrated-editor
레이아웃을 Default 레이아웃으로 설정합시다.
메뉴 바에서 Window> Layouts> Default를 클릭하십시오.
  1. 메뉴 바
  2. 객체 조작 도구 (Gizmo) :보기를 이동하고 객체를 이동, 회전 및 크기 조정할 때 사용합니다.
  3. 피벗 설정 : Gizmo의 위치를 ​​개체의 피벗 점이나 개체의 가운데로 변경합니다.
  4. 좌표 설정 : 전역 좌표계 또는 로컬 좌표계로 객체를 이동할지 (객체의 회전에 따라) 변경할 수 있습니다.
  5. In-Editor Game Manipulation Tools : 게임을 시작 / 중지하고 일시 중지하고 단계별로 사용합니다.
  6. 레이어 : 한 세트의 오브젝트에서만 작업하려는 경우 장면에서 볼 수있는 레이어를 변경합니다.
  7. 레이아웃 메뉴 : 현재 창 레이아웃을 변경하십시오.
  8. Hierarchy Window : 여기에있는 게임 오브젝트는 현재 장면의 일부입니다. 여기에서 그들을 조작하십시오.
  9. 장면 / 게임 / 애니메이터보기 : 게임을 보는 곳입니다. WASD 또는 마우스로 마우스 오른쪽 버튼을 클릭하여 이동 / 확대 / 축소 / 기울임을 사용하여이 항목을 탐색하십시오.
  10. Gizmo : 이것은 Gizmo입니다. 선택한 도구를 기반으로 객체를 이동, 회전 및 크기 조정할 수 있습니다.
  11. 검사기 창 : 선택한 개체의 설정을 변경하는 곳입니다.
  12. 프로젝트 창 : 여기에는 프로젝트의 모든 자산이 저장됩니다.
  13. 콘솔 창 : 오류, 경고 및 인쇄 메시지가 모두 여기에 나타납니다. 이것을 사용하여 디버그하십시오.
  14. 메시지 표시 줄 : 오류, 경고 또는 메시지가있을 때마다 여기에 표시됩니다. 모든 버그를 수정하려면 콘솔로 이동하십시오.

2 단계 : 패키지 가져 오기

Unity의 표준 자산 중 일부를 가져와 시작하겠습니다.
메뉴 바의 자산 탭에서 일부 패키지 가져 오기를보십시오.
애셋> 패키지 가져 오기> 지형 애셋
자산> 가져 오기 패키지> 문자 컨트롤러

3 단계 : 지형

산을 더 해보자!


메뉴 바에서 GameObject> Create Other> Terrain으로 이동하십시오.
장면이나 계층 구조 창의 개체 목록에서 지형 개체를 클릭하여 선택합니다.
속성 패널에서 Raise / Lower Terrain 버튼을 클릭하십시오.


장면에서 지형의 아무 곳이나 마우스 왼쪽 버튼으로 드래그하여 고도를 올립니다.
낮추십시오.
다른 브러쉬 모양과 크기로 실험 해보십시오.


텍스처 추가하기


이제 Inspector에서 Paint texture tool을 선택하십시오.
텍스처 제목 아래의 텍스처 편집 버튼을 클릭하고 텍스처 추가를 선택하십시오.


나타나는 창에서 텍스처라는 상자에서 선택을 선택하십시오.
나타나는 창에서 Grass (Hill)을 두 번 클릭하십시오.
Add Terrain Texture Window의 하단에있는 Add를 클릭하십시오.

같은 방법으로 텍스처를 추가하십시오.

텍스처 페인팅


지형과 페인트 텍스처 도구가 선택된 상태에서 풀 이외의 텍스처를 선택합니다.
이제 높이 수정과 마찬가지로 뷰포트에서 클릭하여 드래그하여 지형의 질감을 변경합니다.


메인 카메라 이동


계층 구조 아래의 화면 왼쪽에있는 객체 목록에서 주 카메라 객체를 두 번 클릭하여 카메라를 찾으십시오.

왼쪽 상단의 4 방향 화살표를 클릭하여 이동 도구를 활성화하십시오.

도구의 화살표를 끌어 객체를 이동할 수 있습니다.
메인 카메라 객체를 이동하여 카메라 미리보기가 흥미로운 것을 보여줍니다.

4 단계 : 조명


게임 오브젝트> Create Other> 방향 라이트
빛의 강도를 변경하거나 방향과 위치를 가지고 놀아보십시오.

플레이어가 무엇을보고 있는지 보자!
이제 당신은 사물을 볼 수 있습니다!

5 단계 : 플레이어

프로젝트 창에서 First Person Player Controller 자산을 찾습니다.
애셋> 표준 애셋> 캐릭터 컨트롤러> 1 인칭 컨트롤러

플레이어를 Hierarchy 창으로 드래그 앤 드롭하여 장면에 추가하십시오.
Inspector 창에서 이름을 변경하여 Player의 이름을 변경하십시오.
참고 : 이름을 변경 한 후에 Enter / Return 키를 누르지 않으면 이름이 변경되지 않습니다.

플레이어를 지형 위에 올려 놓으십시오.
플레이어가 지형과 교차하지 않는지 확인하십시오. 그렇지 않으면 넘어 질 것입니다.
Hierarchy에서 이름을 마우스 오른쪽 버튼으로 클릭하고 Delete 키를 눌러 메인 카메라를 삭제하십시오.
재생을 누릅니다. 당신은 지금 걸어 다닐 수 있어야합니다 :)

6 단계 : 장면 개체

무료로 멋진 건물을 구하십시오!


http://www.assetstore.unity3d.com/#/content/6298


유니티로여십시오. 다운로드! 필요에 따라 계정을 만들거나 로그인하십시오.
모든 자산 가져 오기.
애셋> 가져 오기 패키지> Skyboxes
DawnDusk와 관련된 파일 만 확인하십시오.

편집> 렌더링 설정> Skybox 재질

모델의 프리 패브릭을 장면으로 드래그 앤 드롭하십시오.

7 단계 : 커서 잠금 / 숨기기

스크립트 폴더 만들기
"Menu"라는 새로운 자바 스크립트를 만드십시오.
1 인칭 슈팅 게임을위한 가장 기본적인 메뉴 요소 인 게임에서 마우스를 잠그고 숨기는 것으로 시작하겠습니다.
// 메뉴가 열려 있고 마우스가 잠겨 있지 않으면 True
varMenuOpen : 부울 = 거짓;
functionStart () {
UpdateCursorLock ();
}
functionUpdate () {
// 메뉴 버튼이 해제되었는지 확인
if (Input.GetButtonUp ( "MenuOpen")) {
MenuOpen =! MenuOpen;
UpdateCursorLock ();
}
}
// Gui가 그려 질 필요가있을 때마다 호출됩니다.
functionOnGUI () {
if (! MenuOpen) {
// 십자형 그리기

// 레이블 내부에 텍스트 가운데 놓기
varcenteredStyle = GUI.skin.GetStyle ( "Label");
centeredStyle.alignment = TextAnchor.MiddleCenter;
// 화면 중앙에 레이블을 그립니다.
GUI.Label (Rect (Screen.width / 2-50, Screen.height / 2-25,100,50), "+", centeredStyle);
}
}
functionUpdateCursorLock () {
Screen.lockCursor =! MenuOpen;
Screen.showCursor = MenuOpen;
}

장면에서 Menu를 얻으려면 빈 Game Object (GameObject> Create Empty)를 만듭니다.
이 "메뉴"라고 부르 자.
스크립트를 Menu 객체로 드래그합니다.
나중에 더 많은 기능을 추가 할 것입니다.

Menu Open / Close 버튼을 추가해 보겠습니다.


편집> 프로젝트 설정> 입력.
"축"을 엽니 다.
입력 관리자의 크기에서 크기를 21로 편집하십시오.
새로운 입력 중 하나를 "Menu Open"이라고 이름을 바꾸고 "Positive Button"을 "escape"로 설정하십시오

8 단계 : 총과 총알


이 총을 사용해 봅시다.
http://www.assetstore.unity3d.com/content/10332
DartGun Prefab을 압축 가스 권총> 조립식> DartGun에서 현장으로 드래그하십시오.
프리 팹은 클래스와 같지만 '객체'형식입니다. 모든 다른 수준에서 사용할 수있는 좋은 기본값이있는 사본입니다.
플레이어에 DartGun 넣기> 메인 카메라

DartGun을 위치 / 회전 (플레이어> 메인 카메라> DartGun)

아래 값에 따라 내부 DartGun을 위치 / 회전합니다 (플레이어> 메인 카메라> DartGun> DartGun).


탄알을 만들고 쏴 보자!


GameObject> Create Other> Sphere로 이동하여 Sphere 만들기
글 머리 기호로 개체 이름 바꾸기
Bullet 객체에 새로운 RigidBody를 추가합니다.
구성 요소 추가> 물리학> RigidBody를 클릭하십시오.

중력 사용을 선택 취소하십시오.
충돌 감지를 연속으로 설정

구의 변형 크기를 0.2, 0.2, 0.2로 설정합니다.

"Bullet"이라는 새로운 자바 스크립트 스크립트를 만들어 보겠습니다.
// 총알이 움직이는 속도
varSpeed ​​: float = .4;
// 총알이 자동으로 소멸되기 전의 초 수
varSecondsUntilDestroy : float = 10;
privatevarstartTime : float;
functionStart () {
startTime = Time.time;
}
functionFixedUpdate () {
// 앞으로 움직이다
this.gameObject.transform.position + = 속도 * this.gameObject.transform.forward;

// Bullet이 SecondsUntilDestroy만큼 존재했다면 파괴합니다.
if (Time.time-startTime> = SecondsUntilDestroy) {
Destroy (this.gameObject);
}
}

functionOnCollisionEnter (충돌 : 충돌) {

// 세계에서 글 머리 기호를 제거합니다.
Destroy (this.gameObject);
}


Bullet 스크립트를 프로젝트 윈도우 (Assets> Scripts)에서 Hierarchy Window의 Bullet Object로 드래그 앤 드롭하십시오.
마지막으로, Bullet을 프리 팹으로 만들고 장면에서 삭제합니다.
Bullet 객체를 프로젝트 윈도우로 드래그하여 계층 창의 Assets> Prefabs로 총알의 프리 패브를 만듭니다.
"Gun"이라는 새로운 자바 스크립트 스크립트를 만들어 보겠습니다.
// 이것은 플레이어가 클릭 할 때 인스턴스화 될 글 머리 기호입니다
// 에디터에서 객체로 설정되어야한다.
varBullet : GameObject;
// 총알을 쏘아 라.
functionFire () {
// 총과 같은 방향으로 새 총알을 만듭니다.
varnewBullet : GameObject = 인스턴스화 (Bullet, transform.position, transform.rotation);
}
functionUpdate () {
// 마우스 왼쪽 버튼을 클릭하면 실행됩니다.
if (Input.GetButtonDown ( "Fire1")) {
불();
}
}

Gun 스크립트를 프로젝트 윈도우 (Assets> Scripts)에서 Hierarchy Window의 Gun Object로 드래그 앤 드롭하십시오.
Bullet Prefab을 "None (Game Object)"이 표시된 Gun 스크립트로 드래그 앤 드롭합니다.
장면 개체> 속성 창> 프리 패브릭> 적용으로 이동하여 항상 프리 프레임에 변경 사항을 적용해야합니다.

플레이어가 총에 맞지 않도록하십시오!


레이어> 레이어 편집


글 머리 레이어 만들기
플레이어 레이어 만들기

글 머리 기호 개체를 선택하고 레이어를 글 머리 기호로 설정하십시오.

플레이어를 선택하고 플레이어 레이어로 설정하십시오.
아이들을 바꾸는 것에 긍정이라고 말해라.
편집> 프로젝트 설정> 물리
글 머리 기호 / 플레이어 및 글 머리 기호 / 글 머리 기호 선택 취소

다음 좀비를 다운로드해야합니다.
http://www.mixamo.com/editor/new/86
예를 눌러 애니메이션을 봅니다.
다운로드를 클릭하십시오.
가입하기를 클릭하십시오.
계정 만들기
다운로드를 다시 클릭하십시오.
Checkout을 클릭하십시오.
다운로드 형식으로 Unity 용 FBX 선택
다운로드를 클릭하십시오.
프로젝트 창에서 모델 폴더 만들기> 자산
좀비를 모델 폴더로 드래그 앤 드롭
모델을 가져올 때 경고 창이 나타나면 지금 수정을 클릭하십시오.
GameObject> 빈 만들기
GameObject의 이름을 좀비로 변경하십시오.
좀비 모델을 좀비 오브젝트 위로 드래그하십시오.

좀비 오브젝트에 캐릭터 컨트롤러 놓기
검사관에서 센터 Y를 1로 설정합니다.
Capsule Collider 구성 요소 추가
구성 요소 추가> 물리학> 캡슐 콜리더
** 정확한 값을 복사하십시오.


스크립트 폴더에 Zombie라는 새 스크립트를 만듭니다.
varVisionDistance : float = 200;
varMovementSpeed ​​: float = 2;
varHealth : int = 2;
functionFixedUpdate () {
// Player 객체를 가져옵니다.
varplayer : GameObject = GameObject.Find ( "Player");
varcharacterController : CharacterController = GetComponent (CharacterController);

// 좀비의 눈의 위치를 ​​가져옵니다.
vareyePosition : Vector3 = transform.position;
eyePosition.y + = characterController.height;

// 플레이어와 좀비 위치의 차이점 가져 오기
// Player의 방향을 가리키는 방향 벡터를 만듭니다.
varlookDirection = player.transform.position-eyePosition;
lookDirection = lookDirection.normalized;

// 경치의 일부인 플레이어 또는 지형 (지형, 건물 등) 만 찾습니다.
varlayerMask : int = 1 <<><>

// 좀비가 움직이는 방향, 기본값은 서있다.
varmovementDirection : Vector3 = Vector3.zero;

// hitInfo는 좀비가 볼 수있는 것에 대한 정보를 포함합니다.
varhitInfo : RaycastHit;
if (Physics.Raycast (eyePosition, lookDirection, hitInfo, VisionDistance, layerMask)) {
// 좀비가 플레이어가 그들을 향해 움직이는 것을 볼 수 있다면.
if (hitInfo.collider.gameObject == player) {
movementDirection = lookDirection;
movementDirection.y = 0;
movementDirection = movementDirection.normalized;
}
}

// 선택한 방향을 향하고 이동합니다.
if (movementDirection! = Vector3.zero) {
transform.rotation = Quaternion.LookRotation (movementDirection, Vector3.up);
}
characterController.SimpleMove (movementDirection * MovementSpeed);
}
좀비에 대본을 쓰세요.
좀비 레이어 만들기 (레이어> 레이어 편집)
좀비가 좀비 레이어에 들어가면 좀비가 다른 좀비를 볼 수 있습니다.
좀비를 Assets> Prefabs 폴더로 드래그 앤 드롭하여 프리폼을 만듭니다.

10 단계 : 애니메이션

모델 폴더에서 Zombie @ walking_3 자산을 찾으십시오.
이번에 스크립트를 만든 것과 같은 방법으로 Animator Controller를 만듭니다.

프로젝트 창> 오른쪽 클릭> 생성> 애니메이터 컨트롤러

이름을 Zombie Animator로 지정하십시오. 이제 좀비 애니메이터를 두 번 클릭하십시오.
이제 Project Window에서 Zombie @ walking_3 자산을 다시 찾습니다.
옆에있는 화살표를 클릭하여 애셋을 엽니 다.

이제 walking_3 애니메이션을 Animator 창으로 끌어다 놓습니다.
Any State> Make Transition을 마우스 오른쪽 버튼으로 클릭 한 다음 walking_3을 클릭하여 모든 State를 walking_3 상태에 연결하십시오.
먼저, 전환 화살표를 편집하여 보행 3이 올바르게 반복되는지 확인하십시오 (전환 화살표를 클릭).

걷는 애니메이션이 지나치게 길지 않고 타임 라인의 화살표가 서로 옆에 있는지 확인하십시오.

다음으로, Animator 윈도우 안의 walking_3 애니메이션을 편집하여 애니메이션이 매우 느리다는 것을 확인합시다.
속도를 약 3.4로 설정하십시오.


이제 장면에서 좀비로 가서 애니메이터 컨트롤러를 애니메이터 개체로 드래그하십시오.
루트 동작 적용을 선택 취소하고 컬링 모드를 항상 애니메이트로 설정하십시오.

마지막으로 Prefab> Apply (적용)로 이동하여 설정을 프리 패브 (prefab)에 적용합니다. 좀비 프리 패브가 이제 애니메이터 컨트롤러를 가지고 있는지 확인하십시오!
현장에서 테스트 해보세요!

11 단계 : 좀비 산란

Spawner를 만들어 봅시다!
새로운 빈 GameObject를 만듭니다.
개체의 이름을 Spawner로 지정합니다.
Spawner라는 새 스크립트를 만들고 다음 코드를 추가하십시오.
// 생성 될 객체
varSpawnObject : GameObject;
// 초 단위
varSpawnStartDelay : float = 0;
varSpawnRate : float = 5.0;
functionStart ()
{
InvokeRepeating ( "Spawn", SpawnStartDelay, SpawnRate);
}
// SpawnObject를 스폰합니다.
functionSpawn ()
{
인스턴스화 (SpawnObject, transform.position, transform.rotation);
}

Spawner에 스크립트를 추가하십시오.
Spawner는 Spawner 스크립트의 Spawn Object 속성에 좀비 프리 패브를 끌어다 놓습니다.

이 스크립트는 Gun 스크립트와 매우 유사하다는 것을 알 수 있습니다.
이것을 조립식으로 만드십시오.
지도에 몇 개 놓으세요!

12 단계 : 통계 및 종료 조건

플레이어에게 건강을 좀 갖게하고, 좀비는 건강과 공격력을, 총은 일부 공격력을 주자.
scripts 폴더에 Player라는 새 스크립트를 추가하십시오.
다음 코드는 플레이어가 손상 될 수 있도록 허용하고 플레이어가 사망 할 때 게임을 다시 시작합니다.
// 게임을 다시 시작하기 전에 플레이어가 손상 될 수있는 횟수
varHealth : int = 10;
// 플레이어가 다치는 최소 시간 (초)
varDamageInvulnerabilityDelay : float = 2;
// 플레이어가 손상된 마지막 시간을 추적합니다.
privatevarinvulnerabilityStartTime : float;
functionStart () {
// 플레이어가 스폰시에 일시적으로 상처받지 않도록 초기 값을 설정합니다.
invulnerabilityStartTime = Time.time;
}
// 지정된 횟수만큼 플레이어를 손상 시키려합니다.
functionHurt (데미지 : int) {
// 적어도 DamageInvulnerabilityDelay만큼 오래 대기 한 경우
if (Time.time-invulnerabilityStartTime> = DamageInvulnerabilityDelay) {
// 플레이어를 손상시킨다.
건강 - = 손상;

// 무적 타이머 재설정
invulnerabilityStartTime = Time.time;
}

// 플레이어의 건강 상태가 남아 있지 않으면
if (Health <= 0) {
// 레벨을 새로 고침
Application.LoadLevel (Application.loadedLevelName);
}
}

좀비가 플레이어와 충돌하면 플레이어가 다치게됩니다.

다음 기능을 좀비 스크립트에 추가하십시오.
// 좀비가 무언가와 충돌 할 때
functionOnTriggerStay (기타 : Collider) {
// 좀비가 충돌 한 플레이어를 가져옵니다.
varplayer = other.gameObject.GetComponent (Player);

// 플레이어가 아닌 다른 플레이어와 충돌 한 경우 null 플레이어가됩니다.
if (player! = null) {
// 플레이어의 건강 상태에서 1을 뺍니다.
player.Hurt (1);
}
}

총알이 좀비를 치면 좀비를 해치 우세요.
글 머리 기호 스크립트의 OnCollisionEnter 함수를 다음과 같이 바꾸십시오

functionOnCollisionEnter (충돌 : 충돌) {
// Bullet이 충돌 한 좀비를 가져옵니다.
varzombie = collision.transform.gameObject.GetComponent (좀비);

// 좀비보다 좀비가 충돌하면 좀비가 null이됩니다.
if (zombie! = null) {
// 좀비의 건강 상태에서 1을 뺍니다.
좀비. 건강 -;

// 좀비가 건강 상태에 있지 않으면 게임에서 제거합니다.
if (zombie.Health <= 0) {
파괴 (collision.transform.gameObject);
}
}

// 세계에서 글 머리 기호를 제거합니다.
Destroy (this.gameObject);
}

13 단계 : HUD 및 메뉴 시스템

이제 메뉴 스크립트를 개선 해보자.
Resume, Restart, Quit 버튼과 더불어 얼마나 많은 건강 상태가 남아 있는지 알려줍니다.
메뉴 스크립트에 다음 두 함수를 모두 추가하십시오.
functionDrawHUD () {

// 플레이어로부터 건강을 얻는다.
varplayer = GameObject.Find ( "Player");
varhealth = player.GetComponent (Player) .Health;
// 위치
varleft = 10;
vartop = 10;
varwidth = 100;
varheight = 25;

// 배경 상자 만들기
GUI.Box (Rect (left, top, width, height), "Health :"+ health);

DrawCrosshair ();
}
// 메뉴를 그립니다.
functionDrawMenu () {
varcenterX = Screen.width / 2;
varcenterY = Screen.height / 2;

// 메뉴의 위치
varmenuLeft = centerX-50;
varmenuTop = 중앙 Y-50;
varmenuWidth = 100;
varmenuHeight = 100;

varbuttonX = menuLeft + 10;
varbuttonWidth = 80;
varbuttonHeight = 20;
varbuttonDist = 25; // 각 버튼 사이의 거리

// 배경 상자 만들기
GUI.Box (Rect (menuLeft, menuTop, menuWidth, menuHeight), "Menu");

// 시작 / 다시 시작
if (GUI.Button (Rectangle (ButtonX, MenuTop + 1 * buttonDist, buttonWidth, buttonHeight), "Resume")) {
MenuOpen = false;
UpdateCursorLock ();
}

// 재시작
if (GUI.Button (Rectangle (ButtonX, MenuTop + 2 * buttonDist, buttonWidth, buttonHeight), "Restart")) {
Application.LoadLevel (Application.loadedLevel);
}

// 종료 (빌드에서만 작동하며 개발자는 작동하지 않습니다!)
if (GUI.Button (buttonX, menuTop + 3 * buttonDist, buttonWidth, buttonHeight), "Quit")) {
Application.Quit ();
}
}

이제 OnGUI 함수를 다음으로 대체하십시오.

// Gui가 그려 질 필요가있을 때마다 호출됩니다.
functionOnGUI () {
if (! MenuOpen) {
DrawHUD ();
}그밖에{
DrawMenu ();
}
DrawCrosshair ();
}

시각적 피드백을 즐기십시오!

14 단계 : 놀기와 즐거움

좀 더 재미있는 지형을 만드십시오.
총을 들고 팔과 손가락을 만드십시오. 반동을 에뮬레이션하기 위해 촬영시 뒤로 회전 시키십시오!
예를 들어, 좀비가 플레이어에게 뛰게 한 다음 애니메이션을 다운로드하여 강남 스타일을 시도해 볼 수도 있습니다.
http://www.mixamo.com/motions?page=1&order=relevance&free=1&limit=48