Unity-粒子系统与Audio(补充)

Audio

创建Audio:

在Hierarchy页面中右击 >> Audio >> Audio Source (myAudioSouceLaser、myAudioSouceMoonLight)

创建文件加存放音频文件:

可以到安装盘:\Program Files\Microsoft Office\Office16\MEDIA中找音频

将音频拖到Inspector面板中的Audio Source组件下的AudioClip

粒子系统

在Hierarchy页面中右击 >> Effects >> Particle System (myParticleSystemFog)

脚本

挂载到飞机身上

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

public class ColisionDetectionoAndSoundControl : MonoBehaviour
{
    private RaycastHit hit;
    private Vector3 rayOrigin;
    public ParticleSystem particleSystemFog;
    public AudioSource audioSourceLaser;
    // public AudioSource audioSourceMoonLight;
    // public Canvas canvas;
    // public Job4UI job4UI_Play;
    void Start()
    {
        //初始化
        particleSystemFog.Stop();//初始时粒子系统不播放
        audioSourceLaser.Stop();//初始时音频不播放
        // audioSourceMoonLight.Stop();
    }

    // Update is called once per frame
    void Update()
    {
        //射线碰撞检测
        rayOrigin = new Vector3(transform.position.x, transform.position.y, transform.position.z - 0.61f);
        if (Physics.Raycast(rayOrigin, transform.forward * (-1), out hit, 3f)&& hit.collider.name.StartsWith("cube"))
        {
            //Debug.DrawRay(rayOrigin, transform.forward * (-3), Color.red);
            //Debug.Log(hit.collider.name);
            GameObject.Find("Flag").transform.position = new Vector3(transform.position.x, transform.position.y, hit.transform.position.z + 0.51f);
        }
        else{
            GameObject.Find("Flag").transform.position = new Vector3(0, -0.5f, 0);
        }
    }

    //碰撞器碰撞检测
    void OnCollisionEnter(Collision hit){
        if(hit.collider.name.StartsWith("cube")){
            if(!audioSourceLaser.isPlaying)
            {
                audioSourceLaser.Play();
            }
        }
    }

    void OnCollisionExit(Collision hit){
        if(hit.collider.name.StartsWith("cube")){
            audioSourceLaser.Stop();
        }
    }


    //触发器碰撞检测
    //进入触发器时
    void OnTriggerEnter(Collider hit){
        if(hit.CompareTag("Trigger59")){
            // if(!audioSourceMoonLight.isPlaying)
            // {
            //     audioSourceMoonLight.Play();
            // }
        }
    }

    //停留在触发器中时
    void OnTriggerStay(Collider hit){
        if(hit.CompareTag("Trigger59")){
            Debug.Log("Trigger59 entered, playing particle system and audio.");
            particleSystemFog.transform.position = hit.transform.position;
            particleSystemFog.transform.localScale = hit.transform.localScale;
            particleSystemFog.Play();

            // if(!audioSourceMoonLight.isPlaying)
            // {
            //     audioSourceMoonLight.Play();
            // }
        }
    }

    //离开触发器
    void OnTriggerExit(Collider hit){
        if(hit.CompareTag("Trigger59")){
            particleSystemFog.Stop();
            // audioSourceMoonLight.Stop();
        }
    }


}

### Unity 界面粒子系统的使用教程设置指南 在 Unity 中,界面粒子系统是一种强大的工具,用于创建动态和吸引人的视觉效果。以下是关于如何配置和使用 Unity 界面粒子系统的详细说明: #### 1. 创建粒子系统 要开始使用粒子系统,在场景中右键单击并选择 `Effects -> Particle System` 来创建一个新的粒子系统对象[^1]。 #### 2. 配置基本属性 通过调整 Inspector 面板中的各种属性来控制粒子的行为和外观。主要模块包括: - **Emission**: 控制粒子发射的数量和频率。 - **Shape**: 定义粒子发射的形状(如球体、立方体等)。 - **Velocity over Lifetime**: 调整粒子在其生命周期内的速度变化。 - **Size over Lifetime**: 修改粒子大小随时间的变化。 这些基础模块可以通过拖拽滑动条或者输入具体数值来进行精确设定[^1]。 #### 3. 添加音频反馈 如果希望粒子事件触发声音,则可以利用 AudioSource 组件实现这一功能。将 Audio Clip 拖放到 AudioSource 的 AudioClip 属性框内,并启用 Play On Awake 和 Looping 参数以便自动播放循环音效。 #### 4. 后期处理优化 为了增强最终渲染的画面质量,可引入 Post Processing Stack 插件进行进一步美化工作,比如增加模糊效应或是色彩校正等功能[^1]。 #### 5. 性能监控调试 当构建复杂的特效时,可能面临性能瓶颈问题。此时推荐借助第三方插件如 ParticleEffectProfiler 工具帮助开发者识别潜在效率低下之处以及提供改进建议[^3]。 #### 示例代码:碰撞检测配置 下面展示了一段简单的脚本示例,演示了如何开启水滴模拟过程中其他物体发生物理交互的功能。 ```csharp void ConfigureParticleCollision() { var collision = waterParticles.collision; collision.enabled = true; // 开启碰撞选项 collision.mode = ParticleSystemCollisionMode.Collision3D; // 设定为三维模式下的相互作用形式 collision.quality = ParticleSystemCollisionQuality.High;// 提高精度等级 collision.sendCollisionMessages = true;// 发送消息给监听器 collision.collidesWith = LayerMask.GetMask("Default");// 只允许特定层之间产生影响关系 } ``` 以上就是有关于Unity界面下操作粒子系统的入门级指导信息[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值