【问题标题】:Unity 3D C# pick up game object and play sound on KeyPressUnity 3D C# 拾取游戏对象并在 KeyPress 上播放声音
【发布时间】:2020-09-01 21:05:12
【问题描述】:

我一直在尝试制作这款恐怖游戏,到目前为止一切进展顺利,唯一的问题是我对编程有点陌生,并且一直在互联网上查找如何制作此代码。

我似乎找不到一个教程来清楚地解释如何一步一步地做到这一点。对于脚本,我希望它的行为如下:

  • 当玩家靠近游戏对象(对象周围的盒子碰撞器)并按下一个键(例如,“E”)时,该对象将播放声音然后消失。

这是我的脚本到目前为止,我可以播放声音效果,这个脚本附加在我的场景中的拾音对象。

public class CassetteTapeOne : MonoBehaviour {

    void OnTriggerEnter(Collider other) {

        AudioSource source = GetComponent<AudioSource>();

        if (other.gameObject.tag == "Player") {

            KeyCode key = KeyCode.E;

            if (Input.GetKeyDown( key )) {

                source.Play();
            }

        }

    }

}

如果您有任何建议或想法,将不胜感激。

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    OnTriggerEnter 只在你进入触发器的那一刻起作用,之后你不能使用你的 E 键,如果你想只在这个触发器区域使用这个声音,那么你可以使用 OnTriggerStay,它就像在那个触发器区域上的更新一样工作。

    OnTriggerStay(Collider other)
    { 
    
    AudioSource source = GetComponent();
    
    if (other.gameObject.tag == "Player")
    
    {
    
    KeyCode key = KeyCode.E;
    
    if (Input.GetKeyDown( key )){
    
    source.Play();
    
    }
    
    }
    

    【讨论】:

      【解决方案2】:

      这实际上非常简单,我很想回答,您可以查找一些有关如何制作声音的编码,我认为您应该为它制作一个音频管理器脚本。让我们开始吧

      你想测量两个物体之间的距离,所以有一条线

      public GameObject objA;
      public GameObject objB;
      public bool ItemCheck;
      // Get our two objs
      float distance = Vector3.Distance(objA.transform.position, objB.transform.position);
      //get a float between these two objects which will be recorded at all times, so I would maybe use a fixed Update()
      if(distance <= 5f && Input.GetKeyDown(KeyCode.E) && ItemCheck == false)
      {
         objB.SetActive(false);
         ItemCheck = true;
         //use sound manager
      }
      

      这个脚本可以放在任何东西上,因为游戏对象是公共的,如果你打算把它放在其他东西上,我可能会使用不同的布尔值

      亲切的问候,SB

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-28
        • 1970-01-01
        相关资源
        最近更新 更多