[4Idle - Gazzlers] 손에 탄창 충전 기능 - GameScene으로 확장

Game 씬으로 확장

-테스트 씬에서 구현한 탄창 부착 기능을 Game 씬에 추가할 것이다.

Gazzlers의 탄창

- 원본의 탄창 충전은 상단의 이미지처럼 이루어진다.

- 이 포스팅에서는 이 장면을 참고해 GameScene에 지난 포스팅에서 구현한 기능을 추가하고, 연출을 다듬으려 한다.

 

 

- EnergyCell이 부착될 위치에 boxCollider를 추가해 isTrigger를 체크해주고, 태그를 ChargeArea로 한다.

-EnergyCell 오브젝트에 부착된 EnergyController에 위치값들을 할당해준다.

-ControllerDistanceGrabInteractor에 Interactor Unity Event Wrapper 컴포넌트를 추가한다.

- 컴포넌트의 interactor view에 grabInteractor를 할당한다.

- unselect 이벤트에 EnergyCellController의 OnUngrab메서드를 연결한다.

GameMain씬에 탄창 부착 기능 추가 결과

 

-GrabHand 모델의 위치를 조정해 손에 딱 붙는 것처럼 보이도록 수정하였다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnergyCellController : MonoBehaviour
{
    [SerializeField] Transform energyCellPoint;
    [SerializeField] Transform energyCellOriginalPoint;
    private bool isCharge;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }
    public void OnGrab()
    {
        Debug.Log("Grab");

    }


    public void OnUnGrab()
    {
        Debug.Log("unGrab");
        if (this.isCharge)
        {
            this.transform.SetParent(this.energyCellPoint);
            this.transform.localPosition = Vector3.zero;
            this.transform.localRotation = Quaternion.Euler(0, 0, 90);
        }
        else
        {
            this.transform.position = this.energyCellOriginalPoint.position;
            this.transform.localRotation = Quaternion.identity;

        }
    }


    private void OnTriggerStay(Collider other)
    {
        if (other.gameObject.CompareTag("ChargeArea"))
        {
            // Debug.Log("Charge Area");
            this.isCharge = true;

        }

    }

    private void OnTriggerExit(Collider other)
    {
        if (other.gameObject.CompareTag("ChargeArea"))
        {
            // Debug.Log("Exit Area");
            this.isCharge = false;

        }

    }
}
myoskin