이 자료는 지난 2013년 Unite Korea의 지국환씨의 Flappy bird 만들기 튜토리얼을 바탕으로 만든 2014년 창원시 스마트 모바일 앱 지원센터의 "게임 및 웹 앱 개발과정"에서 진행한 세미나 자료입니다.
유니티 버전 4.3에서 작성되었습니다.
이 자료의 튜토리얼을 바탕으로 하나하나 제작해가며 Flappy Bird를 만드는 기쁨을 누리시기 바랍니다.
관련 이미지와 소스는 아래 블로그에 있습니다.
http://ivis.cwnu.ac.kr/tc/dongupak/245
이 자료는 2013년 11월 스마트 앱 개발자 포럼 세미나 발표자료 입니다.
애플사에서 iOS 7용 API로 추가한 Sprite Kit은 주로 게임 개발을 위하여 사용되는 스프라이트 API로 단순한 코딩으로 애니메이션을 쉽게 구현할 수 있습니다.
단 iOS에서 주로 사용되는 UIView 객체에는 적용할 수 없습니다. UIView 객체란 iOS의 UIImage, UIButton 등과 같은 기본 UI 객체입니다. Sprite Kit을 사용하게 되면 파티클 효과, 물리 효과, 스프라이트의 애니메이션 효과를 매우 쉽게 구현할 수 있습니다.
이 자료는 Sprite Kit의 특징과 간단한 샘플 코드를 통해 Sprite Kit을 이해할 수 있도록 하였습니다.
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰승민 백
NDC 2016 발표 자료입니다
아래는 공개된 세션의 소개입니다
------------------------------------------------------------
게임을 개발하다 보면 액션, RPG를 비롯한 많은 장르에서 캐릭터의 스킬을 만들어야 하는 때가 옵니다.
다양한 스킬의 기획을 제한하지 않으면서도, 빠르게 개발한다는 두 가지 목표를 달성하기 위해서는 어떻게 개발해야 하는지 고민하고 프로젝트에 적용한 결과를 공유하는 세션입니다.
다음과 같은 세 가지 개발 방법을 보여드리고, 각각의 장단점을 비교하는 형태로 진행됩니다.
1. 고전적인 하드 코딩 방식
2. 한 달에 하나씩의 캐릭터 업데이트를 단행했던 <최강의>에서 사용했던 스킬 툴 방식 (온라인 액션RPG, 언리얼3 기반)
3. 현재 개발 중인 모바일 프로젝트 <건파이트>에서 시도하고 있는 언리얼4 블루프린트 기반 방식
이 자료는 지난 2013년 Unite Korea의 지국환씨의 Flappy bird 만들기 튜토리얼을 바탕으로 만든 2014년 창원시 스마트 모바일 앱 지원센터의 "게임 및 웹 앱 개발과정"에서 진행한 세미나 자료입니다.
유니티 버전 4.3에서 작성되었습니다.
이 자료의 튜토리얼을 바탕으로 하나하나 제작해가며 Flappy Bird를 만드는 기쁨을 누리시기 바랍니다.
관련 이미지와 소스는 아래 블로그에 있습니다.
http://ivis.cwnu.ac.kr/tc/dongupak/245
이 자료는 2013년 11월 스마트 앱 개발자 포럼 세미나 발표자료 입니다.
애플사에서 iOS 7용 API로 추가한 Sprite Kit은 주로 게임 개발을 위하여 사용되는 스프라이트 API로 단순한 코딩으로 애니메이션을 쉽게 구현할 수 있습니다.
단 iOS에서 주로 사용되는 UIView 객체에는 적용할 수 없습니다. UIView 객체란 iOS의 UIImage, UIButton 등과 같은 기본 UI 객체입니다. Sprite Kit을 사용하게 되면 파티클 효과, 물리 효과, 스프라이트의 애니메이션 효과를 매우 쉽게 구현할 수 있습니다.
이 자료는 Sprite Kit의 특징과 간단한 샘플 코드를 통해 Sprite Kit을 이해할 수 있도록 하였습니다.
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰승민 백
NDC 2016 발표 자료입니다
아래는 공개된 세션의 소개입니다
------------------------------------------------------------
게임을 개발하다 보면 액션, RPG를 비롯한 많은 장르에서 캐릭터의 스킬을 만들어야 하는 때가 옵니다.
다양한 스킬의 기획을 제한하지 않으면서도, 빠르게 개발한다는 두 가지 목표를 달성하기 위해서는 어떻게 개발해야 하는지 고민하고 프로젝트에 적용한 결과를 공유하는 세션입니다.
다음과 같은 세 가지 개발 방법을 보여드리고, 각각의 장단점을 비교하는 형태로 진행됩니다.
1. 고전적인 하드 코딩 방식
2. 한 달에 하나씩의 캐릭터 업데이트를 단행했던 <최강의>에서 사용했던 스킬 툴 방식 (온라인 액션RPG, 언리얼3 기반)
3. 현재 개발 중인 모바일 프로젝트 <건파이트>에서 시도하고 있는 언리얼4 블루프린트 기반 방식
스마트벤처 창업학교(대구)에서 스타트업 창업자분들을 대상으로 발표한 유니티 개발 자료입니다.
새로운 내용은 아니고..
기존에 발표 했던 유니티 관련 자료들을 하나로 모은, 총합편입니다.
ps. Unity 2D 소개와 PlayMaker 소개에는 동영상이 포함되어 있는데, 아마 슬라이드셰어에서 재생은 되지 않을듯 합니다. 다운로드 받으시면, 동영상도 보실수 있습니다.
1. 유니티 소개
2. 개발과 출시, 경험에 대한 이야기 (서형석)
3. Unity 2D 살펴 보기
4. 유니티가 당신에게 알려주지 않는 진실 (이득우) - 링크
5. 유니티와 PlayMaker를 이용한 쉽고 빠른 게임 개발
유니티 5.1버전에서 플래피 버드만들기 튜토리얼 자료입니다.
아래의 제 자료는 4.3 버전 소스이며 유니티 버전 업그레이드로 인해 소스코드가 다소 수정되었습니다.
하나하나 따라하면서 플래피 버드 게임을 만들 수 있습니다.
http://ivis.cwnu.ac.kr/tc/dongupak/263
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
• 랜덤 위치 생성
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);