0

プレイヤーが NPC コライダーと衝突したときに「E を押して NPC と話す」というメッセージを表示しようとしています。プレイヤーが NPC と衝突していない場合、メッセージは無効になります。メッセージは衝突時に表示されますが、衝突がない場合は無効になりません。私は非常に多くのことを試しましたが、何も機能していないようです。誰でも助けることができますか?これが私のコードと私が試したいくつかのことです:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Task_7 : MonoBehaviour
{
   public GameObject PressEmsg;
   //public bool isNearNPC = true;
  // Start is called before the first frame update
  void Start()
 {
    PressEmsg.gameObject.SetActive(false);
}

// Update is called once per frame
void Update()
{
    Collider[] nearbyColliders = Physics.OverlapSphere(transform.position, 5f);

    //bool isNearNPC = false;
    //we are looping in the array hitColliders
    foreach(Collider collider in nearbyColliders)
    {
        if(collider.gameObject.tag == "NPC")
        {
            PressEmsg.gameObject.SetActive(true);
            print("NPC DETECTED");
            //isNearNPC = true;
        }

        else
        {
            PressEmsg.gameObject.SetActive(false);
            print("NPC NOT DETECTED");
        }
        /*
        else if(collider.gameObject.tag != "NPC")
        {
            PressEmsg.gameObject.SetActive(false);
            print("NPC NOT DETECTED");
        }
        */
        
    }   

    /*foreach(Collider collider1 in notnearbyColliders)
    {
        if(collider1.gameObject.tag != "NPC")
        {
            PressEmsg.gameObject.SetActive(false);
            print("NPC NOT DETECTED");
        }
    }
    */
   
    
}


}
4

2 に答える 2