유니티3D_5

Download Report

Transcript 유니티3D_5

모바일
게
임
제작
한국IT전문학교
박재성
게임 제작의 기초(2)
5
장
모바일
게
임
제작
5.13 슈팅 게임 만들기
- 리소스
5.13 슈팅 게임 만들기
- 3D 오브젝트 설치
Scale Factor
0.01
Generate Colliders On => 255개 이내의 Vertex로 이루어진 경우 사용가능.
5.13 슈팅 게임 만들기
- 3D 오브젝트 설치
빈오브젝트를 만들어 fighter를 안에 넣는다.
GameObject
이름
속성
값
비고
GameObject
전투기
Position x,y,z
0, 0, 0
원점
fighter
fighter
Position x,y,z
Rotation x,y,z
0, 0, 0
0, 180, 0
원점
Y축으로 180도 회전
5.13 슈팅 게임 만들기
- Spawn Poiont 설치
양쪽 날개에 만들어서 전투기안에 넣는다.
GameObject
이름
속성
값
비고
GameObject
Lpoint
Position x,y,z
-1.5, 0.2, 0.4
오른쪽
GameObject
RPoint
Position x,y,z
1.5, 0.2, 0.4
오른쪽
5.13 슈팅 게임 만들기
- 카메라 조정
위에서 비스듬하게 보이도록 조정
GameObject
MainCamera
이름
속성
Position x,y,z
Rotation x,y,z
Field of View
값
0, 27, -10
60, 0, 0
60
비고
X축으로 60도 회전
5.14 Jet 화염 Particle 만들기
- 비행기 뒤의 화염 파티클을 만든다.
빈오브젝트 JetFire를 만들고, 이 안에 Legacy Particles하위 세 개의 콤포넌트를 추
가.
완성후 전투기 안에 넣는다.
5.15 배경 화면 스크롤
- 배경화면 만들기
planeY이미지를 Scale Factor속성을 1로 설정.
GameObject
planeY
이름
Sky
속성
Position x,y,z
Scale x,y,z
Material
값
0,-2,15
110, 1, 50
sky
비고
배경에 맞게 크기조절
5.15 배경 화면 스크롤
- 배경화면 스크롤
배경에 사용한 매트리얼의 offset값을 이동하여 스크롤 효과 구현.
public class CsSky : MonoBehaviour {
float speed = 0.4f;
// 스크롤 속도
// 배경화면 스크롤
게임시작부터 지난시간
void Update ()
{
float ofs = speed * Time.time;
//y축기준으로 스크롤
transform.renderer.material.mainTextureOffset = new Vector2(0, -ofs);
}
}
5.15 배경 화면 스크롤
- Offset은 이미지를 매핑할 때 기준 위치
[ Offset (0.25, 0)으로 매핑 ]
5.16 World 좌표와 Screen 좌표
- 전투기 이동 스크립트. csFighter
int speed = 20;
// 스피드
float fw = Screen.width * 0.08f;
// 전투기의 폭
void Update ()
{
MoveFighter();
// 전투기 이동
}
void MoveFighter ()
{
float amtMove = speed * Time.smoothDeltaTime;
float key = Input.GetAxis("Horizontal");
transform.Translate(Vector3.right * amtMove * key, Space.World);
}
5.16 World 좌표와 Screen 좌표
- 전투기 이동 범위 제한
void MoveFighter ()
{
float amtMove = speed * Time.smoothDeltaTime;
float key = Input.GetAxis("Horizontal");
// 전투기의 월드 좌표를 스크린 좌표로 변환
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);
//왼쪽화살표를 누르고 비행기의 x좌표가 비행기의 폭보다 큰 경우.
//혹은 오른쪽버튼을 누르고 비행기가 화면 오른쪽에서 비행기의 폭 이상 떨어진 경
우.
if ((key < 0 && pos.x > fw) || (key > 0 && pos.x < Screen.width - fw)) {
transform.Translate(Vector3.right * amtMove * key, Space.World);
}
}
5.16 World 좌표와 Screen 좌표
- 전투기 이동시 기울이기
void MoveFighter ()
{
// 전투기 회전. Z축으로 20도
transform.eulerAngles = new Vector3(0, 0, -key * 20);
}
5.17 Normal Map 사용하기
- Normal Map은 오브젝트에 오돌토돌한 질감을 표현하는 이미지
-
Sphere로 만들고 이름을 운석으로 설정, asteroid이미지를 매핑한다.
- Asteroid매트리얼을 선택하고 shader를 Bumped Specular로 설정.
- Normal Map 이미지에 asteroid_normal을 지정.
- 운석을 Prefab으로 만든다
- 운석 프리팹에 ASEROID태그를 설정한다.
5.18 Object의 크기 및 색깔 설정
-
CsAsteroid.cs
void InitAsteroid ()
{
// 운석의 크기 설정
float sizeX = Random.Range(1.5f, 2.5f);
float sizeY = Random.Range(1.5f, 2.5f);
float sizeZ = Random.Range(1.5f, 2.5f);
transform.localScale = new Vector3(sizeX, sizeY, sizeZ);
// 운석의 Color 설정
float r = Random.Range(0.6f, 1);
transform.renderer.material.color = new Vector4(r, 0.8f, 0.8f, 1);
// 운석의 속도 및 HP 설정
speed = Random.Range(10, 20);
HP = Random.Range(0, 5);
// 운석의 회전속도 설정
rotX = Random.Range(-90, 90);
rotY = Random.Range(-90, 90);
rotZ = Random.Range(-90, 90);
// 운석의 초기 위치
float x = Random.Range(-28, 28);
float z = Random.Range(37, 45);
transform.position = new Vector3(x, 0, z);
}