1 / 16

Basic Tutorials of Unity3D and 3D Objects

Basic Tutorials of Unity3D and 3D Objects. VIM Hanul Lim. Script 예제 재 활용. 지난 시간에 활용한 Mouse Script 재활용 Project 생성 후 , 지형 , Camera, Sphere 생성 Project>Assets>Scripts 폴더 생성 Scripts 폴더 로 Camera.cs , Sphere.cs 복사 Main Camera 에 그대로 드래그 앤 드롭 Sphere.cs 에도 동일하게 적용

valora
Download Presentation

Basic Tutorials of Unity3D and 3D Objects

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Basic Tutorials of Unity3D and 3D Objects VIM Hanul Lim

  2. Script 예제 재활용 • 지난 시간에 활용한 Mouse Script 재활용 • Project 생성 후, 지형, Camera, Sphere 생성 • Project>Assets>Scripts 폴더 생성 • Scripts 폴더로Camera.cs, Sphere.cs복사 • Main Camera에 그대로 드래그 앤 드롭 • Sphere.cs에도 동일하게 적용 • 좌표 수정(Camera와 Sphere의 좌표를 통일) • 프로젝트가 바뀌더라도 같은 기능하는 스크립트는 재활용이 가능함

  3. Sphere Script 수정 - 1 • Sphere.cs • Public GameObject Camera; 선언 후 링크 • W 키입력 시 축에 대한 속도 변화를 수정 • rigidbody.velocity += Camera.transform.forward * 0.2f • W키를 누르면 카메라가 바라보는 정면으로 속도를 더함 • S 키 입력의 경우 – 0.2f를 곱해주면 됨 • A 키와 S키는 Camera.transform.right를 활용하여 부호를 반대로 하고 동일하게 적용 • FPS움직임과 동일하게 움직일 수 있음

  4. Sphere Script 수정 - 2 • 거리를 이용한 점프 측정 • private float distToGround; • 바닥과 거리를 측정하기 위한 변수 선언 • 충돌 검출로는 정확도가 떨어짐 • void Start() 함수 내 다음을 입력하여 거리 측정 • distToGround = collider.bounds.extens.y; • boolIsGround(){ //바닥에 닿았는지 측정하는 함수 return Physics.Raycast(transform.position, -Vector3.up, distToGround + 0.1f); }

  5. Sphere Script 수정 - 3 • 점프를 입력 받기 위한 함수를 다음과 같이 수정 • if (Input.GetKey(KeyCode.Space)) { if (IsGrounded()) rigidbody.velocity += new Vector3(0, 5, 0); } • 보다 간단하면서 정확하게 측정함 • 지형을 벗어나게 되면 점프를 못 함

  6. Sphere Script 수정 - 4 • 속도의 제약을 가하기 위한 함수 생성 • 일정 이상 빨라지지 않도록 벡터의 크기를 측정함 • float sizeofVec(Vector3 vec){ float tempPow = 0; tempPow = Mathf.Pow(vec.x, 2) + Mathf.Pow(vec.y, 2) + Mathf.Pow(vec.z, 2); return Mathf.Sqrt(tempPow); } • 수학 식 함수는 Mathf.를 입력하면 자동완성 사용 가능 • 전후좌우 이동 입력을 받기 전에 if 문의 조건을 다음과 같이 하여 속도의 제약을 부여 • sizeofVec(rigidbody.velocity) <= 10

  7. 이동 및 시점 변환 함수 분석 • 1인칭 시점의 게임을 할 때처럼 시점은 마우스로 움직임 • 전진은 마우스가 바라보는 방향대로 함 • 자동으로 방향을 계산하여 우측과 정면을 검출하여 활용하므로 매우 간편함 • Drag를 줄 경우 하강 가속도도 감소하므로 스크립트를 활용하는 것이 보다 자연스러움

  8. 충돌검출 - 1 • 오브젝트의 스크립트 클래스 내 다음 인터페이스를 활용하여 충돌을 검출 • void OnCollisionEnter(Collision col) • 충돌이 발생할 시에 어떤 태그를 가진 물체와 충돌했는지 확인하고 지정된 태그를 가진 물체이면 해당 동작 수행 • 태그 지정 • Sphere 오브젝트 선택

  9. 충돌검출 - 2 • Add Tag에서 Element 0 에 Player 입력 • Cube 오브젝트 생성 후 스크립트 추가 • Cube.cs스크립트에 다음 코드 입력 • void OnCollisionEnter(Collision col) { if (col.gameObject.tag == "Player") Destroy(gameObject); }

  10. 충돌 실험 결과 분석 • 충돌이 발생할 경우 오브젝트가 파괴됨 • 충돌이 발생할 경우 어떠한 효과를 주거나 아이템을 먹은 것과 같은 점수 획득을 할 수도 있음 • 적이나 총알과 충돌한 경우 주인공을 파괴시키고 게임 오버 화면을 불러올 수도 있음

  11. 10분간 휴식한 후 진행하도록 하겠습니다. Break Time

  12. Prefab이란? • 여러 번 활용하는 오브젝트를 간편하게 불러오도록 하기 위해 미리 만들어둔 집합 • 예컨대 총알, 적, 반복되는 지형 등에 활용됨 • Project>Assets>Prefabs폴더를 생성 • Project 창에서 Create>Prefab을 선택하면 빈 Prefab 생성 가능

  13. Prefab 만들기 • 빈 Prefab에반복해서 쓸 Object를 끌어오거나 Inspector창에서 하나씩 Component를 추가하여 생성 가능 • 빈 Prefab에 Cube를 드래그 앤 드롭하고Cube를 삭제함 • Spawn을 빈 오브젝트를 통해 불러와 무한 생성 할 수 있음

  14. 과제 • 프로젝트 수행 중간 결과 가지고 오기 • 질문 리스트 작성해서 가지고 오기

  15. 다음 시간에 다룰 것들은… • 프로젝트 중간 점검 및 질의응답

  16. 일정, 내용등등 Q&A

More Related