일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 주기억장치
- const화
- c언어 괄호검사
- const l-value참조자
- 문제해결 단계
- 논리 연산
- 네트워크 결합
- r-value참조자
- 회전 및 자리 이동 연산
- 괄호 검사 프로그램
- 값/참조/주소에 의한 전달
- getline()함수
- 알고리즘 조건
- 운영체제 기능
- auto 키워드
- C언어 덱
- string유형
- C언어 스택 연산
- 프로그래머스 배열만들기4
- 입출력 관리자
- 유형 변환
- LAN의 분류
- 프로그래머스 푸드 파이트 대회
- l-value참조자
- 문자형 배열
- C언어 계산기 프로그램
- 원형 연결 구조 연결된 큐
- 범위 기반 for문
- IPv4 주소체계
- 백준 파이썬
- Today
- Total
chyam
[unity] - 물리 퍼즐게임 만들기-2 ( 수박게임 ) 본문
게임 매니저를 만들어준다.
--GameManager 스크립트 --
public Dongle lastDongle;
public GameObject donglePrefab;
public Transform dongleGroup;
private void Awake()
{
Application.targetFrameRate = 60;
}
최근 공을 Dongle에 저장한다.
공을 프리펩으로 만들어서 넣는다.
공의 y축을 고정시키기 위해서 위치를 불러온다.
공들은 donglegroup으로 묶어서 관리한다.
targetFrameRate는 프레임을 뒤의 숫자로 고정?시켜준다.
private void Start()
{
NextDongle();
}
Dongle GetDongle()
{
GameObject instant = Instantiate(donglePrefab, dongleGroup);//클론 생성 .. 뒤에는 부모.
Dongle instantDongle = instant.GetComponent<Dongle>();
return instantDongle;
}
void NextDongle()
{
Dongle newDongle = GetDongle();
lastDongle = newDongle;
lastDongle.level = Random.Range(0, 8);
lastDongle.gameObject.SetActive(true);
StartCoroutine("WaitNext");
}
IEnumerator WaitNext()
{
while (lastDongle !=null)
{
yield return null;
}
yield return new WaitForSeconds(2.5f);
NextDongle();
}
GetDongle에서 Instantiate는 오브젝트를 새로 생성해주는 함수이다. 뒤를 부모로하여 자식오브젝트로 생성하게 해준다.
instantDongle으로 instant값을 저장하고 반환한다.
NextDongle에서 newDongle값을 GetDongle로 생성한다.
lastDongle을 새로운 동글 값을 넣어주고 동글 레벨을 0에서 7로 랜덤으로 나오게 한다.
이런식으로 레벨들을 설정해주어 level의 값에 따라 크기와 그림이 다른 동글에 접근하도록 한다.
처음엔 크키를 다 0으로 하고 0.2초부분에 크기를 키워준다.
중요한점은 동글 프리펩의 값들을 다 초기화해줘야한다는것이다.
위치같은것들이나 크기가 프리펩의 값에서 추가로 더해져서 0으로 해줘야한다.
비활성화도 해주어 스크립트상에서 나타나도록 해준다.
StartCoroutine으로 열거형을 실행해준다.
Coroutine은 로직 제어를 유니티에게 맡기는 함수이다.
WaitForSeconds는 시간단위로 기다리는 타입이다.
열거형은 IEnumerator인데, yield return이 꼭 필요하다.
yield없이 while을 돌리게 되면 무한루프에 빠지게 된다.
lastDongle에 값이 있으면 null로 초기화하고, 2.5초 뒤에 다시 생성되도록 한다.
전에 드래그&드롭을 Dongle스크립트에서 해줬었는데, GameManager스크립트로 옮기게 되면,
public void TouchDown()
{
if (lastDongle == null)
return;
lastDongle.Drag();
}
public void TouchUp()
{
if (lastDongle == null)
return;
lastDongle.Drop();
lastDongle = null;
}
lastDongle이 null이 아닐때 실행되도록 해주고, Drop시에는 lastDongle이 null이 되도록한다.
--Dongle 스크립트--
public int level;
Animator anim;
private void Awake()
{
rigid = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
private void OnEnable()
{
anim.SetInteger("Level", level);
}
level과 애니메이션을 추가해주었다.
OnEnable함수는 스크립트가 활성화 될때 실행되는 이벤트 함수이다.
레벨에 맞게 애니메이션을 실행한다.
맨 아래에 Interpolate에서 오른쪽도 같게 해준다.
이것은 이전 프레임을 비교하여 움직임을 부드럽게 보정하는것이다.
'unity' 카테고리의 다른 글
[unity] - 물리 퍼즐 게임 4 ( 수박 게임 ) (0) | 2024.08.18 |
---|---|
[unity] - 물리 퍼즐 게임 3 ( 수박 게임 ) (0) | 2024.08.15 |
[unity] - 물리 퍼즐게임 만들기 ( 수박게임 ) (0) | 2024.08.13 |
[unity]- 기초 입력 함수, 목표지점 이동,deltaTime (0) | 2024.07.09 |
[unity]- 2d 탑다운 [ 설정 창 ] (0) | 2024.07.05 |