Unity 3D C# 拾取游戏对象并在按键上播放声音



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

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

  • 当玩家靠近游戏对象(对象周围的盒子碰撞器(并按下一个键(例如"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();
}
}
}
}

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

OnTriggerEnter 仅在您输入触发时才起作用,之后您不能使用 E 键,如果您只想在此触发区域中使用此声音,那么您可以使用 OnTriggerStay 它的工作方式类似于该触发区域的更新。

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

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

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

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

最新更新