【Unity开发】随手记:声音,天空盒技术

63 阅读2分钟

【Unity开发】随手记:声音,天空盒技术

写在前面

本系列为笔者实在是不想写作业,来通过写博客勉励自己一下。参考教程为《Unity 3D游戏开发》(中国工信出版集团),大部分代码和注释来源于这个博主,姐妹万岁哈哈哈哈🤣。
文章中只放代码(随缘附少量基础讲解和效果),项目操作可以自行百度or留言,防止太长一篇1~3个案例,案例来源于哈工大(威海)王峥老师布置的作业。

播放声音

使用附件中所给的声音素材完成下列功能:程序运行时在屏幕的左上角出现一个按钮,同时播放pla.mp3声音,当用鼠标点击按钮时,播放mp5.mp3的声音

  • 按钮:使用Canvas下的Button即可
  • 播放声音:添加Audio Source,在右侧面板设置背景音乐即可
    在这里插入图片描述
  • 点击播放:在按钮单击时调用MainCamera上挂载的脚本文件中的pressbofang()函数,MainCamera上挂载的音乐就是要播放的:
    在这里插入图片描述
    该函数体如下所示:
public class AudioSettings : MonoBehaviour
{
    AudioSource musics;
    void Start()
    {
        musics = this.GetComponent<AudioSource>();
    }
    public void pressbofang()
    {
        if (!musics.isPlaying)
        {
            musics.Play();
        }
    }
}

天空盒

使用素材构建冰川天空盒,并编程实现使用鼠标拖动摄像机旋转观察整个场景

  • 天空盒:创建材质,设置为6面天空盒,分别赋予背景图
    在这里插入图片描述
  • 为Main Camera挂载天空盒组件和脚本组件:
    在这里插入图片描述
    脚本组件用于让天空盒视野跟随鼠标,获取鼠标移动,并且通过Time.deltaTime来缩放帧的大小以保证相等:
public class NewBehaviourScript : MonoBehaviour

{
    private void Update()
    {   // 获取鼠标横向移动,让Unity中摄像机绕Y轴转动      
        float x = Input.GetAxis("Mouse X");
        // 获取鼠标纵向移动,让Unity中摄像机绕X轴转动
        float y = Input.GetAxis("Mouse Y");

        //需要限制沿X轴旋转角度
        if (x != 0 || y != 0)
            RotateView(x, y);
    }

    public float speed = 10;
    private void RotateView(float x, float y)
    {
        x *= speed * Time.deltaTime; //鼠标横向移动变化值
        //Unity中摄像机随着x的变化绕Y轴转动
        transform.Rotate(0, x, 0); 

        y *= speed * Time.deltaTime;//鼠标纵向移动变化值
        // Unity中摄像机随着y的变化绕X轴转动
        transform.Rotate(-y, 0, 0);

    }
}