• Unity 三维场景的搭建 软件构造实验报告


    实验2:仿真系统功能实现

    1.实验目的

    (1)熟悉在Unity中设置仿真场景;

    (2)熟悉在Unity中C#语言的使用;

    (3)熟悉仿真功能的实现。

    2.实验内容

    新建一个仿真场景,完成下列功能:

    (1)使用Unity的基本建模功能设置一些三维场景(自行发挥想象,进行建模设计)

    (2)实现漫游功能,可以在场景中键盘控制前后左右移动,鼠标控制旋转,完成基本的场景漫游功能。(自行设计)

    (3)使用射线,实现获取鼠标的点击功能。(自行设计)

    (4)制作内部动画,配合鼠标点击,实现播放动画。(自行设计)

    (5)设置触发器,当漫游相机进到入触发器中时,执行动画的播放。(自行设计)

    (6)添加背景音乐和鼠标点击的音效(自行设计)

    (7)添加UI按钮设计,要求可以返回主控界面。(自行设计)

    (8)打包,生成可执行文件,要求可执行文件脱离Unity环境后,能够自行运行。

    3.实验步骤

    第一步:构建三维向量

    创建一个新的场景用来构建三维场景

    接着添加地面

    接着,可以通过对象中自带的组件去改变地形

    通过组件中自带的功能 可以调整地形,构建出自己需要的地势

    接着,通过增加树木花草等,构建出基本的三维场景

    这里我使用的是另一种方法,可以去素材商城中添加一下免费的素材,可以方便搭建场景。

    第二步:实现漫游功能

    将该代码附加加需要控制的物体上,即可实现控制物体移动。

    1. using System;
    2. using System.Collections;
    3. using System.Collections.Generic;
    4. using UnityEngine;
    5. public class Component1 : MonoBehaviour
    6. {
    7. GameObject obj;
    8. public float floSpeed = 10;
    9. public float floRotate = 100;
    10. void Start()
    11. {
    12. //第三人称视角跟随
    13. Camera.main.transform.SetParent(this.transform);
    14. Camera.main.transform.localPosition = new Vector3(0, 3, -4);
    15. Camera.main.transform.localEulerAngles = new Vector3(6, 0, 0);
    16. }
    17. }
    18. void Update()
    19. {
    20. move();
    21. look();
    22. }
    23. private void look()
    24. {
    25. float y = Input.GetAxis("Mouse X") * floRotate * Time.deltaTime;
    26. transform.Rotate(transform.up, y);
    27. }
    28. private void move()
    29. {
    30. float x =Input.GetAxis("Horizontal") *floSpeed* Time.deltaTime;
    31. float z =Input.GetAxis("Vertical") *floSpeed* Time.deltaTime;
    32. transform.Translate(x, 0, z);
    33. }
    34. }

    第三步:使用射线,获得鼠标点击功能

    当点击地面时候,返回地面的坐标。

    第四步:制作内部动画,配合鼠标点击,实现播放动画

    可以通过右键--->Create创建一个Animation

    为了方便后面的动画设计,我们这里导入一个素材

     通过设置动画执行顺序 和条件,完成捡东西动画的制作

    第五步:添加背景音乐

    右键--->Audio  添加一个音乐组件

    导入音乐素材,拖入Audio组件中

    1. 通过按B去设置背景音乐的播放
    2. private void playMusic()
    3. {
    4. if (Input.GetKey(KeyCode.B))
    5. {
    6. if(ads.isPlaying)
    7. {
    8. ads.Pause();
    9. }
    10. else
    11. {
    12. ads.Play();
    13. }
    14. }
    15. }
    16. 通过ZX去调节音量大小
    17. private void changeVolume()
    18. {
    19. if (Input.GetKey(KeyCode.Z))
    20. {
    21. ads.volume--;
    22. }else if (Input.GetKey(KeyCode.X))
    23. {
    24. ads.volume++;
    25. }
    26. }

    第六步:添加UI按钮设计,要求可以返回主控界面。

    添加UI button按钮,设计一个返回按钮

    编辑代码,当点击按钮时候 跳转到登录的场景

    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using TMPro; //新版
    5. using UnityEngine.UI; //旧版GUI命名空间
    6. using System;
    7. using UnityEngine.SceneManagement;
    8. public class Component11 : MonoBehaviour
    9. {
    10. public Button button;
    11. // Start is called before the first frame update
    12. void Start()
    13. {
    14. button.onClick.AddListener(ClickButton);
    15. }
    16. // Update is called once per frame
    17. void ClickButton()
    18. {
    19. SceneManager.LoadScene(0);
    20. }
    21. }

  • 相关阅读:
    【Pytorch Lighting】第 7 章:半监督学习
    C语言:用一级指针访问二维数组的max,min
    P8869 [传智杯 #5 初赛] A-莲子的软件工程学
    cpp学习笔记:STL stack容器
    【ElasticSearch学习笔记】一、ES下载、安装、目录结构、root用户权限问题、kibana下载安装
    【指针详解】(上)看一遍就会❗❗❗家人们冲❗
    解决Web端请求响应超时HTTP状态码504和110 timed out错误(详解汇总)
    外汇天眼:什么是熊市和牛市?
    如何使用VS创建QVTKOpenGLNativeWidget应用
    敏感数据是什么?包含哪些?如何保障安全?
  • 原文地址:https://blog.csdn.net/CYwxh0125/article/details/134557164