Hunting.cs 2.83 KB
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Hunting : MonoBehaviour
{

    RaycastHit hit;
    public Camera cam;
    public Text text;
    bool staringGhost = false;
    public static bool isCaptured = false;
    public Button galleryBt;

    public static bool isInit = false;

    GameObject ghost;
    public static bool isGhostInfoSaved = false;

    void Start()
    {
        
    }


    // 레이캐스트로 오브젝트를 감지한다. (콜라이더 조절 필요)
    // 감지가 가능해지면 버튼을 클릭하여 레이캐스트 감지를 통해 태그 확인 후 오브젝트의 정보를 얻는다.
    // 오브젝트의 모든 정보를 얻었다면 소멸시키고, 퇴치 유령 목록에 추가한다.
    public void saveNewGhost() {
        Ghost newG = new Ghost();
        string gName = ghost.GetComponent<Ghost>().getName();
        int gNum = ghost.GetComponent<Ghost>().getNumber();
        string gDes = ghost.GetComponent<Ghost>().getDescription();
        Sprite gSSpr = ghost.GetComponent<Ghost>().getSubImage();

        newG.setActivatedStatus(true);
        newG.setCapturedStatus(true);

        newG.setName(gName);
        newG.setNumber(gNum);
        newG.setDescription(gDes);
        newG.setSSprite(gSSpr);
        newG.setMSprite(Screenshot.lastShot);

        GhostsPictureSave.CapturingGhost(newG);
    }

    void Update()
    {
        hitObject();
        if (staringGhost)
        {
            if (isCaptured)
            {
                //고스트라는 객체를 새로 만들어서, 해당 정보를 스테이지에서 저장하고 있는다. 
                //스테이지에서 저장된 게임 오브젝트를 Ghost라고 하자.

                saveNewGhost();

                isGhostInfoSaved = true;
                
                ghost.SetActive(false);
                galleryBt.interactable = true;
                CreateManager.isSetted = false;
                isCaptured = false;
            }
            if (isInit) {
                staringGhost = false;
                isCaptured = false;
                isGhostInfoSaved = false;
                ghost = new GameObject();


                isInit = false;
            }
        }
        
    }

    void hitObject() {

        Vector3 screenCenter = Camera.current.ViewportToScreenPoint(new Vector3(0.5f, 0.5f));
        Ray ray = cam.ScreenPointToRay(screenCenter);
        if (Physics.Raycast(ray, out hit))
        {
            //            text.text = hit.collider.gameObject.name;
            if (hit.collider.gameObject.tag == "Ghost")
            {
                text.text = "유령 포착중";
                staringGhost = true;
                if (!isGhostInfoSaved)
                {
                    ghost = hit.collider.gameObject;

                }

            }
        }
        else
        {
            text.text = "카메라에 아무것도 감지되지않았습니다";
            staringGhost = false;
        }
    }
}