개발/게임 교육

[Unity class] 게임 교육 19 - 마지막 미션1

이게될까 2024. 1. 6. 17:53
728x90
728x90

여태 미션 만드는 거랑 똑같이 복제해서 붙여넣기로 시작한다.

항상 하던대로!

필요없는 것 지우고, 사진 바꿔주기!

Mission UI에서 Canvas설정을 바꿔준다.

Render Mode를 Screen Space - Cemera로 바꿔준다. 라인 랜더러는 이 설정에서만 보이기 때문!

상세 설정

했다면 이제 백그라운드 안에 Empty를 하나 만들고 이름은 Left이다

Left설정

그리고 이제 안에 이미지로 전선 색을 넣어준다.

그렇게 총 4개를 만들어 준다.

그럼 이제 반대편도 만들어 줘야 한다.

복붙 후 오른쪽 폴도만 수정하면 이렇게 된다.

드래그로 선을 늘려주는 기능을 만들어야 한다.

Red에 create Empty후 LineRenderer를 추가해준다.
use World Space 해제

우리는 출발 선 기준으로 늘릴 것 이기 때문에 월드 스페이스를 꺼준다.

이제 Material을 만들 순서이다.
Folder를 만들어 준다.

사진의 위치를 잘 봐야 한다.

이제 폴더를 만들었으면 폴더 안에 material을 하나 만들어주고, 그 것을 아까 만들었던 Red에 넣는다.

meterial칸을 잘 보면 Red가 들어가있다.
Materiasl에서 Red의 옵션

shader를 unit의 color로 바꾸고 색을 스포이드를 통해 빨간 색을 가져온다. 그 후 4개 다 해준다.

복붙을 통해 색상마다 다 만들어준다.

그럼 총 4개의 materials와 left의 선들이 생긴다.

이제 또 스크립트를 만들자!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class Mission6 : MonoBehaviour
{
    Animator anim;
    PlayerCtrl playerCtrl_script;

    Vector2 clickPos;
    LineRenderer line;

    bool isDrag;
    // Start is called before the first frame update
    void Start()
    {
        //getcomponent를 그냥 쓰면 안된다. 여기서 애니메이션은 하위 파일에 있다.
        anim = GetComponentInChildren<Animator>();
    }

    private void Update()
    {
        if (isDrag)
        {
            line.SetPosition(1,new Vector3(Input.mousePosition.x- clickPos.x, Input.mousePosition.y - clickPos.y,-10));


            // 드래그 끝
            if (Input.GetMouseButtonUp(0))
            { // 움직임이 끝났을 때 위치를 원위치해준다.
                line.SetPosition(1, new Vector3(0,0, -10));



                isDrag = false;
            }

        }
    }

    //미션 시작
    public void MissionStart()
    {
        anim.SetBool("IsUp", true);
        playerCtrl_script = FindObjectOfType<PlayerCtrl>();
        

    }

    //x버튼 누르면 호출
    public void ClickCancle()
    {
        anim.SetBool("IsUp", false);
        playerCtrl_script.MissionEnd();
    }

    //선 누르면 호출
    public void ClickLine(LineRenderer click)
    {
        clickPos = Input.mousePosition;
        line = click;

        isDrag = true;
    }


    // 미션 성공하면 호출될 함수
    public void MissionSuccess()
    {
        ClickCancle();
    }
}

이번 코드는 그저 따라오는 것만 있다.

작성했으면 이벤트 트리거 만들기!

Event Trigger설정은 저번과 같은데 잘 봐야한다.

LineLanderer가 하나 더 필요하기 때문에 자기 하위 폴더에 있는 Red를 넣어줬다.

꼭 해줘야 한다,

하나하나 다 추가해준다.

그럼 잘 작동한다!

Cancle넣는거 잊지 말기!

그런데 마우스를 잘 못따라오는 경향이 있다.

이건 배수가 잘못되었기 때문이다.

미션 UI의 Scale가 1 1 1이 아니다.

1 1 1로 맞춰주자

Scale를 새로 만든 다음에 리셋을 해준다.

이 Scale는 Mission6 안으로 넣어준다.

그다음 Mission UI를 Scale안에 집어 넣으면된다.
그래도 뭔가 안맞긴 한데 일단 ....

  일단.... 해보자...

728x90