SlideShare a Scribd company logo
Unity3D 초급스터디
5회차 `15. 10. 31.
스터디 일정 및 커리큘럼
• 9월 12일 : 유니티 소개 및 에디터 조작법
• 9월 19일 : Sprite, Animation, Physics 기초
• 10월 10일 : Unity UI, GameManager
• 10월 24일 : Animation Controller, Timer
• 10월 31일 : 슈팅 게임 개발
• 11월 7일 : 2D 게임 완성(마녀이야기)
지난 시간
• uGUI (Sliced Image, Filled Image)
• Time manager
• Animation
• 랜덤 위치 생성
(실습1) 슈팅게임 준비
필요한 클래스
• Player

- hp, speed, 총알들

+ 총알발사, 이동, 적과 충돌
• Bullet

- speed, damage, 발사여부

+ 발사, 리셋, 적과 충돌
• Enemy

- hp, speed

+ 생성, 리셋
• EnemyPool

- 적들

+ 적 생성, 관리
하나씩 구현해봅시다
1. 플레이어 이동
2. 총알 발사
3. 적 생성
4. 충돌 처리
5. 사운드 적용
플레이어 이동
void Update () {
if (Input.GetKey (KeyCode.LeftArrow)) {
this.transform.Translate (-speed * Time.deltaTime, 0f, 0f);
} else if (Input.GetKey (KeyCode.RightArrow)) {
this.transform.Translate (speed * Time.deltaTime, 0f, 0f);
}
}
플레이어 이동
• Time.deltaTime

: 프레임 간격
• 속력에 deltaTime을 곱하는 이유?

: 이동거리 = 속력 * 시간
총알 Prefab 생성
• Bullet 클래스
• float speed = 20;

bool isFired = false;

int damage = 5;

public AudioClip effect;
• void Fire()

void Reset()

void OnTriggerEnter2D(Collider2D col)
총알 Prefab 생성
• Box Collider2D 추가
• 트리거 적용
Instantiate
• GameObject를 동적으로 생성
• 반대개념은 Destroy
총알 생성 및 관리하기
Player 클래스
public GameObject bulletPrefab;

public Bullet[] bullets;

int bulletSize = 20;

int curbullet = 0;
총알 생성
Player 클래스
void Start () {

bullets = new Bullet[bulletSize];

for (int i = 0; i < bulletSize; i++) {

GameObject o = Instantiate (bulletPrefab);

bullets[i] = o.GetComponent<Bullet> ();

bullets [i].transform.position = new Vector3 (0f, -10f,
0f);

}

InvokeRepeating ("Fire", 0f, 0.1f);

}
총알 발사
Player 클래스
void Fire(){

bullets [curbullet].Fire ();

bullets [curbullet].transform.position = 

this.transform.position;



curbullet++;

if (curbullet == bulletSize)

curbullet = 0;

}
총알 발사
Bullet 클래스
bool isFired = false;

float speed = 20f;

int damage = 5;
public AudioClip effect;
총알 발사
Bullet 클래스
void Update () {

if (isFired) {

this.transform.Translate (0f, speed * Time.deltaTime,
0f);

}

}



public void Fire(){

isFired = true;

}
적 생성
EnemyPool 클래스

: Player와 마찬가지
public GameObject enemyPrefab;

public Enemy[] enemies;

int enemySize = 12;

int curEnemy = 0;
적 생성
EnemyPool 클래스

: Player와 마찬가지
void Start () {

enemies = new Enemy[enemySize];

for (int i = 0; i < enemySize; i++) {

GameObject o = Instantiate (enemyPrefab);

enemies[i] = o.GetComponent<Enemy> ();

enemies [i].transform.position = new Vector3 (0f, 10f, 0f);

}

InvokeRepeating ("Generate", 0f, 2f);

}
적 생성
EnemyPool 클래스
void Generate(){

int randNum = Random.Range (0, 5);

for (int i = 0; i < 5; i++) {

if (randNum == i)

continue;



enemies [curEnemy].transform.position = new Vector3 (-3f + i*1.5f, 6f, 0f);

enemies [curEnemy].Create ();

curEnemy++;

if (curEnemy == enemySize) {

curEnemy = 0;

}

}

}
적 생성
Enemy 클래스
bool isCreated = false;

float speed = 6f;

int hp = 20;

public AudioClip effect;
적 생성
Enemy 클래스
void Update () {

if (isCreated) {

this.transform.Translate (0f, -speed * Time.deltaTime,
0f);

}

}



public void Create(){

isCreated = true;

}
적 생성
Enemy 클래스
public void Reset(){

this.transform.position = new Vector3 (0f, 10f, 0f);

isCreated = false;

hp = 20;

}
적&총알 충돌
Enemy 클래스
public void GetDamage(int damage){

this.hp -= damage;

if (this.hp <= 0) {

this.Reset ();

}

}
적&총알 충돌
Bullet 클래스
void OnTriggerEnter2D(Collider2D col){

if (col.tag == "Enemy") {

col.gameObject.GetComponent<Enemy> ().

GetDamage (damage);



this.Reset ();

}

}
사운드
• Main Camera에 AudioSource 컴포넌트 추가

: 배경음악 설정

: 무한 반복
• 총알 충돌, 적 사망시

:
Camera.main.gameObject.GetComponent<AudioSource
> ().PlayOneShot (effect);
(과제)2D 게임 기획해오기
• 게임 제목

게임 장르

진행 방식

인터페이스

게임 시스템

More Related Content

What's hot

120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseerChan-hyun Park
 
디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해
Je Lyoung Kim
 
Port polio게임 소개
Port polio게임 소개Port polio게임 소개
Port polio게임 소개
Seo YoungHoon
 
유니티 고급 과정 -1-
유니티 고급 과정 -1-유니티 고급 과정 -1-
유니티 고급 과정 -1-
Kiyoung Moon
 
[1002 조진현]unity3d 소개
[1002 조진현]unity3d 소개[1002 조진현]unity3d 소개
[1002 조진현]unity3d 소개
진현 조
 
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
WooSung Jeon
 
Port polio게임소개
Port polio게임소개Port polio게임소개
Port polio게임소개
Seo YoungHoon
 
Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효
Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효
Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효
Sunhyo Jung
 
Unity소개
Unity소개Unity소개
Make a shooting game using unity
Make a shooting game using unityMake a shooting game using unity
Make a shooting game using unity
Hyunwoo Kim
 
유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료
Je Lyoung Kim
 
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터][NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]SeungWon Lee
 
A Study on 2D Skeletal structure for efficient 2D game development with Spine
A Study on 2D Skeletal structure for efficient 2D game development with SpineA Study on 2D Skeletal structure for efficient 2D game development with Spine
A Study on 2D Skeletal structure for efficient 2D game development with Spine
Hyunwoo Kim
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술
MinGeun Park
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick
MinGeun Park
 
Unity3D 에디터 확장
Unity3D 에디터 확장Unity3D 에디터 확장
Unity3D 에디터 확장Heechan Park
 
Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나
Brandon Chung
 
Flappy bird 만들기 세미나 자료(유니티 4.3버전)
Flappy bird 만들기 세미나 자료(유니티 4.3버전)Flappy bird 만들기 세미나 자료(유니티 4.3버전)
Flappy bird 만들기 세미나 자료(유니티 4.3버전)
Changwon National University
 
iOS7 Sprite Kit을 이용한 게임 개발
iOS7 Sprite Kit을 이용한 게임 개발iOS7 Sprite Kit을 이용한 게임 개발
iOS7 Sprite Kit을 이용한 게임 개발
Changwon National University
 
introduce unity3D and playmaker basic
introduce unity3D and playmaker basicintroduce unity3D and playmaker basic
introduce unity3D and playmaker basic
quxn6
 

What's hot (20)

120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer
 
디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해
 
Port polio게임 소개
Port polio게임 소개Port polio게임 소개
Port polio게임 소개
 
유니티 고급 과정 -1-
유니티 고급 과정 -1-유니티 고급 과정 -1-
유니티 고급 과정 -1-
 
[1002 조진현]unity3d 소개
[1002 조진현]unity3d 소개[1002 조진현]unity3d 소개
[1002 조진현]unity3d 소개
 
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
 
Port polio게임소개
Port polio게임소개Port polio게임소개
Port polio게임소개
 
Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효
Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효
Unite 17 Education Day (미대 지망생이었던 제가)유니티 게임 개발자가 되었습니다 - 정선효
 
Unity소개
Unity소개Unity소개
Unity소개
 
Make a shooting game using unity
Make a shooting game using unityMake a shooting game using unity
Make a shooting game using unity
 
유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료유니티 Rpg게임배경 스타트업 두번째 스터디자료
유니티 Rpg게임배경 스타트업 두번째 스터디자료
 
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터][NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
 
A Study on 2D Skeletal structure for efficient 2D game development with Spine
A Study on 2D Skeletal structure for efficient 2D game development with SpineA Study on 2D Skeletal structure for efficient 2D game development with Spine
A Study on 2D Skeletal structure for efficient 2D game development with Spine
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick
 
Unity3D 에디터 확장
Unity3D 에디터 확장Unity3D 에디터 확장
Unity3D 에디터 확장
 
Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나
 
Flappy bird 만들기 세미나 자료(유니티 4.3버전)
Flappy bird 만들기 세미나 자료(유니티 4.3버전)Flappy bird 만들기 세미나 자료(유니티 4.3버전)
Flappy bird 만들기 세미나 자료(유니티 4.3버전)
 
iOS7 Sprite Kit을 이용한 게임 개발
iOS7 Sprite Kit을 이용한 게임 개발iOS7 Sprite Kit을 이용한 게임 개발
iOS7 Sprite Kit을 이용한 게임 개발
 
introduce unity3D and playmaker basic
introduce unity3D and playmaker basicintroduce unity3D and playmaker basic
introduce unity3D and playmaker basic
 

Similar to 브릿지 Unity3D 기초 스터디 5회

Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdfCase Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
ssuser2624f71
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
승민 백
 
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
MinGeun Park
 
유니티로 flappy brid 만들기(Unity 5.1)
유니티로 flappy brid 만들기(Unity 5.1)유니티로 flappy brid 만들기(Unity 5.1)
유니티로 flappy brid 만들기(Unity 5.1)
Changwon National University
 
SVVR아카데미 3월 교육과정 소개
SVVR아카데미 3월 교육과정 소개SVVR아카데미 3월 교육과정 소개
SVVR아카데미 3월 교육과정 소개
Unitylearningcenter
 
Gunshooting level design_1_1.00
Gunshooting level design_1_1.00Gunshooting level design_1_1.00
Gunshooting level design_1_1.00
Ray Park
 

Similar to 브릿지 Unity3D 기초 스터디 5회 (6)

Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdfCase Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
Case Studies - The Role of Computer Graphics (CG) in Movie Post-production.pdf
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
 
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
 
유니티로 flappy brid 만들기(Unity 5.1)
유니티로 flappy brid 만들기(Unity 5.1)유니티로 flappy brid 만들기(Unity 5.1)
유니티로 flappy brid 만들기(Unity 5.1)
 
SVVR아카데미 3월 교육과정 소개
SVVR아카데미 3월 교육과정 소개SVVR아카데미 3월 교육과정 소개
SVVR아카데미 3월 교육과정 소개
 
Gunshooting level design_1_1.00
Gunshooting level design_1_1.00Gunshooting level design_1_1.00
Gunshooting level design_1_1.00
 

브릿지 Unity3D 기초 스터디 5회

  • 2. 스터디 일정 및 커리큘럼 • 9월 12일 : 유니티 소개 및 에디터 조작법 • 9월 19일 : Sprite, Animation, Physics 기초 • 10월 10일 : Unity UI, GameManager • 10월 24일 : Animation Controller, Timer • 10월 31일 : 슈팅 게임 개발 • 11월 7일 : 2D 게임 완성(마녀이야기)
  • 3. 지난 시간 • uGUI (Sliced Image, Filled Image) • Time manager • Animation • 랜덤 위치 생성
  • 5. 필요한 클래스 • Player
 - hp, speed, 총알들
 + 총알발사, 이동, 적과 충돌 • Bullet
 - speed, damage, 발사여부
 + 발사, 리셋, 적과 충돌 • Enemy
 - hp, speed
 + 생성, 리셋 • EnemyPool
 - 적들
 + 적 생성, 관리
  • 6. 하나씩 구현해봅시다 1. 플레이어 이동 2. 총알 발사 3. 적 생성 4. 충돌 처리 5. 사운드 적용
  • 7. 플레이어 이동 void Update () { if (Input.GetKey (KeyCode.LeftArrow)) { this.transform.Translate (-speed * Time.deltaTime, 0f, 0f); } else if (Input.GetKey (KeyCode.RightArrow)) { this.transform.Translate (speed * Time.deltaTime, 0f, 0f); } }
  • 8. 플레이어 이동 • Time.deltaTime
 : 프레임 간격 • 속력에 deltaTime을 곱하는 이유?
 : 이동거리 = 속력 * 시간
  • 9. 총알 Prefab 생성 • Bullet 클래스 • float speed = 20;
 bool isFired = false;
 int damage = 5;
 public AudioClip effect; • void Fire()
 void Reset()
 void OnTriggerEnter2D(Collider2D col)
  • 10. 총알 Prefab 생성 • Box Collider2D 추가 • 트리거 적용
  • 11. Instantiate • GameObject를 동적으로 생성 • 반대개념은 Destroy
  • 12. 총알 생성 및 관리하기 Player 클래스 public GameObject bulletPrefab;
 public Bullet[] bullets;
 int bulletSize = 20;
 int curbullet = 0;
  • 13. 총알 생성 Player 클래스 void Start () {
 bullets = new Bullet[bulletSize];
 for (int i = 0; i < bulletSize; i++) {
 GameObject o = Instantiate (bulletPrefab);
 bullets[i] = o.GetComponent<Bullet> ();
 bullets [i].transform.position = new Vector3 (0f, -10f, 0f);
 }
 InvokeRepeating ("Fire", 0f, 0.1f);
 }
  • 14. 총알 발사 Player 클래스 void Fire(){
 bullets [curbullet].Fire ();
 bullets [curbullet].transform.position = 
 this.transform.position;
 
 curbullet++;
 if (curbullet == bulletSize)
 curbullet = 0;
 }
  • 15. 총알 발사 Bullet 클래스 bool isFired = false;
 float speed = 20f;
 int damage = 5; public AudioClip effect;
  • 16. 총알 발사 Bullet 클래스 void Update () {
 if (isFired) {
 this.transform.Translate (0f, speed * Time.deltaTime, 0f);
 }
 }
 
 public void Fire(){
 isFired = true;
 }
  • 17. 적 생성 EnemyPool 클래스
 : Player와 마찬가지 public GameObject enemyPrefab;
 public Enemy[] enemies;
 int enemySize = 12;
 int curEnemy = 0;
  • 18. 적 생성 EnemyPool 클래스
 : Player와 마찬가지 void Start () {
 enemies = new Enemy[enemySize];
 for (int i = 0; i < enemySize; i++) {
 GameObject o = Instantiate (enemyPrefab);
 enemies[i] = o.GetComponent<Enemy> ();
 enemies [i].transform.position = new Vector3 (0f, 10f, 0f);
 }
 InvokeRepeating ("Generate", 0f, 2f);
 }
  • 19. 적 생성 EnemyPool 클래스 void Generate(){
 int randNum = Random.Range (0, 5);
 for (int i = 0; i < 5; i++) {
 if (randNum == i)
 continue;
 
 enemies [curEnemy].transform.position = new Vector3 (-3f + i*1.5f, 6f, 0f);
 enemies [curEnemy].Create ();
 curEnemy++;
 if (curEnemy == enemySize) {
 curEnemy = 0;
 }
 }
 }
  • 20. 적 생성 Enemy 클래스 bool isCreated = false;
 float speed = 6f;
 int hp = 20;
 public AudioClip effect;
  • 21. 적 생성 Enemy 클래스 void Update () {
 if (isCreated) {
 this.transform.Translate (0f, -speed * Time.deltaTime, 0f);
 }
 }
 
 public void Create(){
 isCreated = true;
 }
  • 22. 적 생성 Enemy 클래스 public void Reset(){
 this.transform.position = new Vector3 (0f, 10f, 0f);
 isCreated = false;
 hp = 20;
 }
  • 23. 적&총알 충돌 Enemy 클래스 public void GetDamage(int damage){
 this.hp -= damage;
 if (this.hp <= 0) {
 this.Reset ();
 }
 }
  • 24. 적&총알 충돌 Bullet 클래스 void OnTriggerEnter2D(Collider2D col){
 if (col.tag == "Enemy") {
 col.gameObject.GetComponent<Enemy> ().
 GetDamage (damage);
 
 this.Reset ();
 }
 }
  • 25. 사운드 • Main Camera에 AudioSource 컴포넌트 추가
 : 배경음악 설정
 : 무한 반복 • 총알 충돌, 적 사망시
 : Camera.main.gameObject.GetComponent<AudioSource > ().PlayOneShot (effect);
  • 26. (과제)2D 게임 기획해오기 • 게임 제목
 게임 장르
 진행 방식
 인터페이스
 게임 시스템