2016-10-12 5 views
0

Unity에서 간단한 근접 공격을 만들려고하지만 코드에 문제가 있습니다. 나는이 기록 된 다음과 같습니다, 그 자체로 잘 작동Unity에서 사용자 입력이있는 OnTriggerEnter

public class meleeAttack : MonoBehaviour 
{ 

    void Start() 
    { 
    } 

    void Update() 
    { 
    } 

    void OnTriggerEnter(Collider other) 
    { 
     if (other.gameObject.tag == "Player") 
      print("What's up!!!"); 
    } 


} 

그러나, 나는 플레이어가 키를 누를 때 그렇게 메시지는 팝업 만들고 싶어. 나는하여 OnTriggerEnter 방법으로 다음과 같은 추가 시도 :

void OnTriggerEnter(Collider other) 
    { 
     if (other.gameObject.tag == "Player" && Input.GetKeyUp(KeyCode.F)) 
      print("What's up!!!"); 
    } 

문제는 내가 F 키를 눌러있어 경우에도 이제 메시지가 더 이상 표시되지 것입니다. 플레이어가 F 키를 누르고 gameObject와 접촉 할 때만 메시지를 호출하기 위해이 코드를 통합 할 수있는 방법이 있습니까?

답변

1

업데이트 루프에서 GetKeyUp을 수행하고 OnTriggerEnter에서 검사 할 부울 플래그를 설정해야합니다.

또는 귀하의 타이밍 요구 사항에 따라 (즉, 부울 플래그를 OnTriggerEnter에 설정하고 업데이트 루프 내에서 확인하십시오). [당신의 설명에 따라 이런 식으로 할 수 있습니다]

문제는 OnTriggerEnter가 한 번만 실행되므로 키 상태의 변경 사항에 대해 키보드를 폴링하지 않기 때문에 업데이트 루프에서 확인하십시오.

0

onTriggerEnter 대신 OnTrigggerStay을 사용할 수 있으며 Update 이벤트에서 spoolical bool을 피할 수 있습니다.

OnTriggerStay이

뭔가 같이 트리거를 터치 할 때마다 Collider의 다른 거의 모든 프레임이라고합니다, 당신은

void OnTriggerEnter(Collider other) 
    { 
     if (other.gameObject.tag == "Player" && Input.GetKeyUp(KeyCode.F)) 
      print("What's up!!!"); 
    } 
필요
관련 문제