如何碰撞物体播放声音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的速度减为原来速度的一半



      }

    }




}