게임 리팩토링 - 가구 상호작용 수정

찡완이·2023년 10월 5일
0

서론

  • 저번에 구현했던 가구 상호작용 구현 부분을 수정한 내용입니다.

1. 기존 시스템

  • 상호작용 시스템은 작동했으나 버튼을 한번만 눌러도 상호작용이 여러 번 뜨는 문제가 발생.
    -> 버튼을 누를 경우 상호작용 관련 변수를 true로 설정(onInteraction = true)하는 방식으로 코드를 작성했기에 생기는 문제.

2. 수정 사항

  • 상호작용 버튼을 한 번 누르면 상호작용이 한 번만 작동하도록 하고자 함.

2.1. 수정 방향

  • 기존 Player 스크립트에서 InteractionController의 onInteraction변수를 변경하는 방식에서 InteractionController이 직접 플레이어의 버튼 입력을 받아 InteractiveObject의 Interaction 함수를 실행하도록 변경.

2.2. 수정 내용

소스 코드

  • InteractionController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteractionController : MonoBehaviour
{
    [SerializeField]GameObject InteractableObj = null;

    private void Update()
    {
        /* 상호작용 키 입력받는 코드 , 변경 사항*/
        if (Input.GetKeyDown(KeyCode.Space) && InteractableObj) 
            InteractableObj.GetComponent<InteractiveObject>().Interaction();
    }
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Interactable") && !InteractableObj)
            InteractableObj = other.gameObject;
    }

    private void OnTriggerExit2D(Collider2D other)
    {
        if (InteractableObj && other.CompareTag(InteractableObj.tag))
            InteractableObj = null;
    }
}
  • Player.cs
    -> 스페이스를 누르면 InteractionController의 onInteraction 변수를 제어하는 코드 삭제.
profile
코딩공부합니다

0개의 댓글