3주차 숙제를 완료하기!
4, 5주차 강의 수강!
카드 뒤집기 게임 제작!
게임을 승리하는 조건을 가진 로직을 제작한다.
카드 뒤집기 게임 +
Main Camera - Size 조절
Image - Pixels Per Unit 조절
Pixels Per Unit 클 수록, 화면에는 작게 표현!
Pixels Per Unit 작을수록, 화면에 크게 표현!
World Space 설정 시, UI 레벨을 GameObject와 레벨 동일화
화면의 이미지는
Width X Scale x
Height X Scale y
조절 가능!
gameManager.cs
public Text timeTxt;
float time;
void Update()
{
time += Time.deltaTime;
timeTxt.text = time.ToString("N2");
}
}
gameManager.cs
GameObject newCard = Instantiate(card); //Instantiate 된 card를 수정할 수 있게 오브젝트화
//newCard를 cards로 이동.
newCard.transform.parent = GameObject.Find("cards").transform;
1.4f는 생성 위치
i = 1~16
x는 i/4,
(0,1,2,3), (0+4,1+4,2+4,3+4), (0+8,1+8,2+8,3+8) (0+12,1+12,2+12,3+12)
y는 i%4
1,2,3,4
gameManager.csnewCard.transform.position = new Vector3((i%4) * 1.4f , (i/4) * 1.4f , 0);
gamaManager.cs
int[] rtans = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
rtans = rtans.OrderBy(item => Random.Range(-1.0f, 1.0f)).ToArray();
//item을 랜덤한 순서로 정렬.
Images폴더가 아닌,
Resources 폴더를 생성한 뒤
이미지 or 파일을 코드로 지정해 작업.
//rtanName은 rtan에 i추가,
string rtanName = "rtan" + rtans[i].ToString();
//newCard의 front에서 sprite 이미지를 rtanName으로 변경
newCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>(rtanName);
게임 시작 전, 로고를 삽입할 수 있다!
Edit -> Projects Settings -> Player -> Splash Image
Tight - 여백 다 날림.
로고는 보통 Full Rect!
clip은 mp3파일,
source는 오디오를 사용하는 오브젝트
public AudioClip bgmusic;
public AudioSource audioSource;
void Start()
{
//계속 음악 실행
audioSource.clip = bgmusic;
audioSource.Play();
}
Edit -> Project Settings -> Player -> Android settings -> Resolution and Presentation -> LandScape Right, Left 체크 해제!
void Update()
{
if (energy < full)
{
if(type == 0)
{
transform.position += new Vector3(0.0f, -0.05f, 0.0f);
}
else if(type == 1)
{
transform.position += new Vector3(0.0f, -0.03f, 0.0f);
}
else if(type == 2)
{
transform.position += new Vector3(0.0f, -0.1f, 0.0f);
}
public GameObject pirateCat;
void makeCat()
{
Instantiate(normalCat);
if (level == 1)
{
float p = Random.Range(0, 10);
if (p < 2) Instantiate(normalCat);
}
else if (level == 2)
{
float p = Random.Range(0, 10);
if (p < 5) Instantiate(normalCat);
}
else if (level == 3)
{
float p = Random.Range(0, 10);
if(p < 6) Instantiate(normalCat);
Instantiate(fatCat);
}
else if (level >= 4)
{
float p = Random.Range(0, 10);
if (p < 5) Instantiate(normalCat);
Instantiate(fatCat);
Instantiate(pirateCat);
}
}
30초가 지나면, 게임을 끝내는 과제다.
gameManager.cs
void Update()
{
time += Time.deltaTime;
timeTxt.text = time.ToString("N2");
if(time > 30.0f)
{
endTxt.SetActive(true);
Time.timeScale = 0.0f;
}
}