Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
유니티 고급 과정 -3-
Next
Download to read offline and view in fullscreen.

3

Share

Download to read offline

유니티 고급 과정 -4-

Download to read offline

서울 디지텍 고등학교에서 강연했던 PT자료 입니다.

Related Books

Free with a 30 day trial from Scribd

See all

유니티 고급 과정 -4-

  1. 1. 유니티 고급 과정 강체(RigidBody) - ConstantForce 사용법 - Torque 사용법 (양수, 음수 어떠한 의미를 갖는가?) - AddForce, AddTorque 조인트 사용법 오브젝트 풀 정리 Kiyoung Moon(문기영)
  2. 2. 강체 예제> testRigidBody 가장 간단한 박스를 만들고 RigidBody 컴포넌트를 이용해서 강체를 구현한다. 깊이감을 위해 그림자 처리를 한다.
  3. 3. 강체 강체를 움직이기 위해 힘, 토크를 설정해 주어야 한다. 유니티에서는 Constant_Force 컴포넌트를 제공하고 있는데 이것을 이용하면 간단하게 힘, 토크를 줄 수 있다. 이때 토크의 방향을 설정하는 것이 중요한데 왼손, 오른손 법칙을 이용해서 그 방향을 알 수 있다.
  4. 4. 강체 스크립트를 이용해 강체를 움직여 보자. 씬 testRigidBody_ForceTorqueByScript를 보면 force_torque.cs를 컴포넌트로 사용하고 있고 내부 구조는 다음과 같다. using UnityEngine; using System.Collections; public class force_torque : MonoBehaviour { // Update is called once per frame void Update () { gameObject.rigidbody.AddForce( new Vector3( -1.08f, 0, 0 ) ); gameObject.rigidbody.AddTorque( new Vector3( 0, 0, 0.56f ) ); } } 스크립트를 이용해 강체를 움직여 보자.
  5. 5. 여러 강체를 한 묶음으로 만들어 보자. 여러 강체를 합쳐서 하나로 표현 가능하다. 유니티는 Fixed Joint를 제공하는데 이것을 이용해서 여러 강체를 하나로 표현 할 수 있다. testRigidBody_Fun를 보면 강사가 간단하게 데모를 만들어 보았다. ‘괴혼’이라는 게임의 동작 원리를 살펴 볼 수 있다. 주의 : 실제로 Fixed Joint는 Fix하지 않기 때문에 Configure Joint를 사용한 다.
  6. 6. 조인트(Joint) 유니티는 여러 조인트 타입을 제공하고 있다. Fixed Joint Spring Joint Hinge Joint Configurable
  7. 7. Fixed Joint 강체를 설정했지만 물리에 의해서 움직이지 않게 하려면 Fixed Joint를 사용한 다. 연결할 몸통(Body)를 설정하면 해당 부모 객체의 로컬 좌표계에 기반해 서 위치값을 설정한다. 연결할 몸통을 설정하지 않으면 월드에서 움직이지 않는다.
  8. 8. Spring Joint 스프링 조인트는 강체들을 스프링으로 연결할 때 사용한다. 다음 예제 testJoint를 참고 하도록 하자. 빨간색 화살표가 가리키는 강체는 부모 객체이고 FixedJoint로 설정했다. 그렇기 때문에 월드에서 움직이지 않는다. 노란색 화살표가 가리키는 강체는 자식 객체이고 Spring Joint로 설정했다. Anchor를 기준으로 360도 방향으로 모두 움직 일 수 있으며 Min, Max Distance를 설정해서 최소 혹은 최대로 늘어질 수 있는 길이를 설정할 수 있다. Spring은 스프링의 강도인데 이 값이 작으면 작을 수록 더 많이 늘어질 수 있다.
  9. 9. Spring Joint를 어디에 사용할 수 있나? 예> RopePong 강사가 C#으로 만들었던 미니 게임 예제는 스프링을 이용해서 구현했다. 스프링 조인트를 이용해서 천 시뮬레이션도 구현이 가능하다.
  10. 10. Spring Joint로 Rope만들기 Unity로 구현해본 Rope 예제>testJoint_Rope
  11. 11. Hinge Joint Hinge Joint는 정해진 축을 기준으로만 회전할 수 있는 조인트다. 오른쪽 그림을 보면 알 수 있듯이 축이 정해져 있고 그 축을 기준으로 회전한다.
  12. 12. Hinge Joint
  13. 13. Configurable Joint
  14. 14. 오브젝트 풀(Object Pool) - 이전 강의에서 설명한 메모리 풀의 장점? - 오브젝트 풀도 같은 개념. 유니티에서는 필수! - 게임코디(gamecodi.com)의 닉네임 ‘태풍의그라운드’님의 오브젝트 풀을 간단히 살펴 보도록 하자.
  15. 15. 전체 소스 using System.Collections; using System.Collections.Generic; public class CGameObjectPool<T> where T : class { // Instance count to create. short count; public delegate T Func(); Func create_fn; // Instances. Stack<T> objects; public CGameObjectPool(short count, Func fn) { this.count = count; this.create_fn = fn; this.objects = new Stack<T>(this.count); allocate(); } void allocate() { for (int i=0; i<this.count; ++i) { this.objects.Push(this.create_fn()); } } public T pop() { if (this.objects.Count <= 0) { allocate(); } return this.objects.Pop(); } public void push(T obj) { this.objects.Push(obj); } }
  16. 16. 델리게이트를 왜 사용했나? 설계의 기본 “분리(Separation)” 클라이언트 코드와 오브젝트 풀을 분리하기 위함.
  17. 17. 개선할 점은?
  18. 18. 정리
  • innurman

    Dec. 28, 2018
  • seunggyunlee758

    Apr. 10, 2015
  • scarletmoonlight

    Apr. 7, 2015

서울 디지텍 고등학교에서 강연했던 PT자료 입니다.

Views

Total views

2,826

On Slideshare

0

From embeds

0

Number of embeds

81

Actions

Downloads

24

Shares

0

Comments

0

Likes

3

×