서론
- 저번에 구현했던 가구 상호작용 구현 부분을 수정한 내용입니다.
1. 기존 시스템
- 상호작용 시스템은 작동했으나 버튼을 한번만 눌러도 상호작용이 여러 번 뜨는 문제가 발생.
-> 버튼을 누를 경우 상호작용 관련 변수를 true로 설정(onInteraction = true)하는 방식으로 코드를 작성했기에 생기는 문제.
2. 수정 사항
- 상호작용 버튼을 한 번 누르면 상호작용이 한 번만 작동하도록 하고자 함.
2.1. 수정 방향
- 기존 Player 스크립트에서 InteractionController의 onInteraction변수를 변경하는 방식에서 InteractionController이 직접 플레이어의 버튼 입력을 받아 InteractiveObject의 Interaction 함수를 실행하도록 변경.
2.2. 수정 내용
소스 코드
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 변수를 제어하는 코드 삭제.