如何碰撞物体播放声音7
需要使用unity3d做个游戏场景,里面物体在碰撞的时候需要播放对应的声音效果,这种情况首先我们需要给物体添加对应的音效属性, 然后在脚本中判断是否被对应的物体碰撞到, 如果是就播放声音。
工具/原料
unity3d 5.3工具。
方法/步骤
在unity3d场景中创建两个物体,一个立方体一个圆柱体。
在圆柱体上添加Audio Source。
把音乐文件拖放到 AudioClip 中,取消勾选 Play On Awake,还有一些声音的大小等可以自己配置。
在脚本中创建一个 audio变量,并在start方法中初始化。
audio = GetComponent<audiosource> ();</audiosource>
unity3d如何碰撞物体播放声音
然后添加一个 OnCllisionEnter 方法,在里面判断是否碰撞到立方体Cube,是的话就播放声音。
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == "Cube") {
audio.Play ();
}
}
接着给立方体添加移动的脚本,让立方体在运行的时候可以移动。
现在我们运行场景,移动立方体时碰撞到圆柱体就会播放音乐,并在终端打印出播放声音。
unity3d如何碰撞物体播放声音
using System.Collections; using System.Collections.Generic; using UnityEngine; public class roadblock : MonoBehaviour { public float speed ; // Start is called before the first frame update void Start() { //把Panel2隐藏 GameObject canvas = GameObject.Find("Canvas2"); //找到Canvas2 //canvas.transform.Find("Panel2")通过Canvas2找到Panel2 canvas.transform.Find("Panel2").gameObject.SetActive(false); } private void OnTriggerEnter(Collider other) { //控制台测试 触发成功 Debug.Log(other.name + "触碰到我了"); // 如果是Player碰撞到roadblock if (other.name == "Player") { //触碰到后,游戏停止(让时间的流逝尺度变为0,不再进行时间的流逝) //为了避免其他物体触碰到roadblock也会停止游戏,我们加一个Player对象条件 //只有Player碰到roadblock才会停止 // Time.timeScale = 0; //错碰到后,roadblock播放减血条音效,得减 100 GetComponent<AudioSource>().Play(); // //Player触碰到roadblock时候,显示Panel2 // //找到Canvas2 // GameObject canvas = GameObject.Find("Canvas2"); // //canvas.transform.Find("Panel")通过Canvas2找到Panel2,并显示Panel2(gameObject.SetActive(true)) // canvas.transform.Find("Panel2").gameObject.SetActive(true); //Player触碰到roadblock时候,play的速度减为原来速度的一半 } } }