코딩테스트 준비를 하는데, 자꾸 쉽게 생각하지 못한다.
자료구조나 알고리즘을 먼저 학습한 뒤, 연습해야겠다.
Unity 2, 3주차 시작!
구현 도중 AnimationEvent has no function name specified! 오류가 생겼다.
해당 애니메이션을 클릭하면, Animation Event를 설정하는 칸이 있다.
애니메이션 이벤트를 제거!
Console에 더 이상 해당 에러가 표시되지 않는다.
gameManager에 새로운 오브젝트 및 오브젝트의 기능을 부여했으면,
Hierarchy에서 꼭 오브젝트를 gameManager에 부여해주자!
오브젝트의 컴포넌트 설정 시, 낙하(중력 구현)는 Rigidbody, 충돌은 Collider!
spirte 버튼은 작동하지 않음!
UI-Images를 통해 버튼을 생성하자.
void Update()
{
Vector3 mousePos = Camera.main.ScreenToWorldPoint( Input.mousePosition );
float x = mousePos.x;
if (x>8.5f) // x좌표를 -8.5f~8.5f로 고정.(fishshop을 벗어나지 않음.)
{
x = 8.5f;
}
else if(x<-8.5f)
{
x = -8.5f;
}
transform.position = new Vector3(x, transform.position.y, 0); // dog는 마우스 포인트를 이용해 x축에서만 움직임!
}
}
UI Canvas Render Mode 가 전체로 적용.
0.5-> 중앙에서 시작, 양쪽으로 늘어남
0 -> 좌 시작, scale 조정 시 우측으로 늘어남.
kinematic은 중력의 반대로, 오브젝트가 올라간다!
단점은 collider가 서로 만났을 때, 충돌을 감지하지 못할때 있음
-> Collider - Is Trigger check✔✔
level 에 확률을 부여,
level이 낮은 경우, 난수를 생성해
숫자가 난수보다 낮으면 적 오브젝트 하나 더 생성
level이 높아질 수록, 난수를 생성하는 조건이 높아져
더 많은 적 생성!
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);
}
}
레벨 1
레벨 7
Unity에는 같은 스크립트를 사용하지만
조건이 달라야할 경우 Type을 이용해 조건에 맞게 설정할 수 있다.
NormalCat
FatCat
2주차, 네모 화면 밖으로 나가면 없애기.
-> 하는 이유는 화면 밖으로 나간 square들이 계속해서 쌓이면 정말 오래했을 때,
메모리 사용량이 커져 시스템에 부담이가 오류가 생길 수 있다.
square.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class square : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
float x = Random.Range(-3.0f, 3.0f);
float y = Random.Range(3.0f, 5.0f);
transform.position = new Vector3(x, y, 0);
float size = Random.Range(0.5f, 1.5f);
transform.localScale = new Vector3(size, size, 1);
}
// Update is called once per frame
void Update()
{
if (transform.position.y< - 5.0f) // 만약 y가 -5.0f보다 작으면
{
Destroy(gameObject); // 오브젝트 삭제.
}
}
void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.tag == "balloon")
{
gameManager.I.gameOver();
}
}
}
하루에 16강 제한이 있어서
내일로,,
이전에 배웠던 것을 한번 더 복습하며,
새로운 것을 알려주셔서 좋았다.
하지만 갈수록 문법이 복잡해지고, 구문 개수가 많아지는 걸 보면,
처음 배우는 사람은 정말 기초부터 해야할 듯 하다!
복붙하면 해결되지만, 그러면 실력이 늘지 않으니,,
나도 초보를 벗어나려고 노력해야지.
게임을 꼭 직접 플레이하면서, 모든 경우의 수를 다 경험하고, 버그를 잡자!