728x90
728x90
쓰레기 버리기 미션이다.
시야에 방해가 된다면
미션 1 옆에 체크 표시를 풀면 모습이 보이지 않는다.
그러나 나중에 실행할 때 꼭 풀어서 실행해야 오류가 발생하지 않는다.(애니메이션을 통해 밑으로 내려가 있는 것이라 생성할 코드를 만들지 않았음)
미션 1을 control + D를 눌러 복제한후 아래와 같이 미션 2를 만들어준다.
필요없는 버튼은 다 삭제! 스크립트도 삭제한다.
이제 다시 이미지 만들기
이제 쓰레기가 저 핸들을 내리기 전 까지 나가지 못하도록 콜라이드 설정을 배경에서 해줘야 한다.
교수님 호출로 나중에 다시... 2:14
박스 콜라이드를 통해 양쪽 벽을 만든다. 바닥은 BackGround에서 만들지 않고 새로운 곳에서 만들겠다.(레버를 내리면 바닥도 사라져야 하므로)
이제 이 안에 쓰레기를 넣는다. UI의 image로 넣는다.
다들 콜라이드와 리지드바디를 추가해줬고, 이제 쓰레기 별로 콜라이드를 조절해야 한다.
이 쓰레기들도 캐릭터와 같이 스폰하기 위해 리소스 칸에 넣을 것이다. 쓰레기가 여러개이므로 폴더를 준비한다.
그리고 mission 1 스크립트에 control D를 눌러서 복제후 스크립트에 들어가서 클래스 명을 바꿔준다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Mission2 : MonoBehaviour
{
public Transform trash;
Animator anim;
PlayerCtrl playerCtrl_script;
// Start is called before the first frame update
void Start()
{
//getcomponent를 그냥 쓰면 안된다. 여기서 애니메이션은 하위 파일에 있다.
anim = GetComponentInChildren<Animator>();
}
//미션 시작
public void MissionStart()
{
anim.SetBool("IsUp", true);
playerCtrl_script = FindObjectOfType<PlayerCtrl>();
// 초기화
for(int i = 0; i < trash.childCount; i++)
{ // 생성된 쓰레기 만큼
Destroy(trash.GetChild(i).gameObject);
}
// 쓰레기 스폰
for(int i = 0; i < 10; i++)
{
// 사과
GameObject trash4 =Instantiate(Resources.Load("Trash/Trash 4"),trash)as GameObject;
trash4.GetComponent<RectTransform>().anchoredPosition = new Vector2(Random.Range(-180, 180), Random.Range(-180, 180)); // 위치 랜덤 지정
trash4.GetComponent<RectTransform>().eulerAngles = new Vector3(0,0, Random.Range(0, 180)); // 각도 랜덤 지정
// 캔
GameObject trash5 = Instantiate(Resources.Load("Trash/Trash 5"), trash) as GameObject;
trash5.GetComponent<RectTransform>().anchoredPosition = new Vector2(Random.Range(-180, 180), Random.Range(-180, 180)); // 위치 랜덤 지정
trash5.GetComponent<RectTransform>().eulerAngles = new Vector3(0, 0, Random.Range(0, 180)); // 각도 랜덤 지정
}
for(int i = 0; i < 3; i++)
{
// 병
GameObject trash1 =Instantiate(Resources.Load("Trash/Trash 1"),trash)as GameObject;
trash1.GetComponent<RectTransform>().anchoredPosition = new Vector2(Random.Range(-180, 180), Random.Range(-180, 180)); // 위치 랜덤 지정
trash1.GetComponent<RectTransform>().eulerAngles = new Vector3(0,0, Random.Range(0, 180)); // 각도 랜덤 지정
// 생선
GameObject trash2 = Instantiate(Resources.Load("Trash/Trash 2"), trash) as GameObject;
trash2.GetComponent<RectTransform>().anchoredPosition = new Vector2(Random.Range(-180, 180), Random.Range(-180, 180)); // 위치 랜덤 지정
trash2.GetComponent<RectTransform>().eulerAngles = new Vector3(0, 0, Random.Range(0, 180)); // 각도 랜덤 지정
//비닐
GameObject trash3 = Instantiate(Resources.Load("Trash/Trash 3"), trash) as GameObject;
trash3.GetComponent<RectTransform>().anchoredPosition = new Vector2(Random.Range(-180, 180), Random.Range(-180, 180)); // 위치 랜덤 지정
trash3.GetComponent<RectTransform>().eulerAngles = new Vector3(0, 0, Random.Range(0, 180)); // 각도 랜덤 지정
}
}
//x버튼 누르면 호출
public void ClickCancle()
{
anim.SetBool("IsUp", false);
playerCtrl_script.MissionEnd();
}
// 미션 성공하면 호출될 함수
public void MissionSuccess()
{
ClickCancle();
}
}
미션 2 script 본문 내용이다. 크게 어려운 내용은 없지만 까먹으면 안되는 것들이다.
이제 이 스크립트를 미션 2에 넣어줘야 한다.
그리고 캔슬 버튼, 트레쉬 등 스크립트에서 사용했던 퍼블릭들은 다 넣어줘야 한다.
완성!
728x90
'개발 > 게임 교육' 카테고리의 다른 글
[Unity] 게임 교육 15.5 - 쓰레기 버리기 오류 발생! (0) | 2024.01.05 |
---|---|
[Unity] 게임 교육 15 - 쓰레기 버리기 버튼 만들기 (0) | 2024.01.05 |
[Unity] 게임 교육 13 - 첫 번째 미션 만들기 (0) | 2024.01.02 |
[unity]게임 교육 12 - 미션 애니메이션 제작 (48) | 2024.01.02 |
게임 교육 11 - 미션 준비 (1) | 2023.12.29 |